Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЭ, Часть 2.doc
Скачиваний:
7
Добавлен:
22.12.2018
Размер:
1.01 Mб
Скачать

4. Команды переходов.

Все команды перехода делятся на безусловные и условные. Безусловные команды перехода осуществляют передачу управления, изменяя значение программного счетчика. Команды условного перехода сначала проверяют состояние одного из флагов, чтобы определить, выполнено ли указанное в команде условие.

1) JMP [адрес]

(РС)←(байт 3)(байт 2)

(Jump). Управление передается команде, адрес которой указан во втором и третьем словах команды перехода (младший и старший байты адреса соответственно).

J(условие) [адрес] (Conditional jump). Условное ветвление (переход). Если указанное условие выполняется, управление передается команде, адрес которой указан во втором и третьем байтах команды; если нет – последовательный код команды не изменяется. Имеются следующие условия перехода:

NZ - не ноль (Z=0);

Z - ноль (Z=1);

NC - нет переноса (CY=0);

C - есть перенос (CY=1);

PO - нечетный результат (Р=0);

РЕ - четный результат (Р=1);

Р - плюс (S=0);

М - минус (S=1).

  1. CALL [адрес] Вызов. Управление передается команде, адрес которой указан во втором и третьем байтах команды (осуществляется вызов подпрограммы по указанному адресу).

Старшие 8 бит адреса следующей команды пересылаются в память, адрес которой на 1 меньше содержимого указателя стека SP. Младшие 8 бит адреса следующей команды пересылаются в память, адрес которой на 2 меньше указателя стека. Содержимое SP уменьшается на 2 (дважды декрементируется).

  1. RET (Return). Возврат из подпрограммы. Применяется всегда в паре с командой CALL. Управление передается команде, следующей за командой CALL (ее адрес запоминается в стеке и по команде RET передается в счетчик программ).

Существуют также команды вызова по условию (С(условие)[адрес]) и возвращения по условию (R(условие)[адрес]).

4. Команды ввода/вывода и управления.

1) PUSH rp

(SP)-1←rh,

(SP)-2←rl,

(SP)←(SP)-2

Поместить в стек. Содержимое старшего регистра пары регистров пересылается в ячейку памяти, адрес которой на 1 меньше указателя стека SP. Содержимое младшего регистра пары пересылается в память, адрес которой на 2 меньше содержимого SP. Содержимое указателя стека дважды декрементируется.

2) POP rp

(rl)←(SP),

(rh)←(SP)+1,

(SP)←(SP)+2.

(Pop). Извлечь из стека. Содержимое памяти, адрес которой определяется регистром SP, передается в младший регистр пары rp. Содержимое памяти, адрес которой больше на 1 содержимого SP, передается в старший регистр пары rp. Содержимое регистра дважды инкрементируется.

3) IN [порт] (Input). Данные, помещенные на восьмиразрядную двунаправленную шину данных указанным во втором байте команды портом, передаются в аккумулятор.

4) OUT [порт] (Output). Вывести данные. Содержимое аккумулятора помещается на двунаправленную шину данных для передачи в указанный порт.

5) NOP (No op). Нет операции. Не выполняется никакая операция.

6) HLT (Halt). Останов. Процессор останавливается.