帮忙给看一下!谢谢!
;输入一个字符串判断其中字符、数字和其他字符的个数
;Define data segment
data segment
str db 100 dup(?)
num_n db 0
num_c db 0
num_o db 0
msg1 db 'Please input the string ! ',0ah,0dh,'$'
data ends
;Define code segment
code segment
assume ds:data,cs:code
main proc far
;set stack and ds
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
;main part of procdure
start:
mov ah,09h
lea dx,msg1
int 21h
lea bx,str
newchar:
mov ah,01h
int 21h
cmp al,0dh
jz output
mov [bx],al
inc bx
cmp al,7ah ;判断是否是大写字母
jnbe isChar
mov cl,1
add num_o,cl
jmp newchar
isChar:
cmp al,61h
jb isChar1
mov cl,1
add num_c,cl
jmp newchar
isChar1: ;判断是否是小写字母
cmp al,5ah
jnbe isChar2
mov cl,1
add num_o,cl
jmp newchar
isChar2:
cmp al,61h
jb isNum
mov cl,1
add num_c,cl
jmp newchar
isNum: ;判断是否是数字
cmp al,39h
jbe isNum1
mov cl,1
add num_o,cl
jmp newchar
isNum1:
cmp al,30h
jb isOther
mov cl,1
add num_n,cl
jmp newchar
isOther:
mov cl,1
add num_o,cl
jmp newchar
output: ;输出个数
mov ah,02h
mov dl,num_n
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_c
add dl,30h
int 21h
call CRLF
mov ah,02h
mov dl,num_o
add dl,30h
int 21h
call CRLF
ret
main endp
CRLF proc near ;输出回车换行
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
CRLF endp
code ends
end
----------------------------------------------------
不知道那错了??????