gpt4 book ai didi

assembly - Intel x86 汇编语法中寄存器上的括号

转载 作者:行者123 更新时间:2023-12-02 19:31:49 25 4
gpt4 key购买 nike

我以为我理解 x86 汇编中的括号。在这个例子中,寄存器ax应该包含X,因为括号代表LABEL的当前地址。

mov ax, [LABEL]

LABEL:
db "X", 0

但我不明白以下两条 assembly 线:

mov al, [ebx]

为什么需要括号?是因为 ebx 是 32 位寄存器而 ax 是 16 位吗?有什么区别:

mov al, ebx

或者这个,我不明白为什么我需要括号......

mov [edx], ax

最佳答案

方括号表示法用于让您访问寄存器或标签“指向的值”。

mov ax, [LABEL]

LABEL:
db "X", 0

您正在使用LABEL标记的内存中的加载ax。在本例中,您将“X”(0x58 ASCII)复制到 ax 寄存器中,同时将 0 复制到 ax 的高字节中>。因此,ax = 0x0058,以及 ah = 0al = 0x58

LABEL 附加到“X”所在的地址。

<小时/>

这不是一个有效的操作:

mov al, ebx

还有这个:

mov [edx], ax

您正在将 ax 的值移动到“edx 指向的值”的前两个字节中,因为 ax 是一个16 位寄存器和 edx 只是保存应写入的内存地址。

关于assembly - Intel x86 汇编语法中寄存器上的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com