回 帖 发 新 帖 刷新版面

主题:遇到无效的指令?

一个小程序,在编译与连接时都没有问题,在运行时却说遇到无效的指令。程序目的是在标准输出窗口输出116h。源程序如下:
;**********************************
data segment
  a db '16h'
data ends
;**********************************
code segment
  assume ds:data,cs:code
;----------------------------------
main proc far
   mov ax,data
   mov ds,ax
   mov dl,31h
   mov ah,2
   int 21h
   call bbt
main endp
;----------------------------------   
bbt proc near
   mov ah,9
   mov dx,offset a
   int 21h
   ret
bbt endp  
;----------------------------------   
code ends
;**********************************
   end main      
这是怎么一回事?

回复列表 (共6个回复)

沙发

初学的经典错误。
最后的时候没有下面的代码
MOV AH,04CH
INT 21H

板凳

main proc far
   mov ax,data
   mov ds,ax
   mov dl,31h
   mov ah,2
   int 21h
   call bbt
   ;结束程序
   mov ax, 4C00H
   int 21H
main endp

3 楼

一开始我也写了那个代码的,可是一样报错。

4 楼

erping兄,在116h后面有一大段不认识的乱码,怎么一回事呢?

5 楼

是喔,你没加STOP(dollar)符号

6 楼

;**********************************
data segment
  a db '16h$'
data ends
;**********************************
code segment
  assume ds:data,cs:code
;----------------------------------
main proc far
   mov ax,data
   mov ds,ax
   mov dl,31h
   mov ah,2
   int 21h
   call bbt
   mov ax,4c00h
   int 21h
main endp
;----------------------------------   
bbt proc near
   mov ah,9
   mov dx,offset a
   int 21h
   ret
bbt endp  
;----------------------------------   
code ends
;**********************************
   end main      

我来回复

您尚未登录,请登录后再回复。点此登录或注册