我已经开始学习装配。我遇到过这些问题。
;*************************************************;
; 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(这是我的想法)。同样,我无法理解接下来的两行。 我对这完全感到困惑。任何人都可以解释一下。谢谢。
答案 0 :(得分:6)
不,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
答案 1 :(得分:0)
正如@paxdiablo已经指出的那样,这个数字只是这个词的值。当/如果你想要定义一个像你描述的512个单词的数组时,你会使用类似的东西:
myarray dw 512 dup(?)
此处512
是重复次数,?
是要放入每个值的值(“?”表示“保持未初始化状态”,但如果您指定值,则可以指定值喜欢)。