Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команди розгалуження, виклику підпрограм, повернення та рестарту




В цю групу команд входять команди переходів, виклику підпрограм та повернення до основної програми, а також команда рестарту.

Команди переходів є засобом зміни вмісту лічильника команд PC і, отже, зміни нормального послідовного виконання програми. Ці команди розділені на дві підгрупи :безумовного та умовного переходу.

Команди обох підгруп є 3-х байтовими, коли першим байтом є КОП, а другий та третій байти вміщують в собі молодшу (LAD) та старшу (HAD) півадреси точки переходу (тобто адреси, де розміщена наступна команда програми і яка не є послідовно виконуємою командою). Мнемонічним (т.т. асемблерним) записом команди безумовного переходу є JMP [Address] (т.т. JMP [<B3><B2>]), а команд умовного переходу J<Condition>[Address]. Останні здійснюють передачу керування (т.т. виконання програми) в залежності від стану одного з відповідних розрядів регістру флагів, тобто стану одного з чотирьох флагів (Z, S, P і CY). Ці флаги встановлюються по результату виконання команди (тобто вмісту аккумулятора А), яка задає ту чи іншу операцію, і мають такі значення (таблиця 1.8).

 

Таблиця 1.8.

№ п.п. Позначення флага Значення флага Результат виконання Команди (операції)
1.   2.   Z (zero)     Якщо результат операції не дорівнює 0.   Якщо результат операції дорівнює 0.
3.     4. S (sing)     Якщо старший біт результату (А7) операції дорів- нює 0.   Якщо старший біт результату(А7) операції дорів- нює 1.
5.   6. P (parity)   Якщо результат операції налічує непарне число 1.   Якщо результат операції налічує парне число 1  
7.   8. CY (carry)   Якщо є перенос до старшого розряду(при додаванні) або позичка з старшого розряда (при відніманні або порівнюванні).   В протилежному випадку.

Оскільки умова переходу пов’язана зі значенням того чи іншого флага, а таких можливих значень є вісім, то для їх кодування в КОП використовуються три розряди, а поле коду умови при запису самої команди та її формату позначається як ССС. Мнемонічним позначенням команд умовного переходу є J (тобто від JMP) з відповідним позначенням однієї з умов.

Мають місце наступні умови переходу і відповідні їм значення поля ССС (таблиця 1.9).

 

Таблиця 1.9.

№ п.п. Мнемонічне позначення умови Значення флага Зміст значення флага  
1. 2. NZ Z Z=0 Z=1 Не нуль Нуль
3. 4. NC C CY=0 CY=1 Немає переносу Є перенос
5. 6. PO PE P=0 P=1 Непарний результат Парний результат
7. 8. P M S=0 S=1 Плюс (додатний) Мінус (від’ємний)

 

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

У разі, якщо задана полем ССС умова не виконується, то ЦП переходить до виконання наступної по порядку команди, для чого вміст лічильника команд просто збільшується на три одиниці.

Команди виклику, які можуть бути як безумовними (CALL), так і умовними (CALL IF), застосовуються для звернення до підпрограм, що розміщені поза робочої області основної пам’яті. Мнемонічне позначення команди умовного виклику створюється об’єднанням символу С (від імені CALL) з одним із мнемонічних позначень умов, які наведені в таблиці 1.9.

На відміну від команд умовного та безумовного переходу команди виклику завжди передбачають можливість повернення до перерваної основної програми. Для цього будь-яка команда виклику перед передачею керування підпрограмі заносить до стеку адресу повернення до основної програми. Тому вміст старшої половини програмного лічильника PCH заноситься до стеку за адресою (SP)-1, а молодша півадреса PCL-до стеку за адресою (SP)-2, де (SP)- вміст показника стеку. Сам вміст показника стеку при цьому зменшується на дві одиниці.

Будь яка підпрограма завжди повинна закінчуватися командою безумовного повернення RET(RETURN), або командою повернення по умові (RETURN IF). Мнемонічне позначення команди умовного повернення створюється об’єднанням символу R (від RETURN) тобто “повернення” з мнемонічним позначенням однієї з ознак умов, які наведені в таблиці 1.9.

При виконанні команди повернення вміст чарунки пам’яті, адреса якої в поточний момент часу є в показнику стека SP, переписується до молодшої половини лічильника команд РС, тобто PCL. Після цього вміст чарунки пам’яті, адреса якої на одиницю більше поточного вмісту показчика стеку SP, переписується до старшої половини РС тобто РСН, що призводить до формування в РС адреси повернення з останньої виконаної підпрограми. При цьому вміст показника стеку збільшується на дві одиниці.

Команда RST (RESTART) здійснює повторний запуск МП і використовується в операціях з вектором (тобто двійковим кодом) переривань NNN, де N=0/1. Таким чином RST є командою програмних переривань, число яких дорівнює восьми. Для виконання такої команди необхідно вказати початкову адресу підпрограми обробки переривань даного типу. Цю адресу формує на підставі, коду NNN сама одно байтова команда RST n, де n-номер рестарту (n=0-7), і є аргументом команди.

При виконанні команди RST вміст РС пересилається до стеку, коли старша півадреса РСН переноситься до стеку за адресою (SP)-1, а молодша півадреса PCL-до стекової області пам’яті за адресою (SP)-2. При цьому вміст показника стека зменшується на дві одиниці. Всі ці дії забезпечують повернення до основної програми після завершення роботи програми по обробці даного переривання. При виконанні команди RST вміст програмного лічильника РС формується як шіснадцятирозрядна адреса, що має в собі поле NNN у такому вигляді: (РС)<-8*NNN

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
                    N N N      

