汇编第3章寄存器问题3.10中完成的程序在Debug中运行报错,求真相!!!
很奇怪运行了 mov ax,2666 就会报错,不知道为什么 正常情况下,在设置ss的时候下面应该紧接设置sp 设了 mov ss,axmov sp,2 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
哦哦,谢谢 会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值
我把
mov sp,2 改成
mov sp,6
就运行成功了
标志寄存器指的是哪个寄存器? {:5_105:}哦哦 明显是数据溢出了{:5_103:}
页:
[1]