Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Команды управлении (ветвления) программой позволяют изменять обычную последовательность выполнения команд программы в зависимости от результатов обработки данных





Команды переходов предназначены для организации всевозможных циклов, ветвлений, вызовов подпрограмм и т.д., то есть они нарушают последовательный ход выполнения программы. Эти команды записывают в регистр-счетчик команд новое значение и тем самым вызывают переход процессора не к следующей по порядку команде, а к любой другой команде в памяти программ. Некоторые команды переходов предусматривают в дальнейшем возврат назад, в точку, из которой был сделан переход, другие не предусматривают этого. Если возврат предусмотрен, то текущие параметры процессора сохраняются в стеке. Если возврат не предусмотрен, то текущие параметры процессора не сохраняются.

Команды переходов без возврата делятся на две группы:

· команды безусловных переходов;

· команды условных переходов.

В обозначениях этих команд используются слова Branch (ветвление) и Jump (прыжок).

Команды безусловных переходов вызывают переход в новый адрес независимо ни от чего. Они могут вызывать переход на указанную величину смещения (вперед или назад) или же на указанный адрес памяти. Величина смещения или новое значение адреса указываются в качестве входного операнда.

Команды условных переходов вызывают переход не всегда, а только при выполнении заданных условий. В качестве таких условий обычно выступают значения флагов в регистре состояния процессора (PSW). То есть условием перехода является результат предыдущей операции, меняющей значения флагов. Всего таких условий перехода может быть от 4 до 16. Несколько примеров команд условных переходов:

· переход, если равно нулю;

· переход, если не равно нулю;

· переход, если есть переполнение;

· переход, если нет переполнения;

· переход, если больше нуля;

· переход, если меньше или равно нулю.

Если условие перехода выполняется, то производится загрузка в регистр-счетчик команд нового значения. Если же условие перехода не выполняется, счетчик команд просто наращивается, и процессор выбирает и выполняет следующую по порядку команду.

Специально для проверки условий перехода применяется команда сравнения (CMP), предшествующая команде условного перехода (или даже нескольким командам условных переходов). Но флаги могут устанавливаться и любой другой командой, например командой пересылки данных, любой арифметической или логической командой. Отметим, что сами команды переходов флаги не меняют, что как раз и позволяет ставить несколько команд переходов одну за другой.

Совместное использование нескольких команд условных и безусловных переходов позволяет процессору выполнять разветвленные алгоритмы любой сложности.

Команды переходов с дальнейшим возвратом в точку, из которой был произведен переход, применяются для выполнения подпрограмм, то есть вспомогательных программ. Эти команды называются также командами вызова подпрограмм (распространенное название – CALL). Использование подпрограмм позволяет упростить структуру основной программы, сделать ее более логичной, гибкой, легкой для написания и отладки. В то же время надо учитывать, что широкое использование подпрограмм, как правило, увеличивает время выполнения программы.

Все команды переходов с возвратом предполагают безусловный переход (они не проверяют никаких флагов). При этом они требуют одного входного операнда, который может указывать как абсолютное значение нового адреса, так и смещение, складываемое с текущим значением адреса. Текущее значение счетчика команд (текущий адрес) сохраняется перед выполнением перехода в стеке.

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

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

Трехбайтная команда передачи управления JMP ADDR (рис. 19) содержит полный 16-битный адрес перехода. При ее выполнении адрес перехода загружается в счетчик команд РС, а текущее содержимое РС теряется. Команда JMP ADDR выполняется за три машинных цикла.

Рисунок 19 – Формат команды JMP ADDR

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

Рисунок 20 – Формат команды CALL ADDR

Рисунок 21 – Формат команды RET

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

Рисунок 22 – Формат команды RST N

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

Рисунок 23 – Формат команды PCHL

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

Обобщенный код команд условной передачи управления имеет вид 3YZ (рис. 24), где 3 – код класса команд передачи управления, Y (YYY) – код проверяемого условия (табл. 10), Z (ZZZ) – код одной из трех групп команд условной передачи управления (табл. 11).

Всего имеется 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.

Рисунок 24 – Формат команд условной передачи управления

Таблица 10

Коды проверяемых условий

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

 

Таблица 11

Коды групп команд условной передачи управления

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

 

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

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

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

Рисунок 25 – Формат команд LXI RP, B2, B3

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

Восьмеричный код команд PUSH RP и POP RP3RP5 и 3RP1 соответственно (рис. 26).

Рисунок 26 – Формат команд POP RP и PUSH RP

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

Специальные регистры микропроцессора. Назначение. Содержание.

Микропроцессор КР580ВМ80А содержит специализированные регистры: счетчик команд PC, регистр- указатель стека SP, сдвоенные регистр косвенного адреса HL (H- регистр старшего полуадреса, L- регистр младшего полуадреса).

PC – счётчик команд, содержит адрес очередной исполняемой команды.

SP – указатель стека автоматически инкрементируется на 2 при записи пары регистров в стек (отдельный 8-разрядный регистр в стек записать нельзя, только парами) и декрементируется при извлечении из регистровой пары из стека. В общем случае стек представляет собой группу последовательно пронумерованных регистров или ячеек памяти, снабженных указателем стека, в котором автоматически при записи и считывании устанавливается номер (адрес) последней занятой ячейки (вершины стека). При операции занесения в стек слово помещается в следующую по порядку свободную ячейку стека, а при считывании из стека извлекается последнее поступившее в него слово. Так, в стеке реализуется дисциплина обслуживания «последний пришел – первый ушел». Эта дисциплина при обращении к стеку реализуется автоматически. Поэтому при операциях со стеком возможно безадресное задание операнда – команда не содержит адреса ячейки стека, но содержит адрес (или он подразумевается) ячейки памяти или регистра, откуда слово передается в стек или куда загружается из стека. В МП КР580ВМ80А используется «перевернутый стек», т.е. при передаче в стек слова значение указателя стека SP уменьшается, а при извлечении слова из стека – увеличивается(рисунок 3.1)

Рисунок 3.1 - Процедура занесения и извлечения из стека

HL – регистровая пара, состоящая из двух 8-разрядных регистров (H – старший регистр, L -- младший), используется для косвенно-регистровой адресации 64 Кбайт памяти.

Регистровая пара HL преимущественно используется как указатель памяти в коротких од­нобайтных командах, причем ячейка памяти, адрес которой содержит­ся в HL паре, называется М-регистром. В функциональном отношении этот регистр эквивалентен регистрам МП.

Регистры признаков. 8-разрядный F-регистр (регистр признаков, или флагов) – от­ражающий некоторые особенности выполнения операций АЛУ. F-регистр фиксирует 5 различных признаков (3 разряда не используются):

Date: 2016-06-06; view: 2359; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию