Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій із Системного програмування та...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
786.31 Кб
Скачать

1. Подання даних арифметичні операції

Тут розглядається машинне подання цілих чисел, рядків й адрес. Подання двоїчно-десяткових чисел, використовуваних досить рідко, не розглядається. Що стосується речовинних чисел, то в ПК немає команд речовинної арифметики (операції над цими числами реалізуються програмним шляхом або виконуються співпроцесором) і тому немає стандартного подання речовинних чисел. Крім того, розглядаються деякі особливості виконання арифметичних операцій.

Шістнадцятирічні числа записуються з буквою h на кінці, двійкові числа - з буквою b (так прийняте в MASM).

Подання цілих чисел. У загальному випадку під ціле число можна відвести будь-яке число байтів, однак система команд ПК підтримує тільки числа розміром у байт й слово й частково підтримує числа розміром у подвійне слово. Саме ці формати й будуть розглянуті.

У ПК робиться розходження між цілими числами без знака (невід’ємними) і зі знаком. Це порозумівається тим, що в осередках одного й того ж розміру можна представити більший діапазон без знакових чисел, чим ненегативних знакових чисел, і якщо відомо заздалегідь, що деяка числова величина є ненегативної, те вигідніше розглядувати її як беззнакову, чим як знакову.

2. Цілі числа без знака

Ці числа можуть бути представлені у вигляді байта, слова або подвійного слова - залежно від їхнього розміру. У вигляді байта представляються цілі від 0 до 255 (=2^8-1), у вигляді слова - цілі від 0 до 65535 (=2^16-1), в виді подвійного слова - цілі від 0 до 4 294 967 295 (=2^32-1). Числа записуються у двійковій системі числення, займаючи всі розряди осередку.

Наприклад, число 130 записується у вигляді байта 10000010b (82h).

Числа розміром у слово зберігаються в пам'яті в "переверненому" виді: молодші (праві) 8 бітів числа розміщаються в першому байті слова, а старші 8 бітів - у другому байті (в 16-ричной системі: дві праві цифри - у першому байті, дві ліві цифри - у другому байті).

Наприклад, число 130 (=0082h) у вигляді слова зберігається в пам'яті так:

-і-і-і-і-і-

| 82 | 00 |

-і-і-і-і-і-

(Відзначимо, однак, що в регістрах числа зберігаються в нормальному виді:

-і-і-і-і-і-

AX | 00 | 82 |

-і-і-і-і-і-

AH AL )

"Перевернене" подання використається й при зберіганні в пам'яті цілих чисел розміром у подвійне слово: у першому його байті розміщаються молодші 8 бітів числа, у другому байті - попередні 8 бітів і т.д. Наприклад, число 12345678h зберігається в пам'яті так:

-і-і-і-і-і-і-і-і-і-і-

| 78 | 56 | 34 | 12 |

-і-і-і-і-і-і-і-і-і-і-

Інакше кажучи, у першому слові подвійного слова розміщаються молодші(праві) 16 бітів числа, а в другому слові - старші 16 бітів, причому у кожному із цих двох слів у свою чергу використається "перевернене" подання.

Таке незвичайне подання чисел порозумівається тим, що в перших моделях ПК за раз можна було вважати з пам'яті тільки один байт і що всі арифметичні операції над багатозначними числами починаються з дій над молодшими цифрами, тому з пам'яті в першу чергу треба зчитувати молодші цифри, якщо відразу не можна вважати всі цифри. З огляду на це, у перших ПК і стали розміщати молодші цифри числа перед старшими цифрами, а заради наступності таке подання чисел зберегли в

наступних моделях ПК. Звичайно, "перевернене" подання незручно для людей, однак при використанні мови асемблера ця незручність не почувається: в MASM всі числа записуються в нормальному, неперевернутому виді.