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 ENDS

STACK SEGMENT stack
      DW 52 DUP(?)
TOP LABEL WORD
STACK ENDS

CODE 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 ENDP

P 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)A号功能的使用,是字节不是字,回车符也会占用一个字节
(2)一段256个字节,一个字节是存最大字节数即255,一个字节是存实际个数,剩余254个用于存字符串,其中只有253个字节用于存有效字符串,最后一个用于存回车符。

猜你喜欢

转载自blog.csdn.net/weixin_43416343/article/details/95310383