ASCII và hệ thập lục phân
Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 13 trên 45.
Máy tính chỉ hiểu các con số. Vậy chúng lưu trữ các chữ cái như 'A', 'b' hoặc '?' bằng cách nào?
Đáp án là ASCII (American Standard Code for Information Interchange). ASCII là một bảng gán một số cho mỗi ký tự.
Cách ASCII hoạt động:
| Ký tự | Số ASCII (thập phân) | Số ASCII (thập lục phân) |
|---|---|---|
| 'A' | 65 | 0x41 |
| 'B' | 66 | 0x42 |
| 'C' | 67 | 0x43 |
| 'a' | 97 | 0x61 |
| 'b' | 98 | 0x62 |
| '0' | 48 | 0x30 |
| '1' | 49 | 0x31 |
| ' ' (dấu cách) | 32 | 0x20 |
| '\n' (xuống dòng) | 10 | 0x0A |
| '\0' (ký tự null) | 0 | 0x00 |
Các giá trị ASCII quan trọng cần ghi nhớ khi lập trình hợp ngữ:
| Ký tự | Hệ thập lục phân | Lý do cần biết |
|---|---|---|
| 'A' | 0x41 | Các chữ cái viết hoa bắt đầu từ đây |
| 'a' | 0x61 | Các chữ cái viết thường bắt đầu từ đây |
| '0' | 0x30 | Các chữ số bắt đầu từ đây |
| Dấu cách | 0x20 | Dùng để phân tách các từ |
Dòng mới (\n) | 0x0A | Chuyển sang dòng tiếp theo |
Ký tự null (\0) | 0x00 | Ký hiệu kết thúc chuỗi |
Hãy chú ý đến quy luật:
| Quy luật | Ví dụ |
|---|---|
| Các chữ cái viết hoa từ A đến Z nằm liên tiếp nhau | 'A'=65, 'B'=66, 'C'=67... |
| Các chữ cái viết thường từ a đến z nằm liên tiếp nhau | 'a'=97, 'b'=98, 'c'=99... |
| Các chữ số từ 0 đến 9 nằm liên tiếp nhau | '0'=48, '1'=49, '2'=50... |
| Chữ thường = chữ hoa + 32 | 'a' (97) = 'A' (65) + 32 |
Cách chuỗi được lưu trong bộ nhớ:
Từ "Hi" kèm ký tự xuống dòng được lưu như sau:
| Ký tự | Hệ thập lục phân | Nhị phân |
|---|---|---|
| 'H' | 0x48 | 01001000 |
| 'i' | 0x69 | 01101001 |
| '\n' | 0x0A | 00001010 |
Trong hợp ngữ, bạn viết như sau: db 'Hi', 0x0A
Tại sao bạn cần biết điều này khi học hợp ngữ:
Khi định nghĩa một chuỗi (string) trong data.asm, bạn lưu các mã ASCII trong bộ nhớ. Khi in ra một chuỗi, hệ điều hành đọc các mã ASCII đó và hiển thị những ký tự tương ứng.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Playground Assembly
Tra mã của ký tự bất kỳ: Công cụ chuyển đổi ASCII