从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。
DATA SEGMENT
BUFF DB 255,?,255 DUP('$')
NUM DB ?;
字符串中数字个数
OTHER DB ?;
非数字字符的个数
STRING DB 0DH,0AH,24H
STRING1 DB 'DIGIT:$'
STRING2 DB 'OTHER LETTER:$'
DATA ENDSSTACK SEGMENT stack
DW 52 DUP(?)
TOP LABEL WORD
STACK ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC FAR
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
MOV AX,DATA
MOV DS,AX
LEA DX,BUFF
MOV AH,0AH;
字符串输入
INT 21H
LEA SI,BUFF
INC SI
MOV CX,0
MOV CL,[SI]
PUSH CX
INC SI
MOV BX,0
CLD
L1:LODSB
CMP AL,30H
JB L2
CMP AL,39H
JA L2
INC BX
L2:LOOP L1
MOV NUM,BL;
字符串中数字个数
POP CX
SUB CX,BX
MOV OTHER,CL;
非数字字符的个数
LEA DX,STRING
MOV AH,9
INT 21H
LEA DX,STRING1
MOV AH,9
INT 21H
MOV AX,0
MOV AL,NUM
CALL P
LEA DX,STRING
MOV AH,9
INT 21H
LEA DX,STRING2
MOV AH,9
INT 21H
MOV AX,0
MOV AL,OTHER
CALL P
MOV AH,4CH
INT 21H
MAIN ENDPP PROC NEAR
MOV CX,0
MOV SI,10
L3:XOR DX,DX
DIV SI
PUSH DX
INC CX
CMP AX,0
JE L4
JMP L3
L4:POP DX
ADD DL,30H
MOV AH,2
INT 21H
LOOP L4
RET
P ENDP
CODE ENDS
END MAIN
运行结果
文章图片
#### 注意知识点: 【1. 从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。】(1)A号功能的使用,是字节不是字,回车符也会占用一个字节
(2)一段256个字节,一个字节是存最大字节数即255,一个字节是存实际个数,剩余254个用于存字符串,其中只有253个字节用于存有效字符串,最后一个用于存回车符。
推荐阅读
- 设有 10 个学生的成绩分别是 76,69,84,90,73,88,99,63,100 和 80 分。统计 60-69分 ,70-79分,80-89分,90-99分 和 100 分的人数。
- 试编制一个程序,把Ax中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中