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

Команди додавання чисел із знаком, такіж як і без знаку. Додаткові числа подаються у двійковому коді, а від’ємні – у додатковому. При додаванні таких чисел можлива ситуація переповнення (встановлення прапора of в 1) при переносі:

o із 14-го розряду (для позитивних);

o із 15-го розряду (для негативних).

      1. Віднімання двійкових чисел без знаку

Після команд віднімання чисел без знаку необхідно аналізувати стан прапору cf. Якщо він встановлений в 1, то це говорить про те, що є позика із старшого розряду, і результат отриманий у додатковому коді. Врахування таких ситуацій повинен виконувати програміст. До команд віднімання відносяться:

o dec операнд – зменшення операнда на 1;

o sub операнд_1, операнд_2 – команда віднімання, що працює по принципу операнд_1=операнд_1-операнд_2;

o sbb операнд_1, операнд_2 – команда віднімання з врахуванням позики (прапор cf):

операнд_1=операнд_1-операнд_2 – значення_cf.

Для перетворення результату у додатковому коді до нормального виду використовується команда neg.

      1. Віднімання двійкових чисел із знаком

При відніманні двійкових чисел із знаком може виникнути переповнення мантиси, коли розряд із значенням міняє значення знакового розряду. Визначити таку ситуацію можна по вмісту прапора переповнення of. Його встановлення в 1 говорить про те, що результат вийшов за діапазон знакових чисел для операнду даного розміру, і програміст повинен скоректувати результат.

      1. Множення двійкових чисел без знаку

Для множення двійкових чисел без знаку використовується команда

mul операнд_1

Другий співмножник операнд_2 заданий неявно і його розміщення показано в таблиці 4.1.

Таблиця 4.1

Розміщення операндів і результата при множенні

Співмножник_1

Співмножник_2

Результат

Байт

al

16 біт в ах: al-молодша частина, ah-старша частина результата

Слово

ax

32 біти в парі dx:ax: ax-молодша частина, dx-старша частина результата

Подвійне слово

eax

64 біти в парі edx:eax: eax-молодша частина, edx-старша частина результата

Щоб взнати, чи результат помістився в одному операнді використовують прапори переносу cf і переповнення of:

o якщо старша частина нульова, то після операції добутку прапори cf=0 і of=0;

o якщо ж ці прапори ненульові, то це значить, що результат вийшов за межі молодшої частини добутку і складається із двох частин, що і потрібно врахувати при подальшій роботі.

      1. Множення двійкових чисел із знаком

Множення чисел із знаком:

imul операнд_1

Команда виконується аналогічно команді mul. Якщо результат поміщається в одному регістрі (тобто cf=of=0), то вміст другого регістру є розширення знаку. У протилежному випадку (cf=of=1), знаком результат є знаковий біт старшої частини результату.

      1. Ділення двійкових чисел без знаку

Ділення чисел без знаку:

div дільник

Місцезнаходження діленого наведено в табл. 4.2.

Розміщення операндів і результату при діленні

Таблиця 4.2

Ділене

Дільник

Частка

Залишок

Слово 16 біт в рег. ах

Байт-регістр або комірка

Бай в регістрі al

Байт в регістрі ah

32 біт

dx-старша частини ax-молодша частина

16 біт регістр або комірка пам’яті

Слово 16 біт в регістрі

ax

Слово 16 біт в регістрі

dx

64 біт

edx-старша частини eax-молодша частина

Подвійне слово 32 біт регістр або комірка пам’яті

Подвійне слово 32

біти в регістрі eax

Подвійне слово 32 біт в регістрі edx

Під час виконання роботи може виникнути виняткова ситуація “ділення на нуль”, що викликана однією із причин:

o дільник дорівнює нулю;

o частка не входить у відведену розрядну сітку:

o ділене і дільник величиною в байт, а значення діленого більш як в 256 разів більше значення дільника;

o ділене і дільник величиною в подвійне слово, а значення діленого більш як в 65536

разів більше значення дільника;

o ділене і дільник величиною в чотирикратне слово, а значення діленого більш як в

4294967296 разів більше значення дільника.