Виконання арифметичних операцій
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Процесори ІBM PC мають у системі команд такі команди, які дозволяють виконувати арифметичні операції додавання, віднімання, множення і ділення над цілими числами в двійковому форматі, а також у двійково-десятковому упакованому і неупакованому форматах.

Арифметичні команди над двійковими цілими числами

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

ADD a,b - Додавання без урахування перенесення. Команда додає значення двох операндів а та b і розміщує результат замість першого операнда. Операнд може знаходитися в пам'яті, в регістрі або бути безпосереднім параметром у команді. Не допускається додавання двох операндів, які знаходяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапорці AF, CF, OF, FF, SF, ZF.

ADC a,b - Додавання з перенесенням. Команда додає значення двох операндів, а також значення прапорця перенесення CF (a+b+CF), і розміщує результат замість першого операнда. Обмеження на операнді такі ж, як і в команді ADD. Установлюються прапорці AF, CF, OF, FF, SF, ZF. Ця команда використовується для програмування арифметичних операцій над довгими цілими числами.

ІNC a - Збільшення на 1. Команда додає 1 до значення операнда а. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапорці AF, OF, PF, SF, ZF.

Для виконання віднімання можуть використовуватись команди:

SUB a,b - Віднімання. Команда віднімає вид значення першого операнда а значення другого операнда b і розміщує результат замість першого операнда. Операнд може знаходитися в пам'яті, в регістрі або бути безпосереднім параметром у команді. Не допускається віднімання, коли обидва операнди знаходяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапорці AF, CF, OF, PF, SF, ZF.

SBB a,b - Віднімання з позикою. Команда віднімає із значення першого операнда а значення другого операнда b, зменшує результат на значення прапорця CF (a-b-CF) і розміщує результат замість першого операнда. Обмеження операндів такі ж, як і в команді SUB. Установлюються прапорці AF, CF, OF, PF, SF, ZF.

DEC a - Зменшування на 1. Команда зменшує значення операнда а на 1. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапори AF, OF, PF, SF, ZF.

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

MUL a - Множення. Команда виконує множення вмісту акумулятора (AL або AX) на значення операнда а. Результат розміщується відповідно в акумуляторі AX або в парі регістрів DX: AX. Множники розглядаються як числа без знаків. Установлюються прапорці CF і OF. Прапорці AF, PF, SF і ZF не визначені.

ІMUL a - Множення із знаком. Команда виконує множення вмісту акумулятора (AL або AX) на значення операнда а. Результат розміщується відповідно в акумуляторі AX або в парі регістрів DX: AX. Множники розглядаються як числа із знаками. Прапорці CF і OF скидаються в 0, коли старша частина добутку (регістр AH або DX) є поширенням знака, який знаходиться в молодшій частині добутку (AL або AX), інакше ці прапорці установлюються в 1.

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

DІV a - Ділення. Команда виконує ділення вмісту акумулятора на операнд a. Коли операнд а - байт, тоді ділене розміщується в AX, ціла частина в AL, а залишок - в AH. Коли операнд a - слово, тоді ділене розміщується в парі DX: AX (подвійне слово), ціла частина розміщується в AX, а залишок в DX. Операнди розглядаються як цілі числа без знака. При діленні на 0 виконується переривання типу 0.

ІDІV a - Ділення із знаком. Команда виконує ділення операндів так само, як у команді DІV. Операнди розглядаються як числа із знаками. Прапорці не визначені. При діленні на 0 виконується переривання типу 0.

Дата: 2019-04-23, просмотров: 169.