求教如何将键盘输入的字符与内存中的字符进行比较
下面是我写的代码,比较简短,请大家耐心看下
我在数据段定义了account,里面的内容为1234,然后键盘键入字符,与account内的字符进行比较,如果字符不相同则重新输入,如果全部相同则运行结束。
但在实际执行时,我键盘键入1,直接是错误,跳转到重新输入。。。。
我是新手,不知道是哪错了,请大家指出我的错误
account内的每一个字符是不是都单独占用一个字节单元?
data segment
check1 db 'account:$'
cr db 13,10,'$'
error db 'error!',13,10,'$'
account db '1234$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
check_account:
lea dx,check1
mov ah,9
int 21h
mov si,offset account
mov cx,4
check_account_loop:
mov ah,1
int 21h
cmp al,ds:[si] ;将输入的字符与内存account的字符比较
inc si
jnz check_account_error ;不相等就重新输入
loop check_account_loop
jmp e ;全部相等则退出
check_account_error:
call cr_lf
lea dx,error
mov ah,9
int 21h
call cr_lf
jmp check_account
e:
mov ah,4ch
int 21h
cr_lf proc;回车+换行
lea dx,cr
mov ah,9
int 21h
ret
cr_lf endp
code ends
end start