微机原理与接口技术|浅谈栈的相关概念及应用

1.堆栈的基本注意要点

堆栈这个地方呀很神奇,主要用于暂存数据,8086/8088中专门有一个堆栈段寄存器SS放首地址。

1.1堆栈的操作原则

但是操作还是要一下四个原则

  1. 堆栈存取单位必须为一个字(16位),只能是存储器操作数或者寄存器,不可为立即数
  2. 图为上低下高
  3. POP对SP是 +2 ;PUSH对SP是 -2
  4. LIFO原则,后进先出。

1.2堆栈的操作指令

1.PUSH和POP:
PUSH AX
PUSH WORD PTR[DATA+SI]
POP DS
POP WORD PTR[BX]

  • CS是非法的。
  • 两个存储单元(两个字节)
    2.POPF
    如图
    八位正好一个字节,但是因为要16位,所以实际情况为重复压栈,表示为0202H寄存器标志位举例

1.3执行过程

在这里插入图片描述
在这里插入图片描述
(图片转载自https://blog.justlovesmile.top/,感谢这位博主给我的很多启发hhhh)

2.堆栈的应用

2.1保护现场

2.1.1 过程(子程序)(CALL)调用执行过程:

  • ① 保护断点:将调用指令的下一条指令的地址 (断点)压入堆栈
  • ② 获取子过程的入口地址赋给 IP(或CS和IP):子过程第1条指令的偏移地址
  • ③ 执行子过程:功能实现,参数的保存及恢复
  • ④ 恢复断点,返回原程序:将断点偏移地址由 堆栈弹出

2.1.2 中断调用:(INT为例类比段间间接调用

  • ① 将FLAGS内容保存
  • ② 影响IF,TF标志,CALL不影响
  • ③终端服务程序入口地址在内存固定位置,可通过INT中断向量码找到
  • ④ CALL可任意指定子程序入口地址的存放位置

2.2参数传递

  • 在子程序调用中,有部分的操作需要传递参数,执行子程序前先将参数的值push进去,结束后要注意倒过来pop。

3.堆栈的小小感悟

3.1数据结构和微机原理的堆栈

  • 数据结构里面的堆栈主要是利用后进先出的原理,进行数据的逆向输出,例如 数制转换、符号匹配等应用。
  • 而微机中的堆栈主要是进行数据的一个暂存,比起利用数据的顺序不同是要注意利用数据的顺序达到保护现场呀~还有参数传递吖等作用

3.2 能量柱的累加

学堆栈的时候我总想到那个能量柱的增加,一层一层向叠罗汉一样。堆这个词很生动hhh,啥都不管就往上面放,一个出口的设置很轻松把控删减的操作,虽然受限制了一些,但是保留了必须的功能。这是我目前的感受hhhh。

(个人学习仅供参考,欢迎指正)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值