锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

汇编:统计字符串内各种字符的数目

时间:2024-05-10 01:37:10

;对这个题目进一步改造:
;3_7 用户输入一个由数字‘0’~‘9’英文大写字母‘A’~‘Z’;以及英文小写字母‘a’~‘z’组成的ASCII 字符串,
;字符串的结束符为 CR(即回车符,其ASCII 码为0DH),字符串总长度不超过256 个。
;要求统计传送的字符总数以及其中各种字符的数目

DATA SEGME
SUM 00H ;总数
CTAL DB 00h ;大写字母个数 计数器
small db 00h ;小写字母个数 计数器
num db 00h ;数字个数 计数器
result db 'The amout all of the zifu in this string is ','$'
result1 db 'The amout of the number in the string is ','$'
result2 db 'The amout of the big capital is ','$'
result3 db 'The amout of the small capital is ','$'
string db 256 dup (?) ;保存输入的字符
kongzi DB 0DH,0AH,'$' ;换行使用
buffer DB 256 DUP(0) ;目标内存
results DB 256 DUP(?)
tital db 'Please input the string you want to be done : ',0dh,0ah,'$'
tip db 'Do you want to have a try again (if yes: "y" ,else "n"): ','$'
tip1 db 'welcome to use the program again ,the original is WQ ','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ART: MOV AX,DATA
MOV DS,AX
lea dx,tital
mov ah,09h
int 21h
mov di,0
again:
mov ah,01h
int 21h
mov string[di],al
inc di
cmp al,0dh
jnz again
cld ;将方向标志位置零 串操作递增
main: lods string ;字符串装入指令 把字符串一个个装入al
INC SUM
CMP AL,0DH
JE DE
CMP AL,30H
Jb main
cmp al,41h
jb k1
CMP AL,61H
Jb k2
JMP main
DONE:
lea dx,result ;输出SUM
mov ah,09h
int 21h
DEC SUM
MOV AX,0
MOV AL,SUM
MOV BL,10
DIV BL
MOV DX,AX
ADD DX,3020H ;为什么要加20呢?
cmp dl,30h
jnz wuling
mov dl,20h
wuling:
MOV AH,02h
INT 21H
MOV DL,DH ;这是在干什么?
MOV AH,2h ;2号调用每次只输出一个字符,即dl
INT 21H
LEA DX,kongzi ;换行
MOV AH,09H
INT 21H



;输出num
mov ax,0
mov al,num
mov bl,10
div bl
mov dx,ax
add dx,3030h
cmp dl,30h
jne wuling3
mov dl,32
wuling3:
push dx
lea dx,result1
mov ah,09h
int 21h
pop dx
mov ah,02h
int 21h
mov dl,dh
mov ah,02h
int 21h
LEA DX,kongzi
MOV AH,09H
INT 21H
;输出CAPITAL
MOV AX,0
MOV AL,CAPITAL
sub al,04h
MOV BL,10
DIV BL
MOV DX,AX
ADD DX,3030H
CMP Dl,30H
JNE WULING2
MOV Dl,32
WULING2:push dx
lea dx,result2
mov ah,09h
int 21h
pop dx
MOV AH,02h
INT 21H
MOV DL,DH
MOV AH,2
INT 21H

mov al,sum
sub al,capital
add al,04h
sub al,num
mov small,al

;输出small capital
MOV AX,0
MOV AL,small
MOV BL,10
DIV BL
MOV DX,AX
ADD DX,3020H
CMP Dl,30H
JNE WULING4
MOV Dl,32 ;空格

WULING4: push dx
LEA DX,kongzi
MOV AH,09H
INT 21H
lea dx,result3
mov ah,09h
int 21h
pop dx


MOV AH,02h
INT 21H
MOV DL,DH
MOV AH,2
INT 21H

lea dx,kongzi
mov ah,09h
int 21h
lea dx,tip
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,'y'
je lop

lea dx,kongzi
mov ah,09h
int 21h
lea dx,tip1
mov ah,09h
int 21h
over:
MOV AH,4CH
INT 21H
k2:inc capital
jmp main
k1: inc num
jmp main
lop:
lea dx,kongzi
mov ah,09h
int 21h
jmp start

CODE ENDS
END START


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章