ASCII и Hex
Часть раздела Основы путешествия по Assembly на Coddy. Урок 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 и отображает соответствующие символы.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-64Потренируйтесь самостоятельно: Песочница Assembly