. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验二:我遇到一个很棘手的问题,请高手帮我看看!(急急急!!)  [已解决] 回复[ 3次 ]   点击[ 419次 ]  
abcdwzxy
[帖 主]   [ 发表时间:2009-04-15 14:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:3
注册日期:2009-03-13 16:19
我做实验二时,按照书上给的指令书写出了指令。写完后我用U命令查看指令,是对的,和预想的一样。但是当我用T命令执行这段指令时,却出现一个让我出乎意料的情况。
当我用T命令执行时,出现了一个对话框,内容如下:
      

      标题:        16位MS-DOS 子系统
      内容:         Command Prompt-debug
                   NTVDM CPU 遇到无效的指令。
                      CS:13e9  IP:5521  OP:ff ff ff 00 00 选择"关闭"终止应用程序。
      最下面是两个按钮:     关闭     忽略
 

当我点击忽略按钮时,又出现一个和上面的对话框极其相似的对话框,只有CS  IP  OP的值不一样
再次点击忽略按钮,又会出现一个同样的对话框,只有CS  IP  OP 不一样。

具体情况如下:
第1次:  CS:13e9  IP:5522  OP:ff ff 00 00 00
第2次:  CS:13e9  IP:552d  OP:ff ff ff 00 00
第3次:  CS:13e9  IP:552e  OP:ff ff 00 00 00
第4次:  CS:13e9  IP:5539  OP:ff ff ff ff ff
第5次:  CS:13e9  IP:553a  OP:ff ff ff ff ff
第6次:  CS:13e9  IP:553b  OP:ff ff ff ff ff
第7次:  CS:13e9  IP:553c  OP:ff ff ff ff 00
第8次:  CS:13e9  IP:553d  OP:ff ff ff 00 00
第9次:  CS:13e9  IP:553e  OP:ff ff 00 00 00
第10次: CS:13e9  IP:554d  OP:ff ff ff 00 00
第11次: CS:13e9  IP:554e  OP:ff ff 00 00 00
第12次: CS:13e9  IP:55ce  OP:63 72 6f 73 6f

当第13次点击忽略按钮时,debug会运行一段指令。具体是什么指令不清楚(因为运行的太快,看不清楚)。
运行完这段指令后,又出先一个和上面一样的对话框(只有CS  IP  OP不一样)。

这时  CS:13e9  IP:e264  OP:ff ff 51 13 db

当第14次点击忽略按钮后,debug又会运行一段指令,具体是什么指令不清楚(因为运行的太快,看不清楚)。这次运行完指令后,不弹出对话框了,但是command已经处于不能用的状态(即不管我按什么,在光标处都不会出现字符,而且光标也不闪烁的状态了)只有关闭command。

第14次点击忽略,debug又会运行一段指令,指令运行完后,CPU中各寄存器的值及显示的指令如下:
AX=F3F0  BX=0000  CX=0000  DX=2074  SP=E265  BP=0001  SI=1509  DI=FFFF
DS=0545  ES=0000  SS=0000  CS=229C  IP=7414
229c:7414  0000    ADD   [BX+SI],AL

在我进入command时(编写实验二的指令代码前),用debug查看CPU中各寄存器的值及显示的指令如下(即初始状态时CPU中各寄存器的值及显示的指令):
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1477  ES=1477  SS=1477  CS=1477  IP=0100
1477:0100  883E1E99    MOV   [991E],BH

我机器有点古董了,但这些东西都是基于8086CPU的,应该是没问题的,小弟实在想不明白,
请高手指点指点,谢谢!!
mess
[第1楼]   [ 回复时间:2009-04-17 15:18 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
NTVDM CPU 遇到无效的指令。
-----------
这个应该是操作系统的保护模式的提示,你程序的一些东西被保护模式认为非法所以报错要杀掉当前程序。

比如汇编书上的实验三,当设置sp过小,比如mov sp,4,再t命令就会报错,原因是执行t中断要用栈保存现场,而sp过小,执行多次push后sp发生了环绕~
abcdwzxy
[第2楼]   [ 回复时间:2009-04-18 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:3
注册日期:2009-03-13 16:19
谢谢你的解答,不过有点高深,我还没看到那个地方呢!
我想等我看到那个地方后应该会搞定它!
谢谢!
abcdwzxy
[第3楼]   [ 回复时间:2009-06-22 02:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:3
注册日期:2009-03-13 16:19
此贴由 贴主 于 [ 2009-06-22 02:27 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved