. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(内存访问)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
检测点3.2的第二个疑惑
[待解决]
回复[
2
次 ] 点击[
609
次 ]
327451977
[帖 主]
[ 发表时间:2008-12-13 18:57 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-11-14 12:24
问题2:
AX=2000 BX=0000 CX=0000 DX=0000 SP=0006 BP=0000 SI=0000 DI=0000
DS=1000 ES=1825 SS=2000 CS=1825 IP=0121 NV UP EI PL NZ NA PO NC
1825:0121 FF360A00 PUSH [000A] DS:000A=0000
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=0004 BP=0000 SI=0000 DI=0000
DS=1000 ES=1825 SS=2000 CS=1825 IP=0125 NV UP EI PL NZ NA PO NC
1825:0125 FF360C00 PUSH [000C] DS:000C=0000
-t
结果一回车,就弹出对话框“16 bit MS-DOS subsystem”,说错误了···不明白~
mess
[第
1
楼]
[ 回复时间:2008-12-15 10:54 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
这个题不能在虚拟dos下跟踪,由于操作系统保护模式的关系会报错。可以在实dos下跟踪。不过这个题我们可以用脑袋跟踪:-)
如果楼主用的是第一版的话要注意一下,实验三也会遇到这个问题,当sp过小而又执行了t命令的话就会出现问题,将add sp,4 改成add sp,10就ok了~
这个知识在中断就会学到,t命令也叫但不中断,这里不用管它,前言中不是说知识屏蔽嘛,先学好当前的知识再说~
mywiil
[第
2
楼]
[ 回复时间:2008-12-17 21:45 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
T命令是单步中断,中断过程中,会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值,以待从中断返回后能够正确执行以前的程序。当你的栈空间过小,中断过程入栈数据的时候,越界了,由于是在windows的保护模式下,所以,windows认为这个操作是不合法的,危险的。所以,就给你毙掉了。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved