用or和and指令转换大写字母和小写字母

用or和and指令转换大写字母和小写字母

我们如果去观察A、B、C、D、E、F和a、b、c、d、e、f 这些字母的二进制表示形式为

A:01000001 a:01100001
B:01000010 b:01100010
C:01000011 c:01100011
D:01000100 d:01100100
E:01000101 e:01100101
F:01000110 f:01100110

我们通过观察会发现其实大写字母和小写字母就是二进制处的从右往左数第五位的差异,大写字母第五位为0,而小写字母第五位为1

代码如下所示

assume cs:codesg,ds:datasg

datasg segment
    db 'BaSiC'
    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

        s: mov al,[bx]

           and al,11011111B  ;将al中的ascii码的第五个位置变成了0,就变为大写字母

           mov [bx],al ;重新进行赋值

           inc bx    ; (bx)加1 也就是让ds:bx指向下一个字母

           loop s

           mov bx,5  ;设置bx = 5 ,ds:bx指向iNfOrMaTiOn的第一个字符
           mov cx,11

        s0:mov al,[bx]
           or al,00100000B ;将al中的ASCII码的第5位置设置为1,变为小写字母
           mov [bx],al  ;赋值给ds:bx
           inc bx
           loop s0

           mov ax,4c00h
           int 21h

codesg ends
end start

这些小写字母和大写字母是怎么显示出来的?

其实当我们按下键盘a的时候,我们会看到屏幕上会有a显示出来,其实我们可以把这个过程可以是当我们按下a的时候,这个按键的信息就会被送入到计算机当中,计算机会利用ASCII的编码规则,对它进行编码,然后把它转换为61H给存储在内存的指定的空间,然后文本编辑软件就可以从内存中取出61H,然后把这个值给送到显卡上的显存当中,工作在文本模式下的显卡,就会用ASCII码的规则去解释显存当中的内容,显卡驱动显示器就会将字符”a”给画到屏幕上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值