🎓 微机原理考点专栏(通篇免费)
欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。
为什么选择我的视频?
- 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
- 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。
🔗 点击这里观看我的视频讲解 🔗
我需要你的支持
我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!
🙏 感谢你的支持!祝你学有所成! 🙏
2.4 堆栈
堆栈是以“先进后出”或“后进先出”原则管理的存储区域。SS给出堆栈段的段基址,SP存放栈顶地址,指出从栈顶到段首址的偏移量。
例题:已知当前堆栈段的段首址为20000H,SS=2000H,SP=0010H,BX=5678H,分别进行PUSH BX,POP CX,POP DX。
解:
- 初始状态:
SS = 2000H
SP = 0010H
段首地址 = SS × 16 = 20000H
堆栈顶地址 = 段首地址 + SP = 20000H + 0010H = 20010H - 执行
PUSH BX
:
SP 减少 2:
SP = 0010H - 2H = 000EH
将 BX 的值(5678H)压入堆栈:
堆栈顶地址 = 段首地址 + SP = 20000H + 000EH = 2000EH
内存 2000EH 处存储值 5678H - 执行
POP CX
:
从堆栈顶弹出一个 16 位值到 CX:
堆栈顶地址 = 2000EH
CX = 5678H
SP 增加 2:
SP = 000EH + 2H = 0010H - 执行
POP DX
:
从堆栈顶弹出一个 16 位值到 DX:
由于上一次**POP**
** 操作后 SP 已回到 0010H**,堆栈为空,所以**DX**
获取的值是未定义的(可能是上次堆栈操作留下的值)。
SP 再次增加 2:
SP = 0010H + 2H = 0012H
20000 | ||
---|---|---|
20001 | ||
20002 | ||
20003 | ||
20004 | ||
20005 | ||
20006 | ||
20007 | ||
20008 | ||
20009 | BBH | |
SP->栈顶 | 20010 | AAH |
BX=5678H
BL(低八位) | 34H |
---|---|
BH(高八位) | 12H |