新手写的汇编程序,输入了字符,但是没反应,没调用我想要调用的子程序,求大神帮忙看看哪里错了
我是个新手,只看了一下午的汇编书,写了如下程序,但不知道哪里错了,有什么不对和不恰当的地方,求大神指出,代码如下:
data segment
menu db 'Bank System:',13,10
db 'q:query',13,10
db 's:save',13,10
db 't:take',13,10
db 'e:exit',13,10
db 'Please choose an order:',13,10,'$'
cr db 13,10,'$'
error db 'error!',13,10,'$'
number db 'number:',13,10,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov bx,30h
list:
lea dx,cr
mov ah,9
int 21h
lea dx,menu
mov ah,9
int 21h
mov ah,1
int 21h
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
cmp al,'q'
jnz a1
call query
jmp list
a1:cmp al,'s'
jnz a2
call save
jmp list
a2:cmp al,'t'
jnz a3
call take
jmp list
a3:cmp al,'e'
jz e
lea dx,error
mov ax,9
int 21h
jmp list
e:call exit
query proc
push ax
push dx
lea dx,[bx]
mov ax,9
int 21h
pop dx
pop ax
ret
query endp
save proc
push ax
push dx
lea dx,number
mov ax,9
int 21h
mov ah,1
int 21h
add bl,al
adc bh,0h
pop dx
pop ax
ret
save endp
take proc
push ax
push dx
lea dx,number
mov ax,9
int 21h
mov ah,1
int 21h
sub bl,al
sbb bh,0h
pop dx
pop ax
ret
take endp
exit proc
mov ah,4ch
int 21h
ret
exit endp
code ends
end start
[解决办法]
除了想显示字符串时的 mov ax,9 应该是 mov ah, 9 之外好像也没什么大的问题,虽然你的几个子程的功能不知道究竟想做什么。