【问题标题】:How does assembly addressing work?汇编寻址如何工作?
【发布时间】:2016-02-27 10:56:00
【问题描述】:

我正在查看汇编语言的代码。 SP 寄存器最初设置为 50。在每一步中,都会显示指向SP的仓库中内存位置的内容。

mov ax,6
push ax
mov bx,3
push bx
mov cx,1
push cx
mov dx,8
push dx
pop ax
pop bx
pop dx
pop cx

寄存器中的最终值是:

ax=8
bx=1
cx=3
dx=6

这是如何工作的?上述命令如何转化为这些最终值?

【问题讨论】:

  • 这似乎可以通过阅读您的程序集变体的文档来轻松回答。如果阅读文档没有帮助,请edit您的问题说明您的研究未能回答您的问题,以便我们给您一个有用的答案。
  • 我投票结束这个问题作为题外话(太微不足道)。有关文档的链接,请参阅 x86 标记 wiki 页面。

标签: assembly


【解决方案1】:
  1. 你将 6,3,1,8 压入堆栈
  2. 您从堆栈中删除 8 并将其复制到 ax
  3. 您从堆栈中删除 1 并将其复制到 bx
  4. 您从堆栈中删除 3 并将其复制到 cx
  5. 您从堆栈中删除 6 并将其复制到 dx

因此:

ax=8
bx=1
cx=3
dx=6

如果不写关于什么是堆栈的文档,我真的无法解释更多。

来自维基百科的示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多