我有以下命令
DAT DW 128,256,64,32
MOV CX, DAT[4]
[据我所知,DAT [4]意味着我们将获得第4个索引的值,但是在这种情况下,我们没有这样的索引。您能告诉我CX
之后在MOV CX, DAT[4]
寄存器中有什么吗?
据我所知,DAT [4]表示我们将获得第四个索引的值,
在汇编语言中,我们不像高级语言那样基于整个元素使用数组索引。在高级语言中,DAT[4]
将检索第五个数组元素(如果索引从0开始)。
用汇编语言,方括号之间的数字是距数组开头的偏移量,以字节为单位。您的示例:
DAT DW 128,256,64,32
使用十六进制重写:
DAT DW 0080h, 0100h, 0040h, 0020h
以类似x86的小尾数形式出现在内存中:
80h, 00h, 00h, 01h, 40h, 00h, 20h, 00h
^ ^
offset 0 offset 4
偏移量为4的字包含40h的低字节和00h的高字节。因此,MOV CX, DAT[4]
将使用0040h(十进制为64)加载CX
。