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

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

Команди передачі управління

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

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

JZ rel ;Jump if Zero

JNZ rel ;Jump if No Zero

Можна також використовувати як умову переходу рівність біта переносу одиниці чи нулю:

JC rel ;Jump if Carry

JNC rel ;Jump if Not Carry

Існують команди, що використовують як умову переходу рівність одиниці чи нулю вмісту будь-якого біта у функціональному регістрі чи адресованого біта в ОЗП:

JB flag, rel ;Jump if Bit

JNB flag, rel ;Jump if No Bit

Команда передачі керування по рівності біта одиниці має варіант з очищенням умісту цього біта:

JBC flag, rel ;Jump if Bit and Clear

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

Перераховані команди здійснюють перехід у залежності від результатів попередніх обчислень. Однак є керуючі команди, що самі здійснюють обчислення для одержання умов передачі керування. Мнемокод першої з таких команд – CJNE (Compare and Jump if Not Equal означає «порівняти і перейти, якщо не дорівнює»). Це єдина команда мікроконтролера, що має 3 операнди. Її чотири різновиди відрізняються способами адресації джерела і приймача:

CJNE A, src, rel

CJNE A, #src, rel

CJNE Rn, #src, rel

CJNE @Ri, #src, rel

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

Інша команда — DJNZ (Decrement and Jump if Not Zero) означає «зменшити і перейти, якщо не дорівнює нулю») зменшує вміст першого операнда на одиницю. Якщо операнд не дорівнює 0, то керування передається за зазначеною адресою:

DJNZ Rn, rel

DJNZ dst, rel

Ця команда зручна для програмування циклу по лічильнику. Перед початком циклу за адресою приймача треба записати число, рівне кількості повторень циклу. Якщо в другому операнді записати адреса початку циклу і не змінювати вміст першого операнда іншими командами в циклі, то задана ділянка програми буде повторена задану кількість разів.

Перейдемо до команд безумовного переходу JuMP без повернення. Вони використовують адресацію всіх трьох дальностей:

SJMP rel

AJMP adr11

LJMP adr16

Цифри в умовних позначках операндів останніх двох команд указують на кількість розрядів адресної частини їхніх кодів.

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

JMP @A + DPTR

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

Мнемоніка команд безумовного переходу з поверненням CALL переводиться як виклик. Ці команди не використовують коротку адресацію:

ACALL adr11

LCALL adr16

Вони застосовуються для виклику підпрограм, після виконання яких керування повинне повертатися команді, що випливає за командою виклику. Для цієї мети перед занесенням адресної частини команди виклику в програмний лічильник старе значення програмного лічильника записується в два байти ОЗП, які адресуються покажчиком стека. Спочатку в стек заноситься молодший байт програмного лічильника, а потім старший байт.

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

RET

Мнемоніка цієї команди відповідає слову RETurn (повернутися). Команда не має адресної частини, тому що при її виконанні в програмний лічильник записуються два байти, які адресуються покажчиком стека (першим записується старший байт, а другим — молодший). Програміст повинен забезпечити правильний уміст покажчика стека до моменту виходу з підпрограми. Ця вимога означає, що при виконанні підпрограми кількість команд запису в стек повинне дорівнювати кількості команд читання зі стека. Через те, що адресний простір стека розміщується в ОЗП, програміст повинен подбати про те, щоб команди, що використовують інші способи адресації, не робили запис інформації в адресний простір стека.

Інша команда, що працює точно таким же способом (RETI) застосовується для повернення до програми, що виконувалася в момент апаратного переривання. Літера I у її мнемокоді відповідає слову Interrupt (переривання). Апаратні переривання передають керування фіксованим адресам із запам'ятовуванням адреси повернення.

Група команд передачі управління наведена в табл. 8.5

 

Таблиця 8.5

Група команд передачі управління

Назва команди Мнемокод КОП Т Б Ц Операція
Довгий перехід в повному обсязі пам`яті програм LJMP ad 16 (PC)¬ad 16
Абсолютний перехід усередині сторінки в 2 кбайти AJMP ad 11 a10a9a8 (PC)¬(PC) + 2 (PC0-10)¬ad 11
Короткий відносний перехід усередині сторінки в 256 байтів SJMP rel (PC)¬(PC) + 2 (PC)¬(PC) + re1
Непрямий відносний перехід JMP @A+DPTR (PC)¬(A) + (DPTR)
Перехід, якщо акумулятор рівний нулю JZ rel (PC)¬(PC) + 2, якщо (А) = 0, то (PC)¬(PC)+ re1
Перехід, якщо акумулятор не рівний нулю JNZ rel (PC)¬(PC) + 2, якщо (А) ¹ 0, то (PC)¬(PC)+re1
 
Закінчення табл. 8.5
Назва команди Мнемокод КОП Т Б Ц Операція
Перехід, якщо перенос рівний одиниці JC rel (PC)¬(PC) + 2, якщо (C) = 1, то (PC)¬(PC) + re1
Перехід, якщо перенос рівний нулю JNC rel (PC)¬(PC) + 2, якщо (C) = 0, то (PC)¬(PC) + re1
Перехід, якщо біт рівний одиниці JB bit,rel (PC)¬(PC) + 3, якщо (b) = 1, то (PC)¬(PC) + re1
Перехід, якщо біт рівний нулю JNB bit,rel (PC)¬(PC) + 3, якщо (b) = 0, то (PC)¬(PC) + re1
Перехід, якщо біт встановлений, з наступним скиданням біта JBC bit,rel (PC)¬(PC) + 3, якщо (b) = 1, то (b)¬0 та (PC)¬(PC) + re1
Декремент Рг та перехід, якщо не нуль DJNZ Rn,rel 11011rrr (PC)¬(PC) + 2, (Rn)¬(Rn) - 1, якщо (Rn) ¹ 0, то (PC)¬(PC) + re1
Декремент байта, що адресується прямо, та перехід, якщо не нуль DJNZ ad,rel (PC)¬(PC)+2, (ad)¬(ad) -1, якщо (ad)¹0,то (PC)¬(PC) + re1

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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