我用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