Maschinist 发表于 2018-7-25 18:03:27

检测点6.1

6.1第二题,按书上所给思路其实只需一个字单元的栈空间即可完成改写,所以将sp的值设为12h,但是debug之后发现只能改写一部分,这是为什么?

57158597@qq.com 发表于 2018-7-26 09:08:50

如果你不用DEBUG调试直接运行这个程序,SP设置成12H是没有问题的
但你用DEBUG调试就涉及到了DOS的中断例程,DOS的中断例程也是会用到栈的,这个后期有讲
这个栈不是你的数据在用而已,DEBUG的数据也跟你一起在用,所以SP就往后减了

Maschinist 发表于 2018-7-28 08:35:40

57158597@qq.com 发表于 2018-7-26 09:08
如果你不用DEBUG调试直接运行这个程序,SP设置成12H是没有问题的
但你用DEBUG调试就涉及到了DOS的中断例程 ...

那这个中断例程用的栈就正好是你定义的那段栈空间?

57158597@qq.com 发表于 2018-7-28 08:56:31

Maschinist 发表于 2018-7-28 08:35
那这个中断例程用的栈就正好是你定义的那段栈空间?

是啊,不是正好用,是肯定用你定义的栈空间

Maschinist 发表于 2018-7-28 11:07:51

57158597@qq.com 发表于 2018-7-28 08:56
是啊,不是正好用,是肯定用你定义的栈空间

老哥,这个部分在王爽老师的教材在哪一章?

57158597@qq.com 发表于 2018-7-28 16:58:25

Maschinist 发表于 2018-7-28 11:07
老哥,这个部分在王爽老师的教材在哪一章?

记不清楚了,应该是在DOS中断例程讲解那吧
页: [1]
查看完整版本: 检测点6.1