汇编语言之大小写转换问题

在这里插入图片描述

打开记事本——》alt+右边的小键盘(可以查看ASCII对应的字符)
eg:打开记事本——》按住alt键,并在右边小键盘打97,松开alt,可以看到出现a——》得知97对应的字符为a

上图中绿色的横行和纵行组成对应字符的十六进制
在这里插入图片描述
通过对比大写字母的ASCII码的值比小写字母小20H : ASCII(a)-20H=ASCII(A)
通过观察还可以得出大小写的差距字体现在二进制的第五位

案例:编写一段代码,将datasg中第一个字符串全转化为大写,第二个字符串全转化为小写
在这里插入图片描述

assume cs:codesg,ds:datasg
datasg segment
	db 'BaSiC'   ;将第一个字符串全部转换为大写
	;注意单引号(表明数据是以字符的形式给出的)define byte
	db 'iNfOrMaTiOn';将第二个字符串全部转换为小写
datasg ends

codesg segment
start:	mov ax,datasg
	mov ds,ax ;设置ds指向datasg段
	
	mov bx,0 ;设置(bx)=0,ds:bx指向 'BaSiC'的第一个字母
	mov cx,5 ;设置循环次数5,因为 'BaSiC'有五个字母

upLetter:mov al,ds:[bx] ;将ASCII码从ds:bx所指向的单元中取出
	  and al,11011111B ;将al中的ASCII的第5位为0,变成大写字母
	  mov ds:[bx],al ;将转变后的ASCII码写回原单元
	  inc bx	;bx+1,ds:bx指向下一个字母
	  loop upLetter

	mov bx,5 ;设置bx=5,ds:bx指向 'iNfOrMaTiOn'的第一个字母
	mov cx,11 ;循环11次,因为 'iNfOrMaTiOn'有11个字母

downLetter:mov al,ds:[bx]
	   or al,00100000B ;将al中的ASCII码的第五位置变成1,变为小写字母
	   mov [bx],al
	   inc bx
	   loop downLetter

	mov ax,ac00h
	int 21h

codesg ends
end start
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值