98
- прерывания.
Безусловные переходы. Команды безусловных переходов включают
три мнемокода: JMP (безусловный переход), CALL (вызов подпрограмм) и
RET (возврат из подпрограммы).
По команде JMP можно осуществить переход в любую точку
программы, расположенную как в текущем сегменте данных (ближний
переход), так и в другом сегменте (дальний переход). При переходе в
пределах текущего сегмента используются первые три формата команды
JMP. Первый формат позволяет перейти к любой команде внутри текущего
сегмента, для чего к содержимому IP добавляется в дополнительном коде
16-разрядное смещение, старший разряд которого является знаковым.
Второй, укороченный формат позволяет перейти к точке программы,
отстоящей не более чем на – 128; +127 адресов от команды JMP. Третий
формат осуществляет загрузку указателя команд IP 16-разрядным числом,
размещённым по исполнительному адресу ЕА, которое определяется
постбайтом (косвенный переход).
Четвёртый и пятый форматы позволяют производить межсегментные
переходы: в четвёртом формате во втором и третьем байтах формата указан
относительный адрес точки перехода, а в четвёртом и пятом – новое значение
CS.
Команда CALL используется в тех случаях, когда некоторый участок
программы требует неоднократного повторения, CALL – это команда вызова
подпрограммы или процедуры. Она имеет такие же форматы, что и команда
JMP, за исключением укороченного. При выполнении команды CALL
происходит автоматическое запоминание в стеке текущих значений
регистров CS и IP (адрес возврата из подпрограммы). В конце подпрограммы
ставится команда RET, по которой из стека возвращаются сохранённые
значения в CS и IP. При возврате из подпрограмм, расположенных в текущем
сегменте кода, применяются первые два формата команды RET, причём
второй формат отличается от первого тем, что к содержимому указателя
стека добавляется константа, записанная во 2-м и 3-м байтах команды. Этот
приём позволяет сбрасывать значения, записанные в стек при выполнении
этой подпрограммы и не используемые в дальнейшем.
Для межсегментного возврата применят третий и четвёртый форматы
RET, которые обеспечивают восстановление регистров CS и IP.
Условные переходы. Команды условных переходов позволяют
принимать решения о переходе в зависимости от некоторых условий.
Микропроцессор имеет 18 команд условных переходов, позволяющих
проверить:
- отношение между операндами со знаком («больше– меньше»);
- отношение между операндами без знака («выше – ниже»);
- состояние арифметических флагов ZF, SF, CF, OF, PF.