汇编语言
程序员文章站
2022-04-22 10:53:57
...
题目要求:
从键盘上输入一串字符到输入缓冲区,找出其中的大写字母和小写字母,并分别统计它们的个数,结果放到变量num1和num2中,要求在屏幕输出显示所有字母及变量num1和num2的值。
注意需要在屏幕输出所有字母,因此在判定字符是字母之后才可以输出,如果非字母,则不输出。
DATAS SEGMENT
msg1 db 'please input string:$'
buf DB 20 ;预定义20字节的空间
DB ? ;待输入完成后,自动获得输入的字符个数
DB 20 DUP(0)
CRLF DB 0AH, 0DH,'$'
var dw 01h
num01 db 'The num of Capital is:'
num1 db 30h,'$';保存大写字母的个数
num02 db 'The num of lowercase is:'
num2 db 30h,'$';保存小写字母的个数
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,msg1
mov ah,09h
int 21h;提示输入
LEA dx,buf ;接收字符串
mov ah,0ah;等待按键
int 21h
LEA DX, CRLF ;另取一行
MOV AH, 09H
INT 21H
mov al,buf+1
mov ah,0
mov cx,ax;循环变量=输入字符数
xor si,si
add si,02h
again:
mov al,buf[si]
cmp al,'A'
jb next;比A小直接结束本次循环
cmp al,'Z'
ja done1;比Z大判断是否是小写字母
;属于A~Z
add num1,1
;打印出来
mov dl,al
mov ah,02h
int 21h
jmp next
done1:cmp al,'a'
jb next
cmp al,'z'
ja next
add num2,1
;打印出来
mov dl,al
mov ah,02h
int 21h
next: add si,1
loop again
LEA DX, CRLF ;另取一行
MOV AH, 09H
INT 21H
LEA dx,num01
mov ah,09h
int 21h
lea dx,crlf
mov ah,09h
int 21h
lea dx,num02
mov ah,09h
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
运行结果:
上一篇: 网页设计之HTML实战(9) -- HTML 表单
下一篇: 汇编语言