ascii码
我记得以前有个同事说过一个问题:
声明编码为utf8 和 gbk, 你怎么识别呢?
譬如美国人说我说的英语。。中国人说我说的中国话。两个人互相听不懂对方的话,有啥意义?
这里他就是没理解ASCII码。 在所有编码中ASCII码都是一样的,可以说是通用语。所以声明编码是有意义的。
utf8编码
utf8是一种可变长度字节编码方式。有的字符用1个字节表示,有的字符用2个字节表示,有的字节用3个字节表示。那么你怎么去解析呢?
有规则:
1字节 以0开头。。这里也就是ASCII码。。。所以说utf8中的ascii码 表示 和ascii码是一样的。
2字节 110xxx 10xxx
3字节 1110xxx 10xxx 10xxx
当按这个规则解析异常时,就表示解析失败。譬如解析时遇到111011011 10xxx 1110xxx 这就有问题了,第三个字节应该是10开头才对。
这种不能识别的字节,会被转成三个字节{11101111,10111111,10111101}, 也就是239,191,189
字符在8086cpu汇编中的表示
db 'xxxx'
即可, 编译器会把对应的字符转成相应的ASCII码对应的数据。如 ‘u’ 转成 75H
assume cs:code, ds:data
data segment
db 'unIX'; db = define byte, 相当于 db 75H, 6EH, 49H, 58H 谁会去记具体的ASCII码,难记也难写。
db 'foRk'
data ends
code segment
start: mov al, 'a'
mov bl, 'b'
mov ax, 4c00h
int 21h
cod ends
end start