т.т. адреса дорівнює коду NNN, помноженому на 8. Ця адреса і є начальною адресою програми обслуговування переривань даного типу. Перелік команд цієї групи наведений в таблиці 1.10.


Таблиця 1.10

№ п.п. Мнемонічне позначення Умовний запис Формат команди Код Опис, призначення Флаги, цикли, такти
1. JMP[Addr] (Jump) (PC)<-(<B3>)(<B2>) C 3 C3 Перехід (або розгалуження) Адресація: безпосередня Ні, 3МЦ 10Т
2. J<Condition> [Addr] (Conditio- nal jump) (PC)<-(<B3>)(<B2>)   Q P QP Умовне роз- галуження. Адресація: безпосередня Ні, 3МЦ 10Т
3. СALL[Addr] (Call) ((SP)-1)<-(PCH) ((SP)-2)<-(PCL) (SP)<-(SP)-2 (PC)<-(<B3>)(<B2>)   С D CD Виклик. Адре- сація: безпо- середня, сте- кова. Ні, 5МЦ 17Т
4. С<Condition> [Addr] (Сonditio- nal call) If(CCC)=.T.,then ((SP)-1)<-(PCH) ((SP)-2)<-(PCL) (SP)<-(<B3>)(<B2>) Іf(CCC)=.F.,then (PC)<-(PC)+3   Q Р QP Умовний вик- лик. Адресація пряма, стекова   Ні, 3/5МЦ 11/17Т
5.   RET (Return) (PCL)<-((SP)) (PCH)<-((SP)+1) (SP)<-(SP)+2  
 
 


C 9

C9 Повернення. Адресація: стекова Ні, 3МЦ 10Т
6. R<Condition> (Сonditio- nal return) If(CCC)=.T.,then (PCL)<-((SP)) (PCH)<-((SP)+1) (SP)<-(SP)+2 Іf(CCC)=.F.,then (PC)<-(PC)+3  
       
   
 
 


Q P

QP Умовне повер- нення. Адресація: посередньо- регістрова (стекова) Ні, 1/3МЦ 5/11Т
7.   RST n (Restart) (n=0-7) ((SP)-1)<-(PCH) ((SP)-2)<-(PCL) (SP)<-(SP)-2     Q P QP Повторний за- пуск(рестарт) Адресація: посередньо- регістрова Ні, 3МЦ 11Т
8. PCHL (Jump H and L indirect- (мove H and L to PC) (PCH)<-(H) (PCL)<-(L)  
 
 


E 9

E9 Перейти до Н та L посередньо (передати Н та L в РС). Адре- сація: регіст- рова Ні, 1МЦ 5Т

11. Команди роботи зі стеком та керування вводу/виводу.

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

Таблиця 1.11

№ п.п. Мнемонічне позначення Умовний запис Формат команди Код Опис, призначення Флаги, цикли, такти
1. PUSH RP (Push) ((SP)-1)<-(Rh) ((SP)-2)<-(Rl) (SP)<-(SP)-2 RPне=SP RP={В,D,Н }   Q P QP Заслати до стеку вміст регістро- вої пари. Адресація: стекова Ні, 3МЦ 12Т
2. PUSH PSW (Push pro- gramm sta- tus word) ((SP)-1)<-(A) ((SP)-2)<-(F) (SP)<-(SP)-2   F 5 F5 Заслати до стеку слово стану про- грами. Адресація: стекова Ні, 3МЦ 12Т
3. POP RR (Pop) (Rl)<-((SP)) (Rh)<-((SP)+1) (SP)<-(SP)+2 RP ¹ SP RP={В,D,Н}     Q 1 Q1 Зчитати зі стеку вміст регістро- вої пари. Адресація: стекова Ні, 3МЦ 10Т
4. POP PSW (Pop prog- ramm sta- tus word) (F) «((SP)) (A) «((SP)-1) (SP) «(SP)-2   F 1 F1 Зчитати зі стеку слово стану про- грами. Адресація: стекова Всі, 3МЦ 10Т  
5. XTHL (Exchange stack top with H and L) (L) «((SP)) (H) «((SP)+1)   E 3 E3 Обмін вмісту ве- ршини стеку і вмісту регістрів Н та L. Адресація: Посередньо- регістрова Ні, 5МЦ 16Т
6. SPHL (Move HL to SP) (SP)<-(H)(L)  
 
 


F 9

F9 Пересилка вмісту регістрів Н та L до показчика стеку. Адресація: регістрова Ні, 1МЦ 5Т
7. IN port (Input) (A)<-(Byte)   D B DB Ввід. Адресація: Пряма Ні, 3МЦ 10Т

 

8. OUT port (Output) (Byte)<-(A)   D 3 D3 Вивід. Адресація: Пряма Ні, 3МЦ 10Т
9. EI (Enable interrupts) (Byte)<-(A)   F B FB Дозвіл перери- вань Ні, 1МЦ 4Т
10. DI (Disable interrupts) (Byte)<-(A)   F 3 F3 Заборона перери- вань Ні, 1МЦ 4Т

 

Окрім команд наведених в таблиці 1.11, до цієї групи відносяться команди НLТ (Halt) зупинко та NOP (No op)-немає операцій. Обидві є однобайтові виконуються за 1МЦ та 4Т. Регістри та флаги не встановлюються.





Поделиться с друзьями:


Дата добавления: 2015-05-08; Просмотров: 756; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2025) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.