平凡的大海 发表于 2012-7-22 22:43:13

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

很奇怪运行了 mov ax,2666 就会报错,不知道为什么

敉沧 发表于 2012-7-23 08:58:35

正常情况下,在设置ss的时候下面应该紧接设置sp

平凡的大海 发表于 2012-7-23 09:10:44

设了 mov ss,axmov sp,2

lukelqz 发表于 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

平凡的大海 发表于 2012-7-24 10:40:34

哦哦,谢谢

平凡的大海 发表于 2012-7-24 11:37:26

会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值
我把
mov sp,2 改成
mov sp,6
就运行成功了      
标志寄存器指的是哪个寄存器?

平凡的大海 发表于 2012-7-26 10:08:45

{:5_105:}哦哦

陌路难相忘 发表于 2012-7-26 10:46:03

明显是数据溢出了{:5_103:}
页: [1]
查看完整版本: 汇编第3章寄存器问题3.10中完成的程序在Debug中运行报错,求真相!!!