ASCII и Hex
Часть раздела Основы путешествия по Assembly на Coddy — урок 13 из 45.
Компьютеры понимают только числа. Так как же они хранят такие буквы, как 'A', 'b' или '?'?
Ответ — ASCII (American Standard Code for Information Interchange). 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' (null-символ) | 0 | 0x00 |
Важные значения ASCII для запоминания в ассемблере:
| Символ | Hex | Зачем это нужно |
|---|---|---|
| '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» с символом новой строки хранится как:
| Символ | Hex | Двоичный код |
|---|---|---|
| 'H' | 0x48 | 01001000 |
| 'i' | 0x69 | 01101001 |
| '\n' | 0x0A | 00001010 |
На ассемблере это записывается так: db 'Hi', 0x0A
Зачем это нужно для ассемблера:
Когда вы определяете строку в data.asm, вы сохраняете ASCII-коды в памяти. Когда вы выводите строку, операционная система считывает эти ASCII-коды и отображает соответствующие символы.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-64