рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Команди арифметичних операцій - раздел Образование, СИСТЕМА КОМАНД ТА ПРОГРАМУВАННЯ МІКРОКОНТРОЛЕРА КМ1816ВЕ51 У Раніше Розглянутих Командах Обробки Інформації Кодування Вмісту Окремих Біт...

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

В одному байті може бути закодовано 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

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

Назва команди Мнемокод КОП Т Б Ц Операція
Додавання акумул. до регістра (n = 0¸7) ADD A,Rn 00101rrr (A)¬(A)+(Rn)
Додавання акумул. до байта, що адресується прямо ADD A,ad (A)¬(A)+(ad)
Додавання акумулятора до байта із РПД (і = 0,1) ADD A,@Ri 0010011i (A)¬(A)+((Ri))
Додавання акумулятора до незмінної ADD A,#d (A)¬(A)+ #d
Додавання акумулятора до регістра з переносом ADDC A,Rn 00111rrr (A)¬(A)+(Rn)+(C)
Закінчення табл.8.4
Назва команди Мнемокод КОП Т Б Ц Операція
Додавання акумулятора до байта, що адресується прямо, з переносом ADDC A,ad (A)¬(A)+(ad)+(C)
Додавання акумулятора до байта із РПД (і = 0,1) з переносом ADDC A,@Ri 0011011i (A)¬(A)+((Ri))+(C)
Додавання акумулятора до незмінної з переносом ADDC A,#d (A)¬(A)+#d+(C)
Десяткова корекція акумулятора DA A Якщо (А0-3) >9 Ú((AC)=1), то (А0-3) ¬ (А0-3)+6, потім, якщо (А4-7) >9 Ú ((C)=1), то (А4-7)¬ (А4-7)+6
Віднімання з акумулятора регістра і позики SUBB A,Rn 10011rrr (A)¬(A)-(Rn)-(C)
Віднімання з акумулятора байта, що адресується прямо, та позики SUBB A,ad (A)¬(A)-(ad)-(C)
Віднімання з акумулятора байта РПД та позики SUBB A,@Ri 1001011i (A)¬(A)-((Ri))-(C)
Віднімання з акумулятора незмінної та позики SUBB A,#d (A)¬(A)- #d -(C)
Інкремент акумулятора INC A (A)¬(A)+1
Інкремент регістра INC Rn 00001rrr (Rn)¬(Rn)+1
Інкремент байта, що адресується прямо INC ad (ad)¬(ad)+1
Інкремент байта в РПД INC @Ri 0000011i ((Ri))¬((Ri))+1
Інкремент покажчика даних INC DPTR (DPTR)¬(DPTR)+1
Декремент акумулятора DEC A (A)¬(A) -1
Декремент регістра DEC Rn 00011rrr (Rn)¬(Rn) -1
Декремент байта, що адресується прямо DEC ad (ad)¬(ad) -1
Декремент байта в РПД DEC @Ri 0001011i ((Ri))¬((Ri)) -1
Множення акумулятора на РгВ MUL AB (B)(A)¬(A)*(B)
Ділення акумулятора на РгВ DIV AB (A).(B)¬ (A)/(B)

 

– Конец работы –

Эта тема принадлежит разделу:

СИСТЕМА КОМАНД ТА ПРОГРАМУВАННЯ МІКРОКОНТРОЛЕРА КМ1816ВЕ51

СИСТЕМА КОМАНД ТА ПРОГРАМУВАННЯ МІКРОКОНТРОЛЕРА КМ ВЕ... Формати і способи адресації команд...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Команди арифметичних операцій

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Формати і способи адресації команд
Команди можуть займати від одного до трьох байтів. Розмір команди визначається кодом операції, записаним у першому байті. Додаткові байти можуть містити адреси і/або дані. У символічному записі ком

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

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

Команди передачі управління
Опис керуючих команд почнемо з команд умовного переходу. Ці команди використовують тільки відносний спосіб адресації, тому для них будемо використовувати умовну позначку адреси переходу rel. Для ко

Арифметичні дії з великими числами
У мікроконтролерах сімейства і8051 відсутній набір команд для здійснення арифметичних дій у тих випадках, коли для представлення чисел потрібно використовувати більш одного байта. Тому розглянемо,

Арифметичні дії з негативними числами
  Команди множення і ділення дають правильні результати тільки у випадку позитивних операндів. Тому для правильного обчислення добутку чи частки у випадку негативних операндів потрібн

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

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги