. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
程序员灌水区
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
为何 T 不下去了???
[已解决]
回复[
3
次 ] 点击[
685
次 ]
lbhn
[帖 主]
[ 发表时间:2007-10-16 15:47 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:5
注册日期:2007-10-08 17:57
第三章 实验3
(1)我只T 了4次就出错了?????
其弹出一个对话框:
NTVDM CPU 遇到无效的指令。
CS:0000 IP:0077 OP:f0 37 05 0e 02选择“关闭”终止应用程序。
cat442
[第
1
楼]
[ 回复时间:2007-10-16 16:16 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:16
信誉值:6
注册日期:2007-06-26 16:56
这是一个普遍问题,不知你遇到过 ,
你把add sp,4 改为add sp,16 就不会有上面情况出现了。
如有兴趣你可以分析研究一下,为什么会出这种问题.
还有关于王爽老师 <汇编语言>的问题你可以到
王爽《汇编语言》论坛
http://www.asmedu.net/bbs/forum.jsp
去提问。
fishboy
[第
2
楼]
[ 回复时间:2007-10-16 19:47 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
当你T命令中断的时候,会使用当前栈,将部分寄存器的压栈,其中就包含cs,ip,当从中断恢复继续的时候,cs,ip将被pop出来付给cs,ip,以继续程序。但是,t命令压入的数据超过了4个字节,以至于在恢复的时候,cs,ip不能够恢复到之前的数据,变成了栈里面压入的其他数据,所以,以错误的cs,ip再继续运行程序的时候,就出错了。也就是程序和t都在使用当前栈,而你对当前栈的sp进行了设置,导致恢复程序运行的现场时混乱,造成程序的运行出现异常,无法继续运行。不知道分析的对错,楼主可以自己分析一下。楼下的有更有说服力的分析,请赐教。
lbhn
[第
3
楼]
[ 回复时间:2007-10-21 13:35 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:5
注册日期:2007-10-08 17:57
此贴由 贴主 于 [ 2007-10-21 13:35 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(cat442):2分 2楼(fishboy):2分
此问题已结贴!
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved