Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Команды передачи управления предназначены для изменения естественного порядка выполнения команд программы при реализации разветвляющихся и циклических алгоритмов, вызовов подпрограмм и возврата из них. В системе команд МП КР580ВМ80А содержится сравнительно большое число команд передачи управления, которые подразделяются на безусловные и условные переходы.

Команды безусловного перехода (JMP), вызова подпрограмм (CALL) и возврата из них (RET) передают управление по адресу, указываемому в команде (JMP, CALL) или по адресу, выбираемому из стека (RET).

Трехбайтная команда передачи управления JMP addr содержит полный 16‑битный адрес перехода. При ее выполнении адрес перехода загружается в счетчик команд РС, а текущее содержимое РС теряется. Команда JMP addr выполняется за три машинных цикла. Трехбайтная команда вызова подпрограмм CALL addr имеет формат аналогичный команде JMP, однако при ее выполнении адрес следующей по порядку команды не теряется. Выполнение команд вызова подпрограмм начинается с запоминания адреса возврата (адреса следующей после CALL команды) в стеке, и только после этого происходит перезагрузка PC адресом первой команды подпрограммы. Подпрограмма должна завершаться однобайтной командой возврата RET, перезагружающей содержимое PC адресом возврата. Команда CALL addr выполняется за пять машинных циклов, а команда RET — за три машинных цикла.

Система команд МП КР580ВМ80А содержит еще две команды безусловной передачи управления — команду RST n и команду PCHL. Однобайтная команда вызова RST n предназначена для обработки прерываний и может использоваться для вызова подпрограмм по фиксированным адресам. При поступлении запроса прерывания в последнем такте последнего машинного цикла команды устанавливается внутренний триггер прерывания. Следующим машинным циклом становится машинный цикл прерывание М8. В байте состояния цикла М8 формируется бит подтверждения прерывания INTA, с помощью которого периферийное устройство, запросившее прерывание, выдает на системную шину данных однобайтную команду повторного запуска RST n с кодом 11NNN111. Трехбитное поле NNN называется вектором прерывания. При выполнении команды RST n содержимое счетчика команд РС (адрес возврата) запоминается в стеке, а в счетчик команд загружается начальный адрес обработчика прерываний 00000000 00NNN000. Таким образом, в зависимости от значения трехбитного поля NNN, формируемого периферийным устройством или указываемым программистом в команде RST n, микропроцессор после выполнения данной команды вызывает одну из восьми 8-байтовых подпрограмм, расположенных в первых 64 ячейках памяти по адресам 000 0008, 000 0108, 000 0208, …, 000 0708. Подпрограмма должна завершаться командой возврата RET. Команда вызова RST n выполняется за три машинных цикла.

Однобайтная команда пересылки 16-битных операндов PCHL по выполняемым функциям является особой командой безусловного перехода. При ее выполнении содержимое регистровой пары HL загружается в счетчик команд РС, и микропроцессор продолжает программу с адреса, определяемого содержимым HL, при этом текущее содержимое РС теряется. Команду PCHL иногда называют командой множественного ветвления. Она выполняется за один машинный цикл.

Наряду с командами безусловной передачи управления в системе команд МП КР580ВМ80А имеется сравнительно многочисленная группа команд условной передачи управления, включающая команды условного перехода, условного вызова подпрограмм и условного возврата из подпрограмм. Передача управления при выполнении команд указанной группы осуществляется только в случае, если выполняется условие, заданное в коде операции. Если условие не выполняется, программа продолжается с команды, следующей за командой условной передачи управления, при этом сама команда условной передачи управления становится эквивалентной холостой команде. Проверяемым условием является текущее значение одного из флагов регистра признаков. Для удобства программирования предусмотрены команды, осуществляющие передачу управления по единичному и нулевому значению каждого из флагов, кроме флага АС.

Обобщенный код команд условной передачи управления имеет вид 3YZ, где 3 — код класса команд передачи управления, Y — код проверяемого условия (табл. 2.2), Z — код одной из трех групп команд условной передачи управления (табл. 2.3).

Всего имеется 24 команды условной передачи управления, проверяющие единичное и нулевое значение каждого из четырех флагов:

флаг Z: вызовы CZ, CNZ; переходы JZ, JNZ; возвраты RZ, RNZ;

флаг S: вызовы CM, CP; переходы JM, JP; возвраты RM, RP;

флаг C: вызовы CC, CNC; переходы JC, JNC; возвраты RC, RNC;

флаг P: вызовы CPE, CPO; переходы JPE, JPO; возвраты RPE, RPO.

Таблица 2.2

Флаг признака результата Мнемоника в команде Состояние флага Двоичный код флага
Ненулевой NZ    
Нулевой Z    
Нет переноса NC    
Перенос C    
Нечетный PO    
Четный PE    
Положительный P    
Отрицательный M    

Таблица 2.3

Название группы команд Мнемоника в команде Двоичный код группы команд
Условный возврат R  
Условный переход J  
Условный вызов C  

Отличительной особенностью системы команд 8-разрядного МП КР580ВМ80А является наличие команд пересылок и арифметических операций, операндами которых выступают 16-битные целые числа без знака.

Трехбайтные команды непосредственной загрузки с мнемоникой LXI rp, В2,В3 обеспечивают инициализацию регистровых пар BC, DE, HL и указателя стека SP исходными 16-битными значениями. Обобщенный код команд непосредственной загрузки регистровых пар 0rp1, где rp — код (адрес) регистровой пары, указываемый в соответствующем поле адреса регистровой пары регистровой модели МП (рис. 2.2).

Командами 16-битных пересылок являются однобайтные команды засылки содержимого регистровой пары в стек (PUSH rp) и извлечения из стека (POP rp). В них код rp определяет имя регистровой пары BC, DE, HL и слово состояния программы PSW, включающее содержимое аккумулятора А и регистра флагов РФ (рис. 2.4).

Содержимое аккумулятора А Содержимое регистра флагов РФ

C
 
P
 
AC
Z
 
S
А0
А1
А2
А3
А4
А5
А6
А7

Рис. 2.4. Слово состояние программы PSW

С помощью команд PUSH rp и POP rp программно можно «расширять» пространство внутренних регистров блока РОН, если этих регистров оказывается недостаточно для размещения параметров и промежуточных результатов выполняемой программы. Для освобождения внутренних регистров их содержимое командой PUSH rp загружается в стек. Восстановление содержимого регистров осуществляется командой POP rp, которая возвращает из стека сохраненные значения в соответствующие регистры. При прерываниях команды PUSH rp и POP rp часто используются для сохранения и восстановления так называемого контекста программы. Прежде чем непосредственно перейти к обработке прерывания, МП должен сохранить содержимое всех внутренних регистров или, по крайней мере, тех из них, которые будут использоваться в программе обработки. По окончанию обработки состояние прерванной программы должно быть восстановлено. В большинстве случаев при контекстном переключении, как минимум, следует временно сохранять и восстанавливать слово состояния процессора PSW.

Восьмеричный код команд PUSH rp и POP rp — 3rp5 и 3rp1 соответ­ственно.

При выполнении команды PUSH rp в ячейку памяти с адресом (SP) – 1 записывается содержимое старшего регистра регистровой пары rp, а в ячейку с адресом (SP) – 2 — содержимое младшего регистра этой регистровой пары. Содержимое указателя стека SP уменьшается на 2 (стек растет в область меньших адресов). При выполнении команды POP rp (извлечения из стека) данные из вершины стека, адресуемой SP, передаются в младший регистр регистровой пары rp, а в старший регистр этой пары загружается значение из ячейки с адресом (SP)+1. После этого содержимое SP увеличивается на 2 (стек всегда готов к чтению). Для правильной работы стека команды PUSH и POP должны быть парными.

В число арифметических команд, оперирующих 16-битными числами, входят команды инкремента INX rp и декремента DCX rp содержимого регистровых пар, а также команды двойного сложения DAD rp. Команды INX rp и DCX rp обеспечивают увеличение или уменьшение содержимого регистровых пар BC, DE, HL и указателя стека SP на единицу. Их удобно использовать для модификации указателей памяти при обработке массивов данных с использованием косвенной адресации. Команды двойного сложения DAD rp выполняют 16-битное суммирование содержимого HL с содержимым адресуемой регистровой пары BC, DE, HL или SP. Команда DAD H, удваивающая значение HL, эквивалентна команде сдвига влево 16-битного операнда. Для сдвига влево 16-битного операнда, размещенного в регистровой паре DE удобно использовать последовательность команд в которой команда XCHG реализует обмен содержимого регистровых пар DE и HL:

XCHG

DAD H

XCHG

Команды управления микропроцессором. В число однобайтных команд этой группы включают команды разрешения EI и запрещения DI прерывания, команду останова HLT, холостую команду NOP.

Команды разрешения EI и запрещения DI прерывания устанавливают/ сбрасывают внутренний триггер разрешения прерываний INTE. В состоянии INTE = 1 микропроцессор реагирует на внешние запросы прерываний, при INTE = 0 — прерывания запрещены.

По команде останова HLT в счетчик команд РС заносится адрес следующей команды и прекращается выполнение программы, при этом микропроцессор переводится в состояние «Останова». В этом состоянии выходы шин адреса и данных МП устанавливаются в состояние высокого сопротивления, и выдается сигнал ОЖ. Вывести МП из состояния «Останов» можно тремя способами:

– подать на вход RESET МП сигнал лог. 1, при этом МП переходит к выполнению команды, записанной по нулевому адресу;

– подать на вход INT МП сигнал лог. 1. При разрешенных прерываниях (INTE = 1), МП под действием сигнала INT переходит в состояние «Прерывание при Останове» и приступает к выполнению программы обработки запроса прерывания. После возврата из прерывающей программы продолжается выполнение программы, начиная с команды, следующей за командой HLT;

– подать на вход HOLD МП сигнал лог. 1, при этом МП переходит врежим, обеспечивающий прямой доступ в память. После снятия сигнала HOLD МП возвращается в состояние «Останов».

Холостая команда NOP не производит никаких действий, кроме инкремента счетчика команд.

Полный список команд МП КР580ВМ80А приведен в прил. 1, табл. П2, П3.





Дата публикования: 2014-11-02; Прочитано: 1321 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...