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

时间:2011-04-04 15:01:54

标签: x86 stack push pop

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

这不是家庭作业的问题,我正在修改考试。

3 个答案:

答案 0 :(得分:3)

您可以按一次并使用mov指令,也可以按两次。首先是:

push ax
mov ax, bx
pop bx

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

push ax
push bx
pop ax
pop bx

答案 1 :(得分:1)

push ax
push bx
pop ax
pop bx

答案 2 :(得分:1)

应该是标准使用堆栈。按A,按B,弹出A,弹出B.

这适用于IA-32,因为它的弹出不只是弹出堆栈,它还提供弹出的值。这并非总是如此。 C ++的标准模板库有一个只是操作堆栈的pop,你需要一个不同的命令来访问堆栈顶部