Команды передачи управления.
Эти команды часто называют командами перехода. Позволяют выполнять различные действия в соответствии со значением внешних сигналов или выработанных в процессе выполнения операций условий. Все типы команды делятся на команды безусловного и условного перехода. К безусловным командам относятся:
JUMP адрес | ; Обеспечивается переход в программе по адресу, ; указанному в команде. При выполнении этой команды ; адрес перехода загружается в программный счетчик РС, ; причем текущее значение РС теряется. |
SKIP CALL имя RET № | ; Пропускается следующая команда программы ; Команда вызова подпрограммы. Осуществляется переход к ; подпрограмме с указанным именем ; Возврат из подпрограммы ; Осуществляется повторный запуск с адреса: 8 ´ № |
При выполнении команды вызова CALL временно запоминается текущее содержимое программного счетчика (т.е. адрес команды, следующий за командой CALL и называемый адресом возврата), и загружается адрес перехода команды CALL в РС, а после выполнения программы адрес возврата передается в РС. Последняя функция реализуется специальной однобайтной командой RET. Для запоминания адресов возврата используется стековая память.
Рисунок 3.8 – Схема осуществления команд сдвига в аккумуляторе
Имеется группа команд условного перехода, выполняемых в зависимости от значения одного из четырех флагов состояния (C, Z, S, P). Если условие перехода выполнено, то осуществляется переход по адресу, указанному в команде. В противном случае выполняется следующая команда. Группу команд условного перехода образуют 8 команд.
Метка: | JC | Адрес | ; Перейти, если С бит = 1 | Jump if carry |
JNC | Адрес | ; Перейти, если С бит = 0 | Jump if no carry | |
JZ | Адрес | ; Перейти, если Z бит = 1 | Jump if zero | |
JNZ | Адрес | ; Перейти, если Z бит = 0 | Jump if not zero | |
JP | Адрес | ; Перейти, если S бит = 0 | Jump if positive | |
JM | Адрес | ; Перейти, если S бит = 1 | Jump if minus | |
JPE | Адрес | ; Перейти, если P бит = 1 | Jump if parity even | |
JPO | Адрес | ; Перейти, если P бит = 0 | Jump if parity odd |
3.7. Программирование операций ввода/вывода данных
Имеется две команды: IN и OUT . Эти команды используются для того, чтобы передать (считать) байт данных из канала (порта) ввода в аккумулятор, или для того, чтобы содержимое Akk передать (записать) в выбранный канал (порт) вывода. Номера порта при этом задаются операндом. Команды ввода/вывода не влияют на биты состояния.
Формат команды:
(Метка:) IN канал ; Комментарий
Пример 1: m1: IN 6 ; считать один байт из 6-го порта
m2: OUT 29 ; передать 1 байт из Akk в 29-й порт
Команда останова HLT . Она занимает в памяти 1 байт и используется для того, чтобы остановить выполнения команд в микропроцессоре. Содержимое регистров и памяти остается неизменным. Повторный запуск микропроцессора возможен только по сигналу прерывания.
Пример 2. Анализировать постоянно состояние порта 34h. Если на введенное число отличное от нуля, то вывести на индикатор, подключенный к порту 27h число, содержащееся в ячейке памяти с адресом 800h, увеличенное на 25.
m1: IN 34h ; Прочитать число с порта 34h
ANI FFh ; Произвести установку флагов
JZ m1 ; Если 0, то продолжать ввод с порта
LDA 0800h ; Загрузить в аккумулятор содержимое ячейки памяти
ADI 25 ; Увеличить число на 25
OUT 27h ; Выдать данные на индикатор
Дата добавления: 2016-02-09; просмотров: 1457;