当前位置: 代码迷 >> 汇编语言 >> cpu 遇到无效指令解决办法
  详细解决方案

cpu 遇到无效指令解决办法

热度:8241   发布时间:2013-02-26 00:00:00.0
cpu 遇到无效指令
我用masm5汇编连接一段源程序后运行,结果系统提示
D:\1.exe
NTVDM CPU 遇到无效指令。
CS:0488 IP:001b OP:63 75 74 65 20
请问这是什么意思啊
1.exe是生成的目标文件
源文件是照着课本用8086编的

呵呵!初学汇编,不要见笑
源程序如下
STACK SEGMENT STACK
  DW 64 DUP(?)
STACK ENDS
CODE SEGMENT
  ASSUME CS:CODE,SS:STACK
MAIN PROC FAR
START: MOV AX,2000H
  MOV DS,AX
  MOV SI,0
  MOV CL,0FH
  XOR AX,AX
A1: MOV [SI],AL
  INC AL
  INC SI
  DEC CL
  JNZ A1
  MOV CX,10H
A2: MOV [SI],AL
  INC SI
  DEC AL
  LOOP A2
  INT 20H
MAIN ENDP
CODE ENDS
  END START

------解决方案--------------------------------------------------------
最后加上结束语句,比如:

mov ah,4ch
int 21h

否则,指令流会越界。
------解决方案--------------------------------------------------------
int 20H一般用于从.com中返回,且主程序必须是个子程序,且这个子程序的前几句应该是

push ds
xor ax, ax
push ax
------解决方案--------------------------------------------------------
int 20H不能用于exe程序,有安全隐患,用int 21H的4CH功能退出。
另外,堆栈段太小了,很容易溢出,加大点,例如:
DW 1000H
  相关解决方案