今天写asm文件时报错
open procedures subr2 subr1
部分源代码
subr1 proc near ;子程序1:键盘输入、形成十进制
mov ah,1 ;键盘输入十进制数
int 21h
cmp al,27 ;是ESC键?
jz out1
sub al,30h ;其它字符?
jl exit ;是,转exit
cmp al,9
jg exit ;大于9就跳出
mov ah,0
xchg ax,x ;形成十进制数
mov cx,10
mul cx
xchg ax,x
add x,ax ;保存到x中
jmp subr1
exit:ret
subr2 proc near ;子程序2:查表
mov dx,offset mess2 ;显示提示2
mov ah,9
int 21h
mov bx,x
rept1:
rol bx,cl
mov al,bl
and ax,coup ;保留最低位
mov si,ax
mov dl,hex[si] ;查表显示高位、低位
mov ah,2
int 21h
dec ch
jnz rept1
ret
仔细查看代码发现原因:
未在subr1 subr2后面加上 subr1 endp,subr2 endp
应改为:
subr1 proc near ;子程序1:键盘输入、形成十进制
mov ah,1 ;键盘输入十进制数
int 21h
cmp al,27 ;是ESC键?
jz out1
sub al,30h ;其它字符?
jl exit ;是,转exit
cmp al,9
jg exit ;大于9就跳出
mov ah,0
xchg ax,x ;形成十进制数
mov cx,10
mul cx
xchg ax,x
add x,ax ;保存到x中
jmp subr1
exit:ret
subr1 endp
subr2 proc near ;子程序2:查表
mov dx,offset mess2 ;显示提示2
mov ah,9
int 21h
mov bx,x
rept1:
rol bx,cl
mov al,bl
and ax,coup ;保留最低位
mov si,ax
mov dl,hex[si] ;查表显示高位、低位
mov ah,2
int 21h
dec ch
jnz rept1
ret
subr2 endp
仅作学习记录