Теоретическое обоснование
Команды управления МП Intel 8085A включают в свой состав команды переходов, вызовов подпрограмм, возвратов в основную программу, передачи содержимого пары регистров в стек. Существуют два типа команд переходов: безусловный и условный. При выполнении команды безусловного перехода осуществляется передача управления по адресу, заданному во втором и третьем байтах команды, либо по адресу, заданному в регистровой паре. Команды условного перехода выполняются в том случае, если установлен или сброшен соответствующий бит признака, в противном случае команда игнорируется и выполняется следующая за ней команда. Существуют команды условного перехода для следующих битов регистра признаков: – бита нуля; – бита переноса; – бита знака; – бита четности. Для каждого бита признака предусмотрены две команды перехода: переход по установленному биту признака (=1) и по сброшенному биту признака (=0). Соответствие выполняемых команд и признаков приведены в таблице 16.1.
Таблица 16.1 – Соответствие выполняемых команд и признаков
Стек – это специальная область ОЗУ, используемая для сохранения и восстановления данных, а также адресов возврата при вызове подпрограммы. Нижняя граница области стека определяется 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
Программу записать в таблицу, аналогичную по форме таблице 12.4. До выполнения программы вычислить и записать ожидаемый результат для двух заданных байтов. Расчет производить в двоичной системе счисления. Например, байт Е4(16) = 1110 0100(2) сохранит свое значение, а байт Результаты выполнения записать в таблицу 16.3 и сделать выводы.
Таблица 16.3 – Результаты выполнения индивидуального задания №1
|