Assembly 汇编语言计数全部';a';字符输入
我的代码应该计算每个用户输入中的所有字符“a”,如果相等,我使用cmp,然后我的程序跳转到“incre:”以增加bl的值。输出总是这个>^Assembly 汇编语言计数全部';a';字符输入,assembly,tasm,Assembly,Tasm,我的代码应该计算每个用户输入中的所有字符“a”,如果相等,我使用cmp,然后我的程序跳转到“incre:”以增加bl的值。输出总是这个>^ title sample.prog cstack segment para stack 'stack' dw 200h cstack ends cdata segment para 'data' msg1 db 'ENTER 9 CHARACTER: $',10,13 msg2 db 10,13,'NUMBER OF a: $' cdata ends c
title sample.prog
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'ENTER 9 CHARACTER: $',10,13
msg2 db 10,13,'NUMBER OF a: $'
cdata ends
ccode segment para 'code'
assume cs:ccode,ds:cdata,ss:cstack
main:
mov ax,cdata
mov ds,ax
mov ah,09h
lea dx,msg1
int 21h
mov cl,0
mov bl,30h
input:
mov ah,01
int 21h
inc cl
cmp al,61h
je incre
cmp cl,9
je incre
jmp input
incre:
inc bl
cmp cl,9
jne input
mov ah,09h
lea dx,msg2
int 21h
mov ah,02h
mov dh,bl
int 21h
mov ah, 4ch
int 21h
ccode ends
end main
输入9个字符:aaadfasfga: 输入9个字符:fffffffff
a: 输入9个字符:dasdawdaf
a的数量:¨您的代码中有一个输入错误:
mov ah,02h
mov dh,bl <-- HERE
int 21h
这应该改为:
cmp al,61h
je incre
cmp cl,9
je done ; We're done. Jump past the end of the loop without incrementing bl
jmp input
incre:
inc bl
cmp cl,9
jne input
done:
或者更简单:
cmp al,61h
jne no_inc
inc bl
no_inc:
cmp cl,9
jne input
mov-dh,bl
RONG-你想要dl
!
cmp al,61h
jne no_inc
inc bl
no_inc:
cmp cl,9
jne input