如果我们考虑两个寄存器ax和bx,我们如何通过使用push和pop来交换它们在Intel IA-32中的内容?我不允许使用xchg。
这不是家庭作业的问题,我正在修改考试。
答案 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,你需要一个不同的命令来访问堆栈顶部