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(这是我的想法)。同样,我无法理解接下来的两行。我对此完全感到困惑。任何人都可以解释我。提前谢谢。

4

2 回答 2

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
于 2010-11-05T06:21:55.870 回答
0

正如@paxdiablo 已经指出的那样,数字只是单词的值。当/如果你想像你描述的那样定义一个包含 512 个单词的数组时,你会使用类似的东西:

myarray dw 512 dup(?)

这里的512是重复的次数,?是要放入每个中的值(“?”表示“保持未初始化”,但如果您愿意,可以指定一个值)。

于 2010-11-05T18:06:44.307 回答