Разделы:


Best links:

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

Команда CALLпозволяет вызвать подпрограмму, расположенную как в текущем программном сегменте, так и в другой области памяти. Она имеет такие же форматы, что и команда JMP, за исключением укороченного. В отличие от команды JMPаналогичного формата по команде CALL перед изменением значений IP или IP и CSпроисходит автоматическая запись в стек текущих значений этих регистров, что обеспечивает запоминание точки возврата из подпрограммы.

Для возврата из подпрограммы используется команда RET, под действием которой происходит передача управления по адресу возврата, занесенному в стек при выполнении предыдущей команды CALL. При возврате из подпрограмм, расположенных в текущем программном сегменте, применяются первые два формата команды RET, причем второй формат отличается от первого тем, что к содержимому указателя стека добавляется константа, записанная во 2-м и 3-м байтах команды. Это позволяет одновременно с возвратом из подпрограммы сбрасывать параметры, записанные в стек при выполнении этой подпрограммы и не используемые в дальнейшем.

Для межсегментного возврата применяются третий и четвертый форматы RET, которые обеспечивают восстановление содержимого как указателя команд,   так и программного   сегмента.

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

В мнемокодах команд условных переходов при сравнении чисел со знаком для обозначения условия «больше» используется буква G(Greater - больше), а для обозначения - «меньше» буква L (Less - меньше). Для аналогичных условий при сравнении чисел без знака используются соответственно буквы A (Above- над) и В (Below - под). Условие равенства обозначается буквой Е (Equal - равно), а невыполнение некоторого условия - буквой N (Not - не). Следует отметить, что допускается исползование двух различных мнемокодов для каждой команды; например, мнемокоды JL и JNGF - эквивалентны, поскольку условия «меньше» и «не больше или равно» - идентичны.

предыдущаяследующая