汇编语言

题目要求:
从键盘上输入一串字符到输入缓冲区,找出其中的大写字母和小写字母,并分别统计它们的个数,结果放到变量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

运行结果:
运行结果

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值