汇编代码的解释

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(这是我认为的)。同样,我也不理解接下来的两行。我完全困惑了。有人能解释一下吗?提前感谢。

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

0

正如 @paxdiablo 已经指出的那样,这个数字只是这个单词的值。如果您想要定义一个像您描述的由 512 个单词组成的数组,您可以使用类似以下的语句:

myarray dw 512 dup(?)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接