汇编统计题,不知道哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/17 06:00:33
统计数字和字母个数,我觉得我写的没错啊,但显示出来总有问题,谁帮我看看
data segment
b db 100 dup(?),'$'
m1 db 'input a string:$'
m2 db 'numbers of digital:$';数字字符个数
m3 db 'numbers of word';字母字符个数
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov di,offset b

mov dx,offset m1
mov ah,09h
int 21h
call crif

o1:
mov ah,01h
int 21h
mov [di],al
inc di
cmp al,0dh
jnz o1;回车就结束输入
d2:
mov al,[di]
dec di
cmp al,'0'
jl d4;小于就转移到d3
cmp al,'9'
jg d4;大于就转移到d3
inc bl;计数器
d4:
cmp al,'`';开始的时候必须先输入`这样才能开始计数
jnz d2
mov dx,offset m2
mov ah,09h
int 21h
call crif

mov ah,02h
mov dl,bl
add dl,30h
int 21h
call crif
xor bl,bl

b2:
mov al,[di]
inc di
cmp al,'a'
jl b3;小于就转移到d4

data segment
b db 100,0,100 dup(?),'$'
m1 db 'input a string:$'
m2 db 'numbers of digital(hex):$';数字字符个数
m3 db 'numbers of word(hex):$';字母字符个数
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
MOV ES,AX
mov dx,offset m1
mov ah,09h
int 21h
call crif
mov dx,offset b
mov ah,10
int 21h
mov di,offset B
INC DI
MOV CL,[DI]
MOV CH,0
XOR BX,BX
nextcmp:INC di
mov al,[di]
cmp al,'0'
jl d4
cmp al,'9'
jg d4
inc bl;计数器
AG:LOOP nextcmp
JMP DOIT
d4:add al,20h
cmp al,'a'
jl AG
cmp al,'z'
jg AG
inc bh
jmp AG
DOIT:PUSH BX
mov dx,offset m2
mov ah,09h
int 21h
POP BX
mov al,bl
call disp8
PUSH BX
call crif
mov dx,offset m3