3.9 push、pop指令

 

push 寄存器
pop 寄存器

push 段寄存器
pop 段寄存器

push 内存单元
pop 内存单元

数据是不能直接跟段寄存器发生关系的,需要先经过通用寄存器,再保存到段寄存器

问题3.7

编程,将10000H~1000FH这段空间当做栈,初始状态栈是空的,将AX、BX、DS中的数据入栈。

1) 写指令

通过R命令知道现在CS:IP指向为073F:0178,所以要把指令写于此处

sp可以直接赋值数字

2)T命令执行完后,根据SS和SP查看1000:000A地址处内存空间

 

问题3.8

编程:

  1. 将10000H~1000FH这段空间当做栈,初始状态栈是空的
  2. 设置AX=001AH,BX=001BH
  3. 将AX、BX中的数据入栈
  4. 然后将AX、BX清零
  5. 从栈中恢复AX、BX原来的内容

(1)编写指令

时刻谨记,ax操作的是字,2字节

清零这里使用的是mov,对应机器码占用3字节,如果使用sub ax,ax机器码为两个字节

先pop bx,出栈顺序和入栈顺序相反

(2)执行指令,观察到AX最终赋值为001A,BX最终赋值为001B

如果想交换ax,bx的值,pop时颠倒下它们的顺序即可

 

push和pop是分两步执行的

执行push时:

先改变sp,后向ss:sp处传送

执行pop时:

先向ss:sp处传送,再改变sp

注意

push、pop等栈操作指令,修改的只是sp。也就是说,对16位CPU来说,栈顶的变化范围最大为:0~FFFFH

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值