汇编单词ptr的2种情况

问题描述 投票:0回答:1

这里,第一个代码使用 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
assembly x86
1个回答
0
投票

是的,它将是第一个元素,但它是第二个字节。

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,因此两个代码相等。

© www.soinside.com 2019 - 2024. All rights reserved.