注册 登录
编程论坛 汇编论坛

求助汇编单步执行“遇到无效的指令”的问题

paul_wing 发布于 2012-04-06 22:11, 631 次点击
代码如下:
程序代码:
CODE SEGMENT PARA PUBLIC 'CODE'
   MAIN  PROC  FAR
      ASSUME    CS:CODE
                     PUSH   DS                                          ; 保留PSP的段地址
                     MOV    AX,0                                        ; 保留PSP的IP=0
                     PUSH   AX      
                     MOV    AX,DATA
                     MOV    DS,AX
                     
      ASSUME    DS:DATA
                     CLI                                                ; 关中断   
                     MOV    AX,0                                        ; 加载中断程序入口地址
                     MOV    ES,AX                                       ; 段地址清零
                     MOV    DI,24H                                      ; 中断地址为36(09H号中断)
                     MOV    AX,OFFSET KBINT                             ; 保存键盘中断服务程序入口地址
                     CLD                                                ; 方向标志位清零,DI自加
单步执行到此出错:   STOSW                                              ; 存入串指令的字操作,将KBINT的地址偏移量存入0000:0024寻址单元
                     MOV    AX,CS
                     STOSW

.........

.........

每到单步执行完“CLD”后,要执行"STOSW"时,就会提示:
“C:\WINDOWS\system32\cmd.exe
    NTVDM CPU 遇到无效的指令。
  。。。。。”
求达人指点是怎么回事。。。

[ 本帖最后由 paul_wing 于 2012-4-6 22:14 编辑 ]
2 回复
#2
zklhp2012-04-07 10:51
windows里面运行这个是在一个虚拟8086里运行的 有些指令执行不了正常

可以在纯dos或者专门的虚拟机里执行 比如VMware一类的
#3
paul_wing2012-04-07 14:22
谢谢楼上的指点~~~~
1