键盘输入数字、大写字母、小写字母的混合串(以回车结束,100个以内),将其中的小写字母转换为大写字母后显示到CRT上

键盘输入数字、大写字母、小写字母的混合串(以回车结束,100个以内),将其中的小写字母转换为大写字母后显示到CRT上
(扩展:并统计其中其中数字、大写字母、小写字母的的个数,显示出来)

data segment
     new db "please input a string:",0dh,0ah,'$'
	 num db 0dh,0ah,"the number of num is:$"
	 cap db 0dh,0ah,"the number of cap is:$"
	 lower db 0dh,0ah,"the number of lower is:$"
	 sum_num db 0
	 sum_cap db 0
	 sum_lower db 0
	 buf db 100
	     db ?
		 db 100 dup(0)
     crlf db 0aH,0dH,"$";回车换行
data ends
code segment
     assume cs:code,ds:data,es:data
start:
     mov ax,data
     mov ds,ax
     mov dx,offset new
     mov ah,9
     int 21h
     mov dx,offset buf ;输入一串字符串
     mov ah,10
     int 21h
	 lea dx, crlf                                   
     mov ah, 09h							 
     int 21h
	 
	 mov bx,offset buf+2;bx存放字符第一个编译地址
	 mov cl,buf+1;循环次数为字符长度


l:   mov al,[bx];将bx偏移地址存储的值送到al
     cmp al,61h;61h-7ah
	 jb c
	 cmp al,7ah
	 ja c
	 sub al,20h;20得到大写字母
	 mov dl,al
	 mov ah,2
	 int 21h
	 inc sum_lower;小写字母个数加1
	 jmp tram
c:   
     cmp al,41h;41h-5ah
	 jb n
	 cmp al,5ah
	 ja n
	 inc sum_cap;大写字母个数加1
	 jmp tram
n:    
     inc sum_num;数字个数加1
tram:
     inc bx
     dec cl
	 jnz l;不等于0跳转回l
	 
	 ;输出统计个数
	mov dx, offset num
	mov ah, 9
	int 21h
	mov al,sum_num
	call B_TO_D ;
 
	mov dx, offset cap
	mov ah, 9
	int 21h
	mov al,sum_cap
	call B_TO_D
 
	mov dx, offset lower
	mov ah, 9
	int 21h
	mov al,sum_lower
	call B_TO_D
	jmp exit

    ;位二进制转十进制子程序
B_TO_D PROC NEAR;AL中要转换的二进制数
	AND AH,0 ;ah存放余数,初始化为0
	MOV BL,100
	DIV BL ;ax/100得到百位数,存放al中
	MOV CL,AH ;余数暂存于cl中
	ADD AL,30H ;输出百位数
	MOV DL,AL
	MOV AH,02H
	INT 21H
	MOV AL,CL 
	MOV BL,10
	AND AH,0
	DIV BL ;ax/10得到十位数
	ADD AL,30H ;输出十位数
	MOV DL,AL
	MOV CL,AH
	MOV AH,02H
	INT 21H
	MOV AL,CL ;输出个位数
	ADD AL,30H
	MOV DL,AL
	MOV AH,02H
	INT 21H
	RET
B_TO_D ENDP
 
exit:
	mov ah, 4ch
	int 21h
code ends
	end start

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nabobess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值