. : : 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