Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Команди арифметичних операцій



У раніше розглянутих командах обробки інформації кодування вмісту окремих бітів байта не мало значення. В арифметичних операціях потрібно дотримуватись строго визначених правил запису даних відповідно до порядкових номерів розрядів двійкового коду. У зв'язку з обмеженими ресурсами мікроконтролера в ньому використовуються тільки чотири арифметичних операції з цілими числами. Відступ від правил кодування призводить до неправильного виконання арифметичних операцій.

В одному байті може бути закодовано 256 значень цілого числа. При роботі з позитивними числами це відповідає значенням від 0 до 255. Усі команди арифметичних операцій призначені для роботи з позитивними цілими числами байтового формату, хоча команди додавання і віднімання у випадку відсутності переповнення забезпечують одержання коректного результату при спеціальному способі кодування негативних чисел. При необхідності роботи з числами, що не можуть бути представлені в байтовому форматі, необхідно розробляти відповідні підпрограми. Виконання операцій множення і ділення з числами, що мають довільний знак, можливо при їхньому представленні через знак і модуль та при використанні відповідних підпрограм. Це можуть бути власні розробки чи запозичені з добре перевірених бібліотек інших розроблювачів.

Команда додавання працює з даними байтового формату, притім як приймач завжди використовується тільки нагромаджувач:

ADD A, #src

ADD A, Rn

ADD A, @Ri

ADD A, src

Мнемоніка цієї команди відповідає слову ADDition (додавання).

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

ADDC A, #src

ADDC A, Rn

ADDC A, @Ri

ADDC A, src

Додавання літери С до позначення команди вказує на використання біта переносу (ADDition with Carrier).

Існує також команда додавання, за допомогою якої виробляється збільшення заданого операнда на одиницю (INCrement):

INC A

INC Rn

INC @Ri

INC src

Така ж команда є і для роботи з двома байтами вмісту регістра покажчика даних:

INC DPTR

За допомогою цієї команди можна змінювати вміст покажчика для читання послідовності байтів із ПЗП.

При додаванні чисел, представлених двійково-десятковими кодами, після операції додавання потрібно використовувати команду десяткової корекції суми

DA A

Двійково-десяткове кодування має дуже обмежене застосування і тому далі не розглядається.

Набір команд для віднімання набагато менше. Команда обчислення різниці існує тільки у варіанті з відніманням умісту біта переносу (не вистачило кодів команд!):

SUBB A, #src

SUBB A, Rn

SUBB A, @Ri

SUBB A, src

Мнемоніка цієї команди відповідає словам SUBtraction with Borrow (тобто віднімання з урахуванням позики, тому що при відніманні утворюється позика, а не перенос). З цієї причини перед обчисленням різниці молодших байтів потрібно обов'язково очищати біт переносу, якщо немає впевненості в його вмісті. При обчисленні різниці старших байтів цього робити не потрібно.

Існує також команда віднімання, за допомогою якої виробляється зменшення заданого операнда на одиницю (DECrement):

DEC A

DEC Rn

DEC src

DEC @Ri

Команди зменшення для роботи з двобайтовим форматом даних немає.

Результати виконання команд додавання і віднімання впливають на вміст бітів переносу, додаткового переносу і переповнення в слові стану програми. Результати виконання команд додавання і віднімання не впливають на вміст слова стану програми.

Команди множення (MULliplication) і ділення (Division) працюють при записі операндів у нагромаджувач і регістр В. Для команди множення порядок запису співмножників у ці регістри не важливий.

MUL AB

Добуток має двохбайтовий формат. Молодший байт добутку записується в нагромаджувач, а старший — у регістр В.

Для команди ділення ділене повинне бути записане в нагромаджувач, а дільник — у регістр В:

DIV AB

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

Група команд арифметичних операцій наведена в табл. 8.4

Таблиця 8.4

Група команд арифметичних операцій





Дата публикования: 2014-12-08; Прочитано: 1064 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...