鱼C论坛

 找回密码
 立即注册
查看: 3039|回复: 2

[汇编作业] 空栈SP的问题

[复制链接]
发表于 2019-3-26 13:43:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在视频中17节课中这样讲的:栈为空,就相当于栈中唯一的元素出栈,出站后,SP=SP+2,SP原来为000EH,加2后SP = 10H,所以当栈为空的时候,SS=1000H,SP=10H在视频19节中题目:问题3.7 将10000H~1000FH这段空间当作栈,初始状态时空,将AX,BX,DS的数入栈。
程序中是这样写的:
MOV AX,1000H
MOV SS,AX
MOV SP,0010H
。。。
这里我实在不理解这个SP为什么是0010H呢,到底空栈SP是+2还是+1??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-26 15:20:15 | 显示全部楼层
本帖最后由 jackz007 于 2019-3-26 16:12 编辑

       只要堆栈指针 SP 指向了栈顶(在本例中就是 10H),那么,堆栈就是空的。因为这时,堆栈里面可以容纳 8 个 word(即 16个 bytes)。     

      对于 16 位的 DOS 程序,压、退栈操作分别会使 SP 减 2 和 加 2,因为 1 个字长是 16 位,也就是 2 个字节,所以,SP 的增减必须是 2 的整数倍。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-27 08:45:44 | 显示全部楼层
jackz007 发表于 2019-3-26 15:20
只要堆栈指针 SP 指向了栈顶(在本例中就是 10H),那么,堆栈就是空的。因为这时,堆栈里面可以容 ...

哦哦 我明白了,我有一点想错了,这个栈空间肯定是16的整数倍,所以10000H~1000FH的栈空间,地址1000F不是16的整数倍,但是也必须按照16的整数倍来计算,也就是到了1000EH的时候,SP不会指向1000FH,就是SP也必须按照2个字的长度来计算,所以SP还是=0010,谢谢指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 15:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表