Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编代码的解释_Assembly_X86_Bootloader_Floppy - Fatal编程技术网

Assembly 汇编代码的解释

Assembly 汇编代码的解释,assembly,x86,bootloader,floppy,Assembly,X86,Bootloader,Floppy,我已经开始学习组装。我遇到了这些问题 ;*************************************************; ; OEM Parameter block / BIOS Parameter Block ;*************************************************; TIMES 0Bh-$+start DB 0 bpbBytesPerSector: DW 512 bpbSectorsPerCluster:

我已经开始学习组装。我遇到了这些问题

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

TIMES 0Bh-$+start DB 0

bpbBytesPerSector:      DW 512
bpbSectorsPerCluster:   DB 1
bpbReservedSectors:     DW 1
我对声明的第一行感到困惑 “bpbBytesPerSector:DW 512”。在这里,我认为DW是一个定义词。所以DW512意味着定义512个字意味着1024个字节。现在标签是“bpbBytesPerSector”。每个扇区的字节数应该是512(我就是这么认为的)。同样,我也不明白接下来的两行。
我完全搞不懂这一点。谁能给我解释一下吗。提前谢谢。

不,
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
是重复次数,
是每个重复中要输入的值(“?”表示“未初始化”,但如果愿意,可以指定一个值)