鱼C论坛

 找回密码
 立即注册
查看: 2018|回复: 7

汇编第3章寄存器问题3.10中完成的程序在Debug中运行报错,求真相!!!

[复制链接]
发表于 2012-7-22 22:43:13 | 显示全部楼层 |阅读模式
1鱼币
很奇怪运行了 mov ax,2666 就会报错,不知道为什么

QQ截图20120722224859.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-23 08:58:35 From FishC Mobile | 显示全部楼层
正常情况下,在设置ss的时候下面应该紧接设置sp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-23 09:10:44 | 显示全部楼层
设了 mov ss,ax  mov sp,2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 14:53:09 | 显示全部楼层
T命令是单步中断,中断过程中,会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值,以待从中断返回后能够正确执行以前的程序。当你的栈空间过小,中断过程入栈数据的时候,越界了,由于是在windows的保护模式下,所以,windows认为这个操作是不合法的,危险的。所以,就给你毙掉了。 你这个不是
mov ax,2266
问题,而是mov sp,2 的问题。改成mov sp,10就没问题了。

参考文献:http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1004&qID=31164
http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1004&qkSg=2&qID=28744&readSg=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-24 10:40:34 | 显示全部楼层
哦哦,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-24 11:37:26 | 显示全部楼层
会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值
我把
mov sp,2 改成
mov sp,6
就运行成功了      
标志寄存器指的是哪个寄存器?

点评

后面会学到。  发表于 2012-7-24 15:24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-26 10:08:45 | 显示全部楼层
哦哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 10:46:03 | 显示全部楼层
明显是数据溢出了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-8 06:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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