这里,第一个代码使用 dd 变量上的 + 1 来访问我理解的第二个字节, 但是我使用的第二个代码具有相同符号 + 1 的数组,我发现它是数组中的第二个元素,结果是否确实是第二个数组元素的第一个字节,或者它将是第一个元素,但它是第二个元素字节?
第一个代码:
.data
num dd 090F0433H
.code
mov ax, @data
mov ds, ax
mov ax, word ptr num + 1
第二个代码:
.data
num dd 090F0433H,081234FEH
.code
mov ax, @data
mov ds, ax
mov ax, word ptr num + 1
是的,它将是第一个元素,但它是第二个字节。
num
可以扩展为
num db 09h, 0Fh, 04h, 33h,
08h, 12h, 34h, FEh
并且
num
的内存分配将是
|编号 |
|:--------:|
| 09 点 |
| 0Fh |
| 04 点 |
| 33小时|
| 08 点 |
| 12 小时 |
| 34小时|
| FEh |
在这两个代码中,寄存器
ax
已设置为[num + 1]
,然后我们有ax
的内存转储
|斧头|
|:--------:|
| 0Fh |
| 04 点 |
| 33小时|
| 08 点 |
| 12 小时 |
| 34小时|
| FEh |
| ... |
并且两个代码都以 word ptr
的方式移动,因此 ax
的值将为 0F04h,因此两个代码相等。