Пояснение кода сборки
Я начал изучать сборку. Я наткнулся на эти строки.
;*************************************************;
; 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(это то, что я думаю). Точно так же я не могу понять следующие две строки. Я полностью запутался в этом. Может кто-нибудь объяснить мне. Спасибо заранее.
2 ответа
Нет, dw
означает определить одно слово 512. Это означает, что выделите место для одного слова здесь и установите значение 512.
Это создает блок параметров BIOS (BPB) и разбивает его:
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
Как уже указывал @paxdiablo, число - это просто значение слова. Когда / если вы хотите определить массив из 512 слов, как вы описали, вы бы использовали что-то вроде:
myarray dw 512 dup(?)
Здесь 512
количество повторений, а ?
это значение, которое будет помещено в каждое ("?" означает "оставить его неинициализированным", но вы можете указать значение, если хотите).