IVY DOM


 

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
优质美国空间-老薛主机|IVY DOM|Flowline|

联系我

RSS




一月 22, 2013

[原创]关于ASCII码字母排列方式的研究

关于ASCII码字母排列方式的研究

               ——即为什么ASCII码要这么排列

心情不好请假回家了,24号期末考试,懒得复习就学了点汇编语言,懂了点底层原理,以下是我的肤浅认知.

*****************这里是红果果的乱入君*****************

这事我最近的收入…虽然很少…但我很知足了(贪心鬼的什么去死吧!)

*****************这里是红果果的乱入君*****************

首先,让我们摘取一段码表进行观察:

  大写          十六进制          二进制                    小写          十六进制          二进制

   A                 41               01000001                a                  61             01100001

   B                 42               01000010                b                  62             01100010

   C                 43               01000011                c                   63             01100011

先观察下十六进制:(以AB,ab为例)

A:41 a:61

B:42 b:62

很明显,小写字母的ASCII码比大写字母的ASCII码大20H(H=HEX,用来表示十六进制)

这样一来,将’A’的ASCII码+20H即得到’a’

再观察下二进制:(以AB,ab为例)

A:01000001 a:01100001

B:01000010 b:01100010

就此,我们可以看到从右往左数第五位(从0开始)不一样,其他各位都一样

其中:大写字母的ASCII码第五位为0,小写字母的ASCII码第五位为1

看到这里,你或许会问,这个规律有什么用呢?

答案是:用于大小写的转换.

①在十六进制中发现的规律可以这样:

判断某字符是大写字母还是小写字母,然后进行+20H或-20H处理

②而对于二进制中的规律则更为简单

不过,再次之前还要说明下汇编中的and,or指令(本文的目的是让所有有过编程经验的人都能看懂)

(1)and 与

 mov ah,00001110B

如果我要把第三位设为0,则:

 and ah,00000110B

(2)or 或

 mov ah,11111110B

如果我要把第0位设为1,则:

 or ah,11111111B

说到这里你有没有想到些什么?

没错,就是要用and or替换大写或小写字母中ASCII码的位,即替换第五位

这样连判断都省了,只需循环5次.

通过and or指令我们可以得出通用的将小写转换为大写的二进制代码为:

11011111B(and)

将大写转换为小写的二进制代码为:

00100000B(or)

部分代码段如下:

assume cs;codesg,ds:datasg

datasg segment

db’FuCkU’

datasg ends

start:mov ax,datasg

mov ds,ax

mov bx,0 ;指向第一个字母

mov cx,5 ;循环次数5,因为fucku是5个字符

s:mov al.[bx] ;取字符

and al,11011111B ;换位(and)

mov [bx],al ;写回bx

inc bx

loop s

codesg ends

end start

总结原因:

我想当初美国人制定这么一套规则有一部分原因就是转换大小写比较方便吧….

学习总结:

学了汇编,才知道计算机为什么叫计算机!你会发现这一切很有意思→不断把数据从一个寄存器移到另一个寄存器的过程.

原稿

相关文章

返回
  1. 先坐沙发 再看内容~

  2. 虽然不懂ASM 不过带上了注释也看懂了。。。。

  3. 这次我是连板凳都没了

    • 一月 31st, 2013

    可以去看C语言的位操作,& >> << | ^ ~ ,有相关的内容

  4. 学了汇编,才知道计算机为什么叫计算机!你会发现这一切很有意思→不断把数据从一个寄存器移到另一个寄存器的过程.

  1. 暂无 Trackback

You must be logged in to post a comment.