关于ASCII码的一些理解
- 本文参考的是王爽的汇编语言这本书,如果文中叙述有什么不妥之处请批评指正。
- ASCII码实际上就是两个集合的对应关系。因为人类认知描述一件事物的时候往往是根据一些符号,比如大象(elephant),狮子(lion),不管是英文还是中文,本质上就是人们约定俗成的一些符号。但是计算机并没有意识,也就是不能对这些符号做相应的理解。它只能操作二进制数字,所以ASCII码就是将计算机理解的二进制数字和人类所理解的字符产生联系。采取的方法是用计算机的一个Byte单元所能表示的正整数的个数与一些字符做对应。
- 因为一个Byte总共有8个位,这8个位可以表示的数应该是2的8次方,但是也就是256个数,但是ASCII码所采用的是正整数,因为正整数的最前面那个位应该为0,这样就少了一个位,所以最终一个Byte所对应的就是128个字符。但是数字是从0开始的所以就是0到127,可以查看ASCII码的表看到这样一种对应关系。
- 比如通过下面的一个汇编代码来描述字符和ASCII码的对应关系。
Data segment
db ‘unIX’
db ‘FoRK’
data ends
code segment
start: mov al,’a’
mov bl,’b’
mov ax,4c00h
int 21h
code ends
end start
- 上面汇编程序就是建立了一个Data的段,这个段中的具体的字符也并不是计算机中的真实存储的样子,db ‘unIX’实际上就是db 75H,6EH,49H,58H, db ‘FoRK’相当于db 66H,6FH,52H,4BH。当然,这里为了书写方便,采用的是16进制的数来表示。同理, mov al,’a’相当于mov al,61H, mov bl,’b’,相当于mov bl,62H,这里用到ASCII码就能想到计算机是如何将字符进行存储的。