2010-11-05 26 views
3

J'ai commencé à apprendre l'assemblage. Je suis tombé sur ces lignes.Explication du code d'assemblage

;*************************************************; 
; OEM Parameter block/BIOS Parameter Block 
;*************************************************; 

TIMES 0Bh-$+start DB 0 

bpbBytesPerSector:  DW 512 
bpbSectorsPerCluster: DB 1 
bpbReservedSectors:  DW 1 

Je suis confus sur la première ligne de la déclaration "bpbBytesPerSector: DW 512". Ici, je pense que DW est un mot défini. Donc DW 512 signifie définir 512 mots signifie 1024 octets. Maintenant, l'étiquette est "bpbBytesPerSector". Les octets par secteur devraient être de 512 (c'est ce que je pense). De même, je ne peux pas comprendre les deux lignes suivantes. Je suis totalement confus à ce sujet. Quelqu'un peut-il m'expliquer? Merci d'avance.

Répondre

6

Non, dw moyens définissent le seul mot 512. Cela signifie allouer l'espace pour un mot ici et définir la valeur à 512.

Cela crée un bloc de paramètres BIOS (BPB) et le casser bas:

0000       TIMES 0Bh-$+start DB 0  ; allocate 11 zero bytes. 
000B bpbBytesPerSector:  DW 512      ; define one word 512 
000D bpbSectorsPerCluster: DB 1      ; define one byte 1 
000E bpbReservedSectors: DW 1      ; define one word 1 
0010 
+0

Merci. J'ai compris. – narayanpatra

0

Comme @paxdiablo déjà souligné, le nombre est juste la valeur pour le mot. Lorsque/si vous souhaitez définir un tableau de 512 mots que vous décrivez, vous utiliseriez quelque chose comme:

myarray dw 512 dup(?) 

Ici, le 512 est le nombre de répétitions et la ? est la valeur à mettre dans chaque ("?" signifie "laissez-le non initialisé", mais vous pouvez spécifier une valeur si vous préférez).