1. 从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。

从键盘输入一系列字符(以回车符结束,字符的个数不超过 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. 从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。】(1)A号功能的使用,是字节不是字,回车符也会占用一个字节
(2)一段256个字节,一个字节是存最大字节数即255,一个字节是存实际个数,剩余254个用于存字符串,其中只有253个字节用于存有效字符串,最后一个用于存回车符。

    推荐阅读