Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.62 Кб
Скачать

22. Объяснить состав и основные особенности использования команд безусловного и условных переходов

Команда безусловного перехода

Команда JMP выполняет безусловный переход – обеспечивает передачу управления при любых обстоятельствах. Формат команды:

JMP метка

здесь управление передается команде c меткой метка. Команда JMP для перехода в пределах -128 до +127 байт имеет тип SHORT. Команда JMP, переходящая за эти пределы, получает тип FAR, для которого генерируется другой машинный код и двухбайтовый операнд. При первом просмотре исходной программы ассемблер определяет длину каждой команды. Но команда JMP может быть длиной два или три байта. Если к моменту просмотра команды JMP ассемблер уже вычислил значение операнда (при переходе назад), то он создает двухбайтовую команду. Если он еще не вычислил значение операнда (при переходе вперед), то он не знает тип перехода (NEAR или FAR) и “на всякий случай” создает трехбайтовую команду. Чтобы указать ассемблеру на необходимость создания двухбайтовой команды, нужно использовать оператор SHORT:

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

Ассемблер поддерживает большое количество команд условного перехода, которые выполняют передачу управления в зависимости от состояний регистра признаков. Например, при сравнении содержимого двух чисел последующий переход зависит от значения признака, устанавливаемого при сравнении.

Команды условного перехода можно разделить на три группы:

1) переходы для беззнаковых данных;

2) переходы для знаковых данных;

3) специальные проверки.

Выбор знаковых либо беззнаковых команд определяется типами используемых данных. Беззнаковые данные используют все биты как биты данных; характерные примеры – символьные цепочки, имена, адреса, натуральные числа. В знаковых данных самый левый бит определяет знак числа, причем его нулевое значение отвечает положительному числу, единичное – отрицательному.

Переходы для беззнаковых данных

Мнемоника Описание Проверяемые признаки

JE/JZ Переход, если равно/нуль ZF

JNE/JNZ Переход, если не равно/не нуль ZF

JA/JNBE Переход, если выше/не ниже или равно ZF, CF

JAE/JNB Переход, если выше или равно/не ниже CF

JB/JNAE Переход, если ниже/не выше или равно CF

JBE/JNA Переход, если ниже или равно/не выше CF, AF

Переходы для знаковых данных

Мнемоника Описание Проверяемые признаки

JE/JZ Переход, если равно/нуль ZF

JNE/JNZ Переход, если не равно/не нуль ZF

JG/JNLE Переход, если больше/не меньше или равно ZF, SF, OF

JGE/JNL Переход, если больше или равно/не меньше SF, OF

JL/JNGE Переход, если меньше/не больше или равно SF, OF

JLE/JNG Переход, если меньше или равно/не больше ZF, SF, OF

Специальные арифметические проверки

Мнемоника Описание Проверяемые признаки

JS Переход, если есть знак (отрицательно) SF

JNS Переход, если нет знака (положительно) SF

JC Переход, если есть перенос (аналогично JB) CF

JNC Переход, если нет переноса CF

JO Переход, если есть переполнение OF

JNO Переход, если нет переполнения OF

JP/JPE Переход, если паритет четный PF

JNP/JPO Переход, если паритет нечетный

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]