PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX 为什么结果是AX和BX得内容互换 求解详细解答

 我来答
KawaguchiSky
2011-12-19
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你可以把push指令看作一个源操作数,把pop看作目的操作数。

栈空间是由高地址到低地址生长的,push AX,push BX,push CX这连续的三个指令使得AX、BX、CX的值(注意是值,不是寄存器本身)在栈中由高地址向低地址依次排列。

pop的操作数为目的操作数,当pop CX,pop AX,pop BX时,依次将栈顶数据弹出到CX、AX、BX寄存器(注意这里是寄存器)。

连续的三个push使得栈顶存放的数据为原CX的值,故弹出到CX寄存器,值不变;
弹出原CX的值以后,栈顶变为原BX的值,此时弹出到AX寄存器,AX的内容变为原BX的值;
弹出两组数据后,栈顶只剩下原AX的值,此时弹出到BX寄存器,BX的内容变为原AX的值。
故CX不变,仅完成了AX和BX内容交换。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式