Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




До даної групи команд (таблиця 8.18) відносяться команди, які забезпечують умовні і безумовні розгалуження, виклик підпрограм і повернення із них, а також команда порожньої операції NOP. В більшості із них використовується пряма адресація, тобто адреса переходу цілком (або його частина) міститься в самій команді передачі керування. Можна виділити три різновидності команд розгалуження відповідно до розрядності адреси переходу.

Довгий перехід. Перехід по всьому адресному простору ПП. В команді міститься повна 16-бітова адреса переходу (ad16). Трибайтова команда довгого переходу містить в мнемоніці букву L (Long). Розрізняють дві таких команди: LJMP -довгий перехід і LCALL -довгий виклик підпрограми. Довгі переходи використовуються рідко, а частіше застосовуються скорочені команди переходів, які займають менше місця в пам’яті.

Абсолютний перехід. Даний перехід відбувається в межах однієї сторінки пам’яті програм об’ємом 2048 байтів. Такі команди абсолютного переходу мають формат 2 байти, і їх мнемокод починається з букви А (Absolute). При їх виконанні в обчисленій адресі наступної команди ((РС)=(РС)+2) 11 молодших бітів замінюються на ad11, що є в тілі команди абсолютних переходів (ACALL i AJMP).

Відносний перехід. Короткий відносний перехід дозволяє передати керування в межах-128¸+127 байтів відносно адреси наступної команди (команди, що є наступною за командою відносного переходу). МК51 має одну таку команду переходу SJMP (Short). Всі команди умовних переходів використовують даний метод адресації. Відносна адреса переходу (rel) знаходиться у другому байті команди. Таким чином в командах з відносним переходом за базу взятий лічильник команд, а перехід відбувається відносно даної бази.

Таблиця 8.18 - Група команд передачі керування

Назва команди Мнемокод КОП Т В Ц Операція
Довгий перехід в повному об’ємі пам’яті LJMP ad 16         (PC) ad 16
Абсолютний перехід всередині сторінки в 2 Кбайти AJMP ad 11 a10a9a800001       (PC) (PC)+2 (PC0-10)ad 11
Короткий відносний перехід всередині сторінки в 256 байтів SJMP rel         (PC)(PC)+2 (PC)(PC)+rel
Непрямий відносний перехід JMP @A+ +DPTR         (PC) (A)+ +(DPTR)
Перехід, якщо акумулятор рівний нулю JZ rel         (PC) (PC)+2, якщо (А)=0 то (PC) (PC)+rel
Перехід, якщо акумулятор не рівний нулю JNZ rel         (PC) (PC)+2, якщо (А)¹0 то (PC) (PC)+rel
Перехід, якщо перенос рівний одиниці JC rel         (PC) (PC)+2, якщо (C)=1 то (PC) (PC)+rel
Перехід, якщо перенос рівний нулю JNC rel         (PC) (PC)+2, якщо (C)=0 то (PC) (PC)+rel
Перехід, якщо біт рівний одиниці JB bit,rel         (PC) (PC)+3, якщо (b)=1 то (PC) (PC)+rel
Перехід, якщо біт рівний нулю JNB bit,rel         (PC) (PC)+2, якщо (b)=0 то (PC) (PC)+rel
Перехід, якщо біт встановлений з наступним обнулінням його біта JBC bit,rel         (PC) (PC)+2, якщо (b)=1 то (b) 0, (PC) (PC)+rel
Назва команди Мнемокод КОП Т В Ц Операція
Декремент регістра і перехід, якщо не нуль DJNZ Rn,rel 11011rrr       (PC) (PC)+2, (Rn) (Rn)-1, якщо (Rn)¹0, то (PC)(PC)+rel
Декремент прямоадресованого байта і перехід, якщо не нуль DJNZ ad,rel         (PC) (PC)+2, (ad) (ad)-1, якщо (ad)¹0, то (PC)(PC)+rel
Порівняння акумулятора з прямоадре-сованим бай-том і перехід, якщо не рівно CJNE A,ad, rel         (PC) (PC)+3, якщо (А)¹(ad) то (PC)(PC)+rel, якщо (А)<(ad) то (C) 1
Порівняння акумулятора з константою і перехід, якщо не рівно CJNE A,#d, rel         (PC) (PC)+3, якщо (А)¹ #d то (PC) (PC)+rel, якщо (А)< #d то (C) 1, інакше (C) 0
Порівняння регістра з константою і перехід, якщо не рівно CJNE Rn, #d,rel 10111rrr       (PC) (PC)+3, якщо (Rn)¹ #d то (PC) (PC)+rel, якщо (Rn)< #d то (C) 1, інакше (C) 0
Порівняння байта РПД з константою і перехід, якщо не рівно CJNE @Ri, #d,rel 1011011i       (PC) (PC)+3, якщо ((Ri))¹ #d то (PC) (PC)+rel, якщо ((Ri))< #d то (C) 1, інакше (C) 0
Назва команди Мнемокод КОП Т В Ц Операція
Довгий виклик підпрограми LCALL ad 16         (PC) (PC)+3, (SP) (SP)-1, ((SP)) (PC0-7), (SP) (SP)+1, ((SP)) (PC8-15), (PC) ad 16
Абсолютний виклик під-програми в межах сторінки в 2 Кбайти ACALL ad 11 a10a9a810001       (PC) (PC)+2, (SP) (SP)+1, ((SP)) (PC0-7), (SP) (SP)+1, ((SP)) (PC8-15), (PC0-10) ad 11
Повернення з підпрограми RET         (PC) (PC)+2, (SP) (SP)+1, ((SP)) (PC0-7), (SP) (SP)+1, ((SP)) (PC8-15), (PC0-10) ad 11
Повернення з підпрограми обробки переривання RETI         (PC8-15) ((SP)), (SP) (SP)-1, (PC0-7) ((SP)), (SP) (SP)-1
Порожня команда NOP         (PC) (PC)+1

Примітка: Асемблер дозволяє використання узагальненого імені команд JMP i CALL, які в процесі трансляції замінюються оптимальними за форматом командами переходу (AJMP, SJMP, LJMP) або виклику (ACALL,LCALL).

Опосередкований перехід. Команда JMP @A+DPTR дозволяє передачу керування за опосередкованою адресою. Ця команда є вдалою для організації переходів на адресу, яка обчислюється в програмі і наперед невідома при написанні її тексту. Таким чином для виконання безумовного переходу лічильник PC завантажується адресою A+DPTR.

Умовні переходи. МК51 має розвинуту систему умовних переходів, що дозволяє вести розгалуження програм за такими умовами: акумулятор містить нуль (JZ); вміст акумулятора не рівний нулю (JNZ); перенос рівний одиниці (JC); перенос рівний нулю (JNC);адресований біт рівний одиниці (JB); адресований біт рівний нулю (JNB). Крім аналізу індикаторів регістру PSW та бітів внутрішнього ОЗП в командах умовних переходів може здійснюватись попереднє декрементування (буква D у мнемоніці команди) або порівняння (буква С у мнемоніці команди) операндів.

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

Команда CJNE ефективно використовується в процедурах очікування якої-небудь події. Наприклад, команди

WAIT: CJNE A,P0,WAIT

буде виконуватись до тих пір, доки на лінії порту 0 не установиться інформація, яка співпадає з вмістом акумулятора.

Підпрограми. Для звернення до підпрограм необхідно використати команди виклику (LCALL, ACALL). Ці команди на відміну від команд переходів (LJMP, AJMP) зберігають в стеці адресу повернення в основну програму. Для повернення з підпрограми необхідно використати команду RET. Команда RETI відрізняється від RET тим, що за нею припиняється обслуговування переривання, тобто дозволяється переривання обслуженого рівня повторно.

 

Родина МК52

Створивши вдалу мікро-ЕОМ 8051, розробники не зупинилися на досягнутому і почали пошуки шляхів її удосконалення. При цьому була поставлена задача розширити функціональні можливості мікро-ЕОМ і підвищити її продуктивність.

Цим вимогам задовольняє збільшення пам'яті програм на кристалі аж до 64 Кбайт, введення додаткових регістрів спеціальних функцій і нових режимів роботи, підвищення захищеності програм від нелегального копіювання, використання ліній порту 1 в альтернативних режимах (подібно лініям порту 3, як було вище згадано). Бажано також розширити систему преривань і зробити її більш гнучкою, збільшити обсяг внутрішньої пам'яті даних. В результаті доробок з'явилися мікро-ЕОМ родини 8052.

До складу цієї родини входять мікро-ЕОМ(табл.8.2) 80С52, 80С54, 80С58 з масочно програмованим ПЗП, їх версії 87С52, 87С54 і 87С58 з ПЗП, що стирається при УФ опроміненні, а також мікро-ЕОМ 80С32, що не має внутрішнього ПЗП. Між собою вони розрізняються також корпусами, робочими інтервалами температур, гранично припустимою тактовою частотою і низкою інших параметрів, які відображені в алфавітно-цифровій інформації після позначення типу мікро-ЕОМ. Цю інформацію можна одержати з фірмових посібників Intel, AMD і інших виробників мікро-ЕОМ розглянутої родини.

На відміну від 8051 мікро-ЕОМ родини 8052 мають:

ü вбудований ПЗП об’ємом 8 (80С52), 16 (80С54) і 32 Кбайт (80С58);

ü вбудований ОЗП обсягом 256 байт;

ü додаткові спеціальні функціональні регістри: таймер/лічильник 2 (далі для скорочення - Т/С2), здатний працювати в режимах засувки (фіксатор), таймера/лічильника, що допускає рахунок як на збільшення, так і на зменшення, і генератора швидкості передачі в бодах;

ü програмований послідовний інтерфейс з детектуванням помилок передачі і автоматичним розпізнаванням адреси;

ü шість джерел переривань;

ü розширений режим зниження споживаної потужності;

ü мітка відключення живлення;

ü режим ONCE.

Мікро-ЕОМ 8052 використовують стандартний набір команд родини 8051, їх контакти взаємооднозначно відповідають контактам цих мікро-ЕОМ. Відмінність полягає лише в тому, що, крім вводу-виводу інформації, виводи Р1.0 і Р1.1 8052 можуть виконувати альтернативні функції: перший з них відіграє роль зовнішнього входу для Т/С2, а другий керує перезавантаженням/записуванням інформації в регістри Т/С2.

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...