Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры Схемотехника.doc
Скачиваний:
9
Добавлен:
25.09.2019
Размер:
14.02 Mб
Скачать

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

Команда CALL служит для вызова подпрограмм. Имеется два типа команды CALL: для межсегментных вызовов подпрограмм с прямой и косвенной адресацией и для внутрисегментных вызовов подпрограмм с прямой и косвенной адресацией.

При выполнении команды CALL addr для межсегментного вызова подпрограммы с прямой адресацией содержимое программного счетчика РС увеличивается на 5 (относительно первого адреса первого байта команды) и заносится в стек. Содержимое регистра SP уменьшается на 4. Новое значение РС определяется первыми двумя байтами адреса, содержащегося в команде CALL, а новое значение регистра CS - вторыми двумя байтами адреса, содержащегося в команде САLL.

При выполнении команды CALL [M] для межсегментного вызова подпрограммы с косвенной адресацией адрес подпрограммы выбирается из четырех ячеек памяти, причем адрес первой ячейки указан в [M] .

Для команд (CALL disp и CALL R/[M] ) внутрисегментных вызовов подпрограмм содержимое счетчика РС запоминается в стеке. Содержимое регистра SP уменьшается на 2. Новое содержимое программного счетчика РС определяется значением disp для прямой адресации или содержимым регистра R или памяти [M] для косвенной адресации. Новое содержимое сегментного регистра CS определяется суммированием старых значений счетчика РС и регистра CS.

Каждому типу команды CALL для возврата из подпрограммы соответствует своя команда RET. Для внутрисегментных возвращений из подпрограмм используются команды RET (C3H) и RET (C2H) disp, для межсегментных возвращений из подпрограмм - RET (CBH) и RET (CAH) disp. Смещение disp в командах RET прибавляется к содержимому указателя стека SP.

Команда JMP безусловного перехода в отличие от команды CALL не записывает какую-либо информацию в стек. Имеется пять типов команд:

JMP disp - внутрисегментный переход с прямой адресацией и 16-разрядным смещением disp;

JMP disp - внутрисегментный переход с прямой адресацией и 8-разрядным смещением disp;

JMP R/[M] - внутрисегментный переход с косвенной адресацией;

JMP addr - межсегментный переход с прямой адресацией;

JMP [M] - межсегментный переход с косвенной адресацией.

Команды условного перехода приведены в табл. 2.6

2.6.4. Команды условного перехода

Таблица 2.6

Обозначение

команды

Условие

перехода

Описание условия перехода

JA, JNBE

JAE, JNB

JB, JNAE

JBE, JNA

JC

JNC

JZ, JE

JBZ, JNE

JGE, JNL

JL, JNGE

JLE, JNG

JNO

JO

JP, JPE

JNP, JPO

JNS

JS

(CvZ) = 0

С = 0

C = 1

(CvZ) = 1

C = 1

С = 0

Z = 1

Z = 0

(S + O) = 0

(S + O) = 1

((S+O)vZ)=1

O = 0

O = 1

P = 1

P = 0

S = 0

S = 1

Больше с учетом знака или не меньше с учетом знака и не эквивалентно

Больше с учетом знака или не меньше с учетом знака или равно

Меньше с учетом знака или не больше и не эквивалентно

Меньше с учетом знака, или эквивалентно, или не больше

Переход к переносу

Переход по непереносу

Переход по нулю результата

Результат не равен нулю

Больше, или эквивалентно, или не меньше

Меньше или не больше и не эквивалентно

Меньше, или эквивалентно, или не больше

Нет переполнения

Переполнение

Число двоичных единиц четное

Число двоичных единиц нечетное

Положительный результат

Отрицательный результат

В систему команд МП К1810ВМ86 входят команды управления циклами.

Команда LOOP служит для декремента регистра СХ и безусловного перехода по (СХ)=0.

Команды LOOPZ или LOOPE осуществляют декремент регистра СХ и переход по условию (СХ)=0 и Z=1, команды LOOPNZ или LOOPNE по (СХ)0.

Команда JCXZ аналогична команде JMP, но переход осуществляется, если (СХ)=0.

Состояния разрядов регистра признаков могут быть изменены командами:

CLC - сброс признака переноса;

CMC - инвертирование признака переноса;

CLD - сброс признака декремента/инкремента;

CLI - сброс признака разрешения прерывания;

STC - установка признака переноса;

STD - установка признака декремента/инкремента;

STI - установка признака разрешения прерывания.

Для обслуживания прерываний служат команды:

INT - программное прерывание;

INTO- прерывание по переполнению;

IRET- возврат из прерывания.

Управление работой МП осуществляется командами:

HLT - останов;

WAIT- ожидание по сигналу низкого уровня на выводе 23 МП;

ESC - переключение на сопроцессор;

NOP - нет операции.