首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

cpu 遇到无效指令解决办法

2012-05-24 
cpu 遇到无效指令我用masm5汇编连接一段源程序后运行,结果系统提示D:\1.exeNTVDM CPU 遇到无效指令。CS:048

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

热点排行