Команды переходов микропроцессора.
ЦЕЛЬ РАБОТЫ – изучение команд переходов.
Микропроцессор выполняет команды последовательно считывая их из памяти программ одну за другой. В счетчике команд при этом всегда хранится адрес следующей извлекаемой из памяти команды. К окончанию текущей команды в счетчике команд РС сформирован адрес следующей по порядку команды. Этот порядок характерен для всех линейных программ, которые были рассмотрены ранее.
В реальных программах часто возникает необходимость применения команд, нарушающих линейный порядок работы. К ним относятся команды
- условных переходов
- безусловных переходов
- команды вызова подпрограмм.
- команды возврата из подпрограммы
На основе этих команд реализуются циклические и разветвляющееся алгоритмы. При этом порядок выполнения команд, расположенных по последовательным адресам, нарушается. Адрес ячейки, на который необходимо перейти микропроцессору, как правило задается в команде перехода и при ее выполнении этот адрес загружается в счетчик команд РС. Данная процедура называется передачей управления и реализуется она при помощи команд микропроцессора.
К командам перехода относятся также команда вызова подпрограммы CALL и команда возвращения из подпрограммы RET. Команда вызова подпрограммы CALL служит для передачи процесса вычислений в подпрограммы. Команда требует три байта памяти. Первый байт содержит код команды CD, во втором байте содержится младший байт адреса подпрограммы и в третьем – старший байт подпрограммы. При считывании этой команды микропроцессор автоматически запоминает содержимое счетчика команд (РС), записывая его в стек. Данные в стек записывается по принципу «магазина» - первым вошел, последним вышел. Стек содержит свой счетчик SP (указатель стека), в котором записан адрес вершины стека. При записи в стек указатель стека автоматически уменьшается, а при чтении увеличивается.
По команде CALL микропроцессор загружает в счетчик команд РС число, записанное как адрес перехода. Одновременно в стек записывается содержимое младшего PCL и старшего PCH байтов счетчика команд. Это необходимо для того, чтобы после возврата из подпрограммы продолжить работы основной программы с прерванной команды.
Для возврата из подпрограммы в основную программу служит команда RET, являющаяся последней командой в любой подпрограмме. Команда RET однобайтовая (код С9). По этой команде микропроцессор автоматически извлекает из стека два последних записанных туда числа и записывает их в счетчик команд РС. Команда безусловного перехода имеет формат JMP и располагается в трех байтах памяти:Ж первый байт содержит код команды –С3, второй – младший байт адреса перехода, третий байт – старший байт адреса перехода. При считывании этой команды микропроцессор записывает в счетчик команд РС адрес, указанный в команде. Дальнейшее выполнение команд микропроцессор продолжит с указанного адреса.
Команды условных переходов осуществляют передачу управления только при выполнении некоторых условий. Если условие не выполняется, то передача управления не происходит. Организация установки условий осуществляется с помощью регистра признаков. Регистр F имеет пять разрядов (таблица 4.1). Каждый разряд установлен в 1 или 0 по результатам выполнения текущей команды.
Таблица 4.1
D7 D6 D5 D4 D3 D2 D1 D0
S Z 0 AC 0 P 1 CY
- S – разряд знака. Устанавливается в 1, если при выполнении арифметической или логической операции результат получился отрицательным ( в старшем разряде D7 аккумулятора записана 1)
- Z – разряд устанавливается в 1 при нулевом результате выполнения команды ( во всех разрядах аккумулятора установлен ноль ).
- АС – Разряд десятичной коррекции устанавливается в один если при обработке двоично – десятичных чисел в аккумуляторе возникает перенос из разряда D3 в разряд D4 или заем в разряде D4.
- Р – Разряд контроля по четности. Устанавливается в один, если в результате выполнения команды количество единиц, установленных во всех разрядах аккумулятора, будет четным.
- CY – разряд признака переноса. Устанавливается в 1, если при выполнении арифметических операций или команд сдвига возникает перенос из старшего разряда, а при вычетании происходит заем.
Проверяемым условием в командах условного переходов является значение одного из разрядов регистра состояний F. При этом могут проверятся следующие результаты выполнения команд: нулевой и ненулевой, положительный, отрицательный, четный, нечетный, наличии или отсутствие переноса.
Переход может осуществляться как при наличии 1 в определенном разряде регистра признаков, так и по нулю.
Все команды условных переходов являются трехбайтными. Первый байт содержит код операции, в котором записано проверяемое условие, второй байт содержит младший байт адреса перехода и третий байт – старший байт адреса перехода. При считывании этих команд микропроцессор проверяет выполнение требуемого кодом команды условия по состоянию нужного флага регистра F. Если условие не выполняется, то выполняется следующая команда, адрес которой задан в РС, т.е. перехода не происходит. Если условие выполнено, то в счетчик команд РС записывается адрес, указанный в команде, и дальнейшее выполнение команд программы микропроцессора с указанного адреса.
Мнемокод команд условного перехода составляется из первой буквы вида перехода J (JMP) и мнемокода условия перехода по признакам регистра F. Причем в микропроцессоре К580 помимо команд условного перехода есть команды вызова подпрограмм по условию – С (CALL) и возврата из под программы по условию R (RET). Мнемокоды этих команд приведены в таблице 4.2.
Таблица 4.2.
УСЛОВИЕ МНЕМОКОД
Результат не равен нулю JNZ CNZ RNZ
Результат равен нулю JZ CZ RZ
Нет переноса JNC CNC RNC
Есть перенос JC CC RC
Нечетный результат JPO CPO RPO
Четный результат JPE CPE RPE
Положительный результат JP CP RP
Отрицательный результат JM CM RM
Особенностью использования команд перехода микропроцессоров заключается в обязательной установке флагов регистра признаков F, Эта установка должна быть выполнена до применения команд проверки условия. Поэтому при написании программы, содержащей команды условных переходов, проверяют выполнение установки флагов регистра признаков F. Как следует из приложения 1, эта установка происходит только при выполнении арифметических и логических операций. Поэтому после команд пересылок или ввода данных в аккумулятор сразу использовать команды условных переходов нельзя, т.к. ни один из флагов регистра признаков F не изменится. В этом случае перед командой условного перехода обязательно записывается команда, производящая установку признаков флагов регистра F. Рекомендуется применять для этого логические команды типа ANA A и ORA A.
Рисунок 1 Блок схема программы для изучения команд перехода
ЗАДАНИЯ К ЛАБАРАТОРНОЙ РАБОТЕ:
1. Изучить команды переходов микропроцессора.
2. Исследовать работу программы, заданной на блок – схеме рис. 4.1.
таб. 4.3
_____________________________________________________________________________
Адрес Команда Машин. код Комментарий
_____________________________________________________________________________
0800: LDA 0A00 3A 00 0A Ввод числа n из ячейки с адр. 0А00
0803: JZ 080С CA 0C 08 Переход если ноль
0806: JPE 0811 EA 11 08 Переход если n четное
0809: JPO 0816 E2 16 08 Переход если n нечетное
080C: MVI A,01 3E 01 Запись в аккумулятор 01
080E: JMP 081В C3 1B 08 Безусловный переход по адр.
0811: MVI A,10 3E 10 Запись в аккумулятор 10
0813: JMP 081В C3 1B 08 Безусловный переход по адр.
0816: MVI A,11 3E 11 Запись в аккумулятор 11
0818: STA 0A01 32 01 0A Вывод числа А в ячейку с адр. 0А01
081B: RST 7 FF Остановка
_____________________________________________________________________________
1.1 Разобрать работу программы, приведенной на рисунке 4.1.
1.2 Составить программу по рисунку 4.1. в мнемокодах (табл. 4.3. аналогична таблице 2.1).
2.1 Запустить программу «Монитор».
2.2 Ввести программу по п.1.3. в ОЗУ.
2.3 Выполнить программу в режиме пользователя не менее трех раз, вводя разные числа в ячейки 0А00Н так, чтобы в ячейке 0А01 получалось число 01Н, 10Н, 11Н. Результаты занести в табл.4.6.
2.4 Выключить компьютер.
ОТЧЕТ по работе должен содержать: блок – схему программы для изучения команд переходов; текст программы в мнемокодах и машинных кодах – таблицы 4.3, 4.4.
Таблица 4.4
Число в ячейке памяти с Адресом | |
0А00Н | 0А01Н |
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Какие команды переходов имеются в микропроцессоре К580 ?
2. Как изменяется содержимое счетчика команд РС при выполнении команд условных и безусловных переходов ?
3. Как изменяется содержимое счетчика команд РС при переходе на подпрограмму и возврате в основную программу ?
4. Какие признаки фиксируются в регистре F ?
5. Когда флаги S,Z регистра F равны 1.
6. Когда флаги АС, P, CY регистра F равны 1.
7. Поясните выполнение команд, приведенных в табл. 4.2.