ASCII 与十六进制
本课属于 Coddy Assembly 学习旅程的“基础知识”单元。第 13 课,共 45 课。
计算机只能理解数字。那么,它们是如何存储像 'A'、'b' 或 '?' 这样的字母的呢?
答案是 ASCII(美国信息交换标准代码)。ASCII 是一张为每个字符分配一个数字的表。
ASCII 的工作原理:
| 字符 | ASCII 数字(十进制) | ASCII 数字(十六进制) |
|---|---|---|
| 'A' | 65 | 0x41 |
| 'B' | 66 | 0x42 |
| 'C' | 67 | 0x43 |
| 'a' | 97 | 0x61 |
| 'b' | 98 | 0x62 |
| '0' | 48 | 0x30 |
| '1' | 49 | 0x31 |
| ' '(空格) | 32 | 0x20 |
| '\n'(换行符) | 10 | 0x0A |
| '\0'(空值) | 0 | 0x00 |
需要记住的重要 ASCII 值:
| 字符 | 十六进制 | 用途 |
|---|---|---|
| 'A' | 0x41 | 大写字母从这里开始 |
| 'a' | 0x61 | 小写字母从这里开始 |
| '0' | 0x30 | 数字从这里开始 |
| 空格 | 0x20 | 用于分隔单词 |
换行符(\n) | 0x0A | 移动到下一行 |
空字符(\0) | 0x00 | 字符串结束标记 |
注意这个规律:
| 规律 | 示例 |
|---|---|
| 大写字母 A-Z 连续排列 | 'A'=65, 'B'=66, 'C'=67... |
| 小写字母 a-z 连续排列 | 'a'=97, 'b'=98, 'c'=99... |
| 数字 0-9 连续排列 | '0'=48, '1'=49, '2'=50... |
| 小写字母 = 大写字母 + 32 | 'a' (97) = 'A' (65) + 32 |
字符串在内存中的存储方式:
带换行符的单词“Hi”存储如下:
| 字符 | 十六进制 | 二进制 |
|---|---|---|
| 'H' | 0x48 | 01001000 |
| 'i' | 0x69 | 01101001 |
| '\n' | 0x0A | 00001010 |
在汇编语言中,你可以这样写:db 'Hi', 0x0A
为什么汇编需要用到这个:
在 data.asm 中定义字符串时,你是在内存中存储 ASCII 码。打印字符串时,操作系统会读取这些 ASCII 码,并显示对应的字符。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Assembly 在线编辑器
查询任意字符的编码: ASCII 转换器