编制求某字符串中数字字符个数的子程序以及调用它的主程序,要求主程序中字符串从键盘接收。
时间: 2024-06-13 10:05:48 浏览: 18
以下是汇编语言中编制求某字符串中数字字符个数的子程序以及调用它的主程序的示例代码:
```
; 子程序:计算数字字符个数
; 输入:DS:SI指向字符串
; 输出:AX为数字字符个数
count_num:
xor ax, ax ; 将AX清零
mov cx, 0 ; 将CX清零
count_loop:
mov dl, [si] ; 将当前字符读入DL
cmp dl, 0 ; 判断是否到字符串结尾
je count_end
cmp dl, '0' ; 判断是否为数字字符
jb count_next
cmp dl, '9'
ja count_next
inc ax ; 数字字符个数加1
count_next:
inc si ; 指向下一个字符
jmp count_loop
count_end:
ret ; 返回主程序
; 主程序:调用计算数字字符个数的子程序
main:
mov ah, 0Ah ; 从键盘输入字符串
mov dx, offset str
int 21h
mov si, offset str+2 ; 将SI指向字符串中的内容
call count_num ; 调用子程序计算数字字符个数
; 将数字字符个数转换为字符串并输出
mov bx, 10 ; 除数为10
mov cx, 0 ; 将CX清零
convert_loop:
xor dx, dx ; 将DX清零
div bx ; AX除以BX,商在AL,余数在AH
push dx ; 将余数压入栈中
inc cx ; 位数加1
cmp ax, 0 ; 判断商是否为0
jne convert_loop
mov ah, 2 ; 输出字符串
print_loop:
pop dx ; 将栈中的余数弹出
add dl, '0' ; 将余数转换为字符
int 21h
loop print_loop ; 循环输出所有位
mov ah, 4Ch ; 返回DOS
int 21h
str db 20, 0 ; 存储输入的字符串
```