新闻中心

EEPW首页>嵌入式系统>设计应用> 汇编:统计字符串内各种字符的数目

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

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

DATA SEGMENT
SUM DB 00H ;总数 计数器
CAPITAL 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
START: 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 DONE
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


上一页 1 2 下一页

关键词:汇编字符

评论


技术专区

关闭