用汇编输入一行字符,分别统计出其中英文字母、数字和其他字符的个数,并显示各种统计结果。
时间: 2024-05-16 17:13:39 浏览: 17
以下是 x86 汇编代码,使用 INT 21H 系统调用实现输入和输出:
```
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB 'Enter a string: $'
MSG2 DB 'Number of characters: $'
MSG3 DB 'Number of letters: $'
MSG4 DB 'Number of digits: $'
MSG5 DB 'Number of other characters: $'
STR DB 100 DUP(?)
LETTERS DB 0
DIGITS DB 0
OTHERS DB 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; prompt user to enter a string
LEA DX, MSG1
MOV AH, 09H
INT 21H
; read the string from user
LEA DX, STR
MOV AH, 0AH
INT 21H
; count characters, letters, digits and others
MOV SI, OFFSET STR + 1
MOV CL, [SI]
MOV CH, 0
ADD SI, 2
MOV BX, 0
MOV LETTERS, 0
MOV DIGITS, 0
MOV OTHERS, 0
LOOP1:
CMP CL, 0
JE EXIT1
MOV AL, [SI]
CMP AL, '0'
JB OTHER
CMP AL, '9'
JA LETTER
INC DIGITS
JMP NEXT
LETTER:
CMP AL, 'A'
JB OTHER
CMP AL, 'Z'
JA LOWER
INC LETTERS
JMP NEXT
LOWER:
CMP AL, 'a'
JB OTHER
CMP AL, 'z'
JA OTHER
INC LETTERS
JMP NEXT
OTHER:
INC OTHERS
NEXT:
INC BX
INC SI
DEC CL
JMP LOOP1
EXIT1:
; print the number of characters
LEA DX, MSG2
MOV AH, 09H
INT 21H
MOV AX, BX
ADD AX, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
; print the number of letters
LEA DX, MSG3
MOV AH, 09H
INT 21H
MOV AX, LETTERS
ADD AX, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
; print the number of digits
LEA DX, MSG4
MOV AH, 09H
INT 21H
MOV AX, DIGITS
ADD AX, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
; print the number of other characters
LEA DX, MSG5
MOV AH, 09H
INT 21H
MOV AX, OTHERS
ADD AX, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
; exit program
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
该程序使用 0AH 系统调用读取用户输入的字符串,每次处理一个字符并根据其 ASCII 码值判断其属于哪种类型,最终输出统计结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![asm](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)