Теоретическое обоснование. Команды управления МП Intel 8085A включают в свой состав команды переходов, вызовов подпрограмм, возвратов в основную программу
Команды управления МП Intel 8085A включают в свой состав команды переходов, вызовов подпрограмм, возвратов в основную программу, передачи содержимого пары регистров в стек.
Существуют два типа команд переходов: безусловный и условный.
При выполнении команды безусловного перехода осуществляется передача управления по адресу, заданному во втором и третьем байтах команды, либо по адресу, заданному в регистровой паре.
Команды условного перехода выполняются в том случае, если установлен или сброшен соответствующий бит признака, в противном случае команда игнорируется и выполняется следующая за ней команда.
Существуют команды условного перехода для следующих битов регистра признаков:
– бита нуля;
– бита переноса;
– бита знака;
– бита четности.
Для каждого бита признака предусмотрены две команды перехода: переход по установленному биту признака (=1) и по сброшенному биту признака (=0).
Соответствие выполняемых команд и признаков приведены в таблице 16.1.
Таблица 16.1 – Соответствие выполняемых команд и признаков
Признак | Ноль, Z | Перенос, С | Четность, Р | Знак, S | ||||
Команда | ||||||||
JZ | да | – | – | – | – | – | – | – |
JNZ | – | да | – | – | – | – | – | – |
JC | – | – | да | – | – | – | – | – |
JNC | – | – | – | да | – | – | – | – |
JPE | – | – | – | – | да | – | – | – |
JPO | – | – | – | – | – | да | – | – |
JM | – | – | – | – | – | – | да | |
JP | – | – | – | – | – | – | – | да |
Стек – это специальная область ОЗУ, используемая для сохранения и восстановления данных, а также адресов возврата при вызове подпрограммы. Нижняя граница области стека определяется 16-разрядным регистром-указателем стека SP. В микропроцессорной системе предусмотрены три типа операций со стеком:
-запись в стек;
-восстановление;
-обмен стеком.
Запись в стек осуществляется при сохранении содержимого пар регистров (BC, DE, HL, PSW), а также при вызове подпрограммы (адрес возврата). Запись в стек производится следующим образом:
–из указателя стека SP вычитается 1;
–по адресу указателя стека записывается старший байт (содержимое ст. регистра или ст. байта адреса);
–из указателя стека вычитается 1;
–записывается младший байт.
Восстановление содержимого пар регистров и возврат осуществляется в обратном порядке:
–по адресу в указателе стека считывается младший байт;
–к содержимому указателя стека прибавляется 1;
–считывается содержимое старшего байта;
–к указателю прибавляется 1.
При вызове подпрограммы в стек записывается адрес команды, следующей за командой вызова подпрограммы. Затем, при возврате из подпрограммы, из стека в счетчик команд записывается адрес возврата. Необходимо следить за тем, чтобы непосредственно перед выполнением команды возврата из подпрограммы верхним элементом стека являлось значение адреса возврата. То есть, чтобы между командами вызова подпрограммы и возврата не было загрузки стека без восстановления.
2 Индивидуальное задание №1
Написать с адреса 2000 h на языке Ассемблер для МП Intel 8085A циклическую программу дополнения байта до четности в старшем разряде для МП Intel 8085A в соответствии с алгоритмом, который представлен на рисунке 16.1. Исходное число загрузить в регистр С.
Рисунок 16.1 – Алгоритм программы дополнения байта до четности
Для выполнения заданной операции содержимое регистра С пересылается в регистр-аккумулятор А, а затем обнуляется старший бит регистра А (блок 3 на рисунке 16.1). Команда блока 4 устанавливает признак Р в регистре признаков МП, по результатам которой выполняется условный переход по значению признака Р. Если признак Р = 0, то команда блока 6 дополняет байт до четности. В противном случае передается управление команде блока 7.
Исходные значения байта (два значения) приведены в таблице 16.2.
Таблица 16.2 – Исходные данные к индивидуальному заданию №1
Номер варианта | Исходные данные (Р = 16) | Номер варианта | Исходные данные (Р = 16) | ||
(С)1 | (С)2 | (С)1 | (С)2 | ||
FF | 8A | ||||
С6 | |||||
CD | F5 | ||||
A2 | |||||
9A | 9B |
Программу записать в таблицу, аналогичную по форме таблице 12.4. До выполнения программы вычислить и записать ожидаемый результат для двух заданных байтов. Расчет производить в двоичной системе счисления. Например, байт Е4(16) = 1110 0100(2) сохранит свое значение, а байт
4С(16) = 0100 1100(2) примет значение СС(16) = 1100 1100(2).
Результаты выполнения записать в таблицу 16.3 и сделать выводы.
Таблица 16.3 – Результаты выполнения индивидуального задания №1
Номер варианта | Содержимое регистров (Р = 16) | Значения признаков | |||||||
(С)1-исх | (С)1-рез | (С)2-исх | (С)2-рез | S | Z | A | P | C | |
Дата добавления: 2014-11-30; просмотров: 882;