如何使用push和pop交换2个寄存器的内容?

Sor*_*ban 1 x86 stack

如果我们考虑两个寄存器 ax 和 bx,我们如何仅通过使用 push 和 pop 来交换它们在 Intel IA-32 中的内容?我不被允许使用 xchg。

这不是家庭作业的问题,我是为了考试而复习。

vha*_*lac 5

您可以按一次并使用mov指令,也可以按两次。第一个是这样的:

push ax
mov ax, bx
pop bx
Run Code Online (Sandbox Code Playgroud)

如果你想推两次,那就是(正如其他人回答的):

push ax
push bx
pop ax
pop bx
Run Code Online (Sandbox Code Playgroud)