PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX 为什么结果是AX和BX得内容互换
PUSH AX PUSH BX PUSH CX POP CX POP AX POP BX 为什么结果是AX和BX得内容互
答案:1 悬赏:0 手机版
解决时间 2021-08-14 06:45
- 提问者网友:趣果有间
- 2021-08-13 22:32
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-08-13 22:43
你可以把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内容交换.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