2010-11-05 2 views
3

Я начал изучать сборку. Я наткнулся на эти строки.Объяснение кода сборки

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

TIMES 0Bh-$+start DB 0 

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

Я запутался в первой строке декларации "bpbBytesPerSector: DW 512". Здесь я думаю, что DW определяет слово. Таким образом, DW 512 означает, что 512 слов означают 1024 байта. Теперь метка «bpbBytesPerSector». Байты на сектор должны быть 512 (это то, что я думаю). Точно так же я не могу понять следующие две строки. Я полностью смущен этим. Может кто-нибудь объяснить мне. Спасибо заранее.

ответ

6

Нет, dw средства определяют одного слово 512. Это означает выделить пространство для один слова здесь и установите значение 512.

Это создает блок параметров BIOS (BPB) и разорвать его down:

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

Спасибо. Я понял. – narayanpatra

0

Как уже указывалось @paxdiablo, число является только значением для слова. Когда/если вы хотите, чтобы определить массив из 512 слов, как вы описали, вы бы использовать что-то вроде:

myarray dw 512 dup(?) 

Здесь 512 это число повторений, и ? это значение, которое нужно поместить в каждый («?» означает «оставьте его неинициализированным», но вы можете указать значение, если хотите).

Смежные вопросы