Шестнадцатеричная система счисления
Для написания программ на Ассемблере, необходимо разобраться с шестнадцатеричной системой счисления. Ничего сложного в ней нет. Мы используем в жизни десятичную систему. Уверен, что Вы все ее знаете, поэтому я постараюсь объяснить шестнадцатеричную систему, проводя аналогию с десятичной.
Итак, в десятичной системе если мы к какому-нибудь числу справа добавим нуль, то это число увеличится в 10 раз. Например: 1 х 10 = 10; 10 х 10 = 100; 100 х 10 = 1000 и т.д. В этой системе мы используем цифры от 0 до 9, т.е. десять разных цифр (собственно, поэтому она и называется десятичная).
В шестнадцатеричной системе мы используем, соответственно, шестнадцать "цифр". Я специально написал слово "цифр" в кавычках, т.к. в ней используются не только цифры. Да и в самом деле как так? Объясняю: от 0 до 9 мы считаем так же, как и в десятичной, а вот дальше будет так: A, B, C, D, E, F. Число F, как не трудно посчитать, будет равно 15 в десятичной системе (см. Таблицу 1).
Таблица 1. Десятичная и шестнадцатеричная системы счисления.
Десятичное число |
0 1 2 3 4 ... 8 9 10 11 12 13 14 15 16 17 |
Шестнадцатеричное число |
0 1 2 3 4 ... 8 9 A B C D E F 10 11 |
Десятичное число |
26 27 28 29 30 ... 158 159 160 161 162 ... 254 255 256 257 |
Шестнадцатеричное число |
1A 1B 1C 1D 1E ... 9E 9F A0 A1 A2 ... FE FF 100 101 |
Т.о., если мы к какому-нибудь числу в шестнадцатеричной системе добавим справа нуль, то это число увеличится в 16 раз.
Пример 1
- 1 х 16 = 10;
- 10 х 16 = 100;
- 100 х 16 = 1000 и т.д.
Вы смогли отличить в Примере 1 шестнадцатеричные числа от десятичных? А из этого ряда: 10, 12, 45, 64, 12, 8, 19? Это могут быть как шестнадцатеричные, так и десятичные. Для того, чтобы не было путаницы, и компьютер смог бы однозначно отличить одни числа от других, в Ассемблере принято после шестнадцатеричного числа ставить символ h или H (H - это сокращение от англ. hexadecimal (шестнадцатеричное). Для краткости его иногда называют просто Hex). А после десятичного ничего не ставить. Т.к. числа от 0 до 9 в обоих системах имеют одинаковые значения, то числа, записанные как 5 и 5h одно и тоже.
Т.о. Пример 1 (см. выше) правильнее записать шестнадцатеричные числа будет так:
- 1 х 16 = 10h;
- 10h х 16 = 100h;
- 100h х 16 = 1000h и т.д.
Либо так:
- 1h х 10h = 10h;
- 10h х 10h = 100h;
- 100h х 10h = 1000h
Для чего нужна шестнадцатеричная система - мы рассмотрим в последующих главах. А в данный момент для нашего примера программы, который будет рассмотрен ниже, нам необходимо знать о существовании шестнадцатеричных чисел.
Итак, подведем итог. Шестнадцатеричная система счисления состоит из 10 цифр (от 0 до 9) и 6 букв латинского алфавита (A, B, C, D, E, F). Если к какому-нибудь числу в шестнадцатеричной системе добавим справа нуль, то это число увеличится в 16 раз. Очень важно уяснить данную тему, так как мы будем постоянно использовать ее при написании программ.
Теперь немного о том, как я буду строить примеры на Ассемблере. Не совсем удобно приводить их сплошным текстом в книге, поэтому сперва будет идти сам код программы с пронумерованными строками, а сразу же после него - объяснения и примечания.
Примерно так:
(01)mov ah,9
(02)mov al,8
…
(15)mov dl,5Ah