汇编语言 实验11(王爽 第三版) 编写子程序-letterc 小写字母转变成大写字母

实验11 编写子程序-letterc 小写字母转变成大写字母
编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。
名称:letterc
功能:将以0结尾的字符串中的小写字母转变成大写字母
“Beginner’s All-purpose Symbolic Instruction Code.”
参数:ds:si指向字符串首地址

assume cs:code
data segment
	db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
	
code segment
	start:	mov ax,data
			mov ds,ax
			mov si,0			;设置ds:[si]指向字符串
			
			mov ax,0b800h
			mov es,ax
			mov di,11*160
			mov cx,49
		s:	mov al,ds:[si]
			mov es:[di],al
			inc si
			add di,2
			loop s				;自己增加的代码,显示原来的字符串
			mov si,0			;恢复si
			
			call letterc
			
			mov si,0			;恢复si
			mov ax,0b800h
			mov es,ax
			mov di,13*160
			mov cx,49
		s2:	mov al,ds:[si]
			mov es:[di],al
			inc si
			add di,2
			loop s2				;自己增加的代码,显示改变后的字符串

			mov ax,4c00h
			int 21h
			
 letterc:	push cx
			pushf			;保护寄存器和标志寄存器
			
			mov cx,0
		s1:	mov cl,ds:[si]	;取一个字符
			jcxz ok			;如果取到0则转向ok结束
			cmp cl,61h		;与61h(a)比较
			jb next			;小于61h(a)的话,说明不是小写字母,不用管,跳至next转向下一个字符
			cmp cl,7ah		;不小于61h(a)的话,再与7ah(z)比较
			ja next			;如果大于7a(z),则不是小写字母,不用管,跳至next转向下一个字符
			and cl,0dfh		;如果不小于61h,且不大于7ah,说明是小写字母,会执行到这一句,将cl中的小写字母变成大写字母
			mov ds:[si],cl	;将变成大写字母的字符放回去
	
	next:	inc si			;指向下一个字符
			jmp short s1
		ok:	popf
			pop cx
			ret				;恢复寄存器并返回
	
code ends
end start

实验结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值