MOV CX、DAT[4] 索引到字数组 (DW) 的结果
Result of MOV CX, DAT[4] indexing into array of words (DW)
我有以下命令
DAT DW 128,256,64,32
MOV CX, DAT[4]
据我所知,DAT[4] 意味着我们将获得第 4 个索引的值,但在这种情况下我们没有这样的索引。
你能告诉我在 MOV CX, DAT[4]
之后 CX
寄存器中会有什么吗?
As I know, DAT[4] means we will get value of 4th index,
在汇编语言中,我们不像高级语言那样使用基于整个元素的数组索引。在高级语言中,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]
将加载 CX
0040h,十进制为 64。
我有以下命令
DAT DW 128,256,64,32
MOV CX, DAT[4]
据我所知,DAT[4] 意味着我们将获得第 4 个索引的值,但在这种情况下我们没有这样的索引。
你能告诉我在 MOV CX, DAT[4]
之后 CX
寄存器中会有什么吗?
As I know, DAT[4] means we will get value of 4th index,
在汇编语言中,我们不像高级语言那样使用基于整个元素的数组索引。在高级语言中,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]
将加载 CX
0040h,十进制为 64。