Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
У раніше розглянутих командах обробки інформації кодування вмісту окремих бітів байта не мало значення. В арифметичних операціях потрібно дотримуватись строго визначених правил запису даних відповідно до порядкових номерів розрядів двійкового коду. У зв'язку з обмеженими ресурсами мікроконтролера в ньому використовуються тільки чотири арифметичних операції з цілими числами. Відступ від правил кодування призводить до неправильного виконання арифметичних операцій.
В одному байті може бути закодовано 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!