《汇编语言》-王爽 实验11

7 篇文章 0 订阅
6 篇文章 0 订阅

题:编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。
名称: letterc
功能: 将以0结尾的字符串中的小写字母转变成大写字母。
参数: ds:si指向字符串首地址。

如题,任意字符,就得考虑一些其他字符,这就需要划分一个范围,就是取出的字符应该在小写字母的ASCII码范围内。
这就可以用cmp指令和条件转移指令。

assume cs:code,ds:data
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
			call far ptr letterc	;调用子程序.功能:将以0结尾的字符串中小写字母转变成大写字母。
			
			mov ax,4c00H
			int 21H
			
		comment !
		子程序:将以0结尾的字符串中小写字母转变成你大写字母。
		!
letterc:	push si
			push di
			push ax
			push bx
			push dx
			push cx
			
			mov dl,61H	;小写字母的最小字母a的16进制。
			mov dh,7AH	;小写字母最大字母z的16进制。
		comment !
		标号b。作用:1.取字符 
					2.判断是否最后一个字符	
					3.判断取出的字符是否在是大写字母而不是其他字符
					4.如果是大写字母,则转换为小写覆盖原处
					4.如果是其他字符则重新跳转到b标号.循环1步骤
		!
b	:		mov al,ds:[si]	;将字符串送入到al中。
			mov ah,0
			mov cx,ax		;将ax中的值送入到cx,用来判断是否取到最后一个字符。
			jcxz r 			;如果cx中的值等于0的话,跳转到r标号。
			cmp al,dl		;判断al的中的字符是否大于等于 小写字母a的ascii码。
			jna a  			;如果不大于等于则跳转到标号a处。用来判断al中的是否是小写字母,而不是其他字符。
			cmp al,dh		;判断al中的字符是否小于等于 小写字母z的ascii码。
			jnb a			;如果不小于等于则跳转到a标号处。
			and al,11011111B
			mov ds:[si],al
			
		comment !
		标号a.	作用:用来指向下一个字符串。
		!
a:			inc si
			jmp b 
			
		comment !
		标号r.	作用:将原寄存器的值返回并返回程序。
		!
r:			pop cx
			pop dx
			pop bx
			pop ax
			pop di
			pop si
			
			retf

code ends
end start
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值