汇编语言输入字符串并显示数字字母个数
时间: 2023-07-10 17:21:17 浏览: 143
以下是汇编语言代码,用于输入字符串并显示其中的数字和字母的个数:
```
.model small
.stack 100h
.data
strInput db 100,?,100 dup('$') ;定义一个最大长度为100的字符串
strOutput db 'The input string contains ',?, ' letters and ',?, ' numbers.', '$'
.code
mov ax, @data
mov ds, ax
;输出提示信息
mov ah, 09h
lea dx, msg1
int 21h
;读取输入的字符串
mov ah, 0ah
lea dx, strInput
int 21h
;计算字母和数字的个数
xor bx, bx ;bx用来计数字母的个数
xor cx, cx ;cx用来计数数字的个数
mov si, offset strInput+2 ;si指向字符串的第一个字符
mov cl, [strInput+1] ;获取字符串的长度
mov ch, 0 ;ch清零
cld ;df标志位清零,表示字符串的移动方向为正向
mov bl, 0 ;bl计数器清零
mov bh, 0 ;bh计数器清零
mov dl, '0' ;dl为数字0的ASCII码
L1:
lodsb ;从si指向的内存地址读取一个字节到al中,并将si指向下一个字节
cmp al, '0' ;比较al和字符'0'
jb L2 ;如果al小于'0',跳转到L2
cmp al, '9' ;比较al和字符'9'
ja L3 ;如果al大于'9',跳转到L3
inc cx ;字符个数加1
cmp al, dl ;比较al和数字0的ASCII码
jb L4 ;如果al小于数字0的ASCII码,跳转到L4
cmp al, '9' ;比较al和字符'9'
ja L4 ;如果al大于字符'9',跳转到L4
inc bx ;数字个数加1
jmp L4
L2:
inc ch ;ch计数器加1
jmp L4
L3:
inc bh ;bh计数器加1
L4:
loop L1 ;循环处理字符串中的所有字符
;将字母和数字个数转化为字符串
mov al, bl
add al, '0'
mov [strOutput+21], al
mov al, bh
add al, '0'
mov [strOutput+25], al
mov al, cl
add al, '0'
mov [strOutput+27], al
mov al, ch
add al, '0'
mov [strOutput+31], al
;输出结果
mov ah, 09h
lea dx, strOutput
int 21h
mov ah, 4ch
int 21h
msg1 db 'Please enter a string:', '$'
end
```
以上代码中,使用了lodsb指令将字符串中的一个字符读取到al寄存器中,并使用loop指令循环处理字符串中的所有字符。在处理过程中,使用了计数器bx和cx分别计数数字和字母的个数,并且使用了ASCII码来判断一个字符是否为数字或字母。最后,将计数器中的数字转换为字符并输出结果。
阅读全文