永发信息网

汇编语言用堆栈指令将寄存器AX与SI的内容交换。 PUSH AX PUSH SI .............. POP AX POP SI

答案:4  悬赏:0  手机版
解决时间 2021-11-10 10:07
汇编语言用堆栈指令将寄存器AX与SI的内容交换。 PUSH AX PUSH SI .............. POP AX POP SI
最佳答案
有个问题需要注意,push和pop的操作数是寄存器的值,不是寄存器本身。

push AX 先把AX的值入栈
push SI 然后把SI的值入栈

pop AX 是把后压入的SI的值弹到AX
pop SI 是把先压入的AX的值弹到SI

是数据的后进先出,不是寄存器的后进先出。这样就可以达到交换寄存器数据的目的。

同样,如果不是要达到交换数据的目的,而仅仅是用栈保存寄存器的原值,那么就应该这么写:
push AX
push SI
……
pop SI
pop AX追问pop AX 是把后压入的SI的值弹到AX ,这时候 SI的值是多少 ?追答把寄存器的值压入栈中,寄存器的值本身不会发生变化,而弹出到某个寄存器,则会改变那个寄存器的值。
因此,就拿你这个例子设定的栈作为参考,在没有执行pop SI之前,SI的值是不变的。
SI=3333H ,AX=2222H
push AX; 2222h入栈,同时AX的值不变,AX=2222H
push SI; 3333h入栈,同时SI的值不变,SI=3333H
;---------------------------------
; 此时栈中低地址存放3333h,高地址存放2222h
;---------------------------------
pop AX ; 将存放于低地址的3333h弹出到AX,此时AX=3333h,SI的值不变,SI=3333h
pop SI ;将存放于高地址的2222h弹出到SI,此时SI=2222h,AX=3333h
-----------------------------------
; 两个数据弹出后,栈空追问是把寄存器的值 ,在栈中完成内容交换。
换句话话就是利用栈中过渡的方法 达到内容交换 ,对吧?追答对,可以这么说。仅仅是内容的交换,而不是寄存器本身的交换。追问明白了 ,太谢谢你了
全部回答
push ax的意思是将ax的数据压入栈
第二句同理
pop ax的意思是将【原来si的数据(后进)】出栈至ax
第四局同理
回答过了追问你回答的后进先则我知道 ,但并不是我问题的答案。
push ax的意思是 将ax寄存器里的值放入栈。
pop ax的意思是讲sp指向的栈顶的16位数据出栈 放入ax寄存器,
不是什么先出ax,
是第一次 出的放到ax里。
什么先出呢, 后入的数据先出 3333后入, 先出放到ax里。
哥们你太混乱了追问假设,SI=3333H ,AX=2222H.
PUSH AX
PUSH SI
...........
POP AX
POP SI

执行 以上内容交换命令后
AX=3333H,SI=2222H.

主要是想知道为什么变成这样的 ?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问佐仓千代这张图出自《月刊少女野崎君》哪
辰东完美魔王秘境详情介绍
天全县的介绍
They say interests is the best teacher 对
一个段子,大意是说女生给男朋友发一张自拍要
我在全国英语竞赛获得了全省一等奖对浙师大的
4斤左右新生婴儿一般身长多少,头围胸围多少
请问底款是四个什么字。字母是哪个国家的?
博览群书的薄什么意思是什么
金昌支队科目一考场地址在哪,我要去那里办事
除了电信宽带以外,还有什么比较好一点
为什么一些本地大的零售市场不做自己的销售网
1deg等于多少度
在彪马官方旗舰店买了件卫衣,自己不会辨别真
我把电脑内存去取了,还是能开机是什么意思
推荐资讯
小学数学中的概念,越多越好!
27岁女孩,家里会给介绍26的男朋友吗,正常的
宝宝爱吐舌头怎么办,有在做口肌操,但感觉效
求文LOFTER上的一篇文章
陇东学院2016年寒假几号放,到哪看得到
李小鲜小鲜猪蹄的味道怎么样?
“百善孝为先”的小故事有哪些
千丈青山衬着一道白银中千丈是说山的什么
刚刚和女友分手,是她提出的,她本来睡得很早
四海茶艺吧地址在什么地方,我要处理点事!
【崩坏学园2狗牙邪教怎么搭配】
风水中计算九星飞伏使用的运盘是根据建筑建造
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?