请为我写一个汇编语言程序,要求从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。
时间: 2024-02-01 16:13:25 浏览: 28
以下是汇编语言程序的代码,它可以实现从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。
```
ORG 100h
START:
MOV AH, 0Ah ; 设置输入字符串的功能号
LEA DX, STR ; 将要输入的字符串的地址放入 DX 寄存器
INT 21h ; 中断调用,等待用户输入字符串
LEA SI, STR+1 ; 将字符串地址加 1,跳过开头的长度字节
XOR CX, CX ; 清零计数器
COUNT_LOOP:
LODSB ; 读入一个字符到 AL 寄存器
CMP AL, '$' ; 如果读到了字符串结束符,则跳出循环
JE COUNT_DONE
CMP AL, '0' ; 判断是否为数字
JB COUNT_INC
CMP AL, '9'
JA COUNT_INC
JMP COUNT_LOOP
COUNT_INC:
INC CX ; 计数器加 1
JMP COUNT_LOOP
COUNT_DONE:
MOV AH, 02h ; 设置输出字符的功能号
MOV DL, ' ' ; 输出一个空格
INT 21h
MOV DL, 'N' ; 输出计数结果
INT 21h
MOV DL, 'o'
INT 21h
MOV DL, 'n'
INT 21h
MOV DL, ' '
INT 21h
MOV DL, 'd'
INT 21h
MOV DL, 'i'
INT 21h
MOV DL, 'g'
INT 21h
MOV DL, 'i'
INT 21h
MOV DL, 't'
INT 21h
MOV DL, ':'
INT 21h
MOV AH, 02h
MOV DL, '0' ; 输出计数结果
ADD CL, '0' ; 将计数器中的数转换成 ASCII 码
INT 21h
MOV AH, 4Ch ; 设置退出程序的功能号
INT 21h
STR DB 0Ah, 'Enter a string: $'
```
这个程序的思路是先从键盘输入一个以$为结束符的字符串,然后逐个字符地判断是否为数字,如果不是数字则计数器加1。最后输出计数结果。
需要注意的是,这个程序在计算非数字字符的数量时,没有区分大小写字母和其他字符,因此如果输入的字符串中包含大小写字母,它们也会被计入非数字字符的数量中。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.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)