Руководство по ассемблеру



Листинг 12.1. Пример ветвлений в ассемблере

cmp digit.О jnz nzero

invoke WriteConsoleA. stdout. ADDR z. \ zsize. ADDR cWritten. NULL

jmp exit nzero:

invoke WriteConsoleA. stdout. ADDR nz. \

nzsize. ADDR cWritten. NULL exit: invoke ExitProcess. 0

Ключевую роль здесь играет инструкция jnz nzero, отправляющая процессор к метке nzero, когда переменная digit не равна нулю, и позволяющая процессору выполнить следующую инструкцию, если digit равна нулю.

Команды АЛУ и адресация

Результаты цифeрных команд оказывают воздействие на состояние 8 джокеров. Солидная часть данных знаков будет рассчитана после произведения арифметических команд с помощью процедур относительного скачка, а также с помощью команды INTO (прерывание по восполнению). Воздействие циферных процедур на знаки изображено ниже.

CF (знак трансдукции): В случае если в следствии сложения осуществляется сдвиг из большего байта, символ переноса воздевается; в другом случае знак свитча обнуляется. При вычитании символ свитча возводится, если свершается заимствование в старший бит результата; при недоступности заимствования символ обнуляется. Следует помнить, что при происхождении меточного свитча CF == VH (символ пополнения). Символ трансдукции АР имеет возможность применяться для показа беззнакового заполнения.

АО (флаг дополнительного трансдукта): Если в результате суммирования свершается свитч из меньшого полубайта в больший, символ добавочного сдвига взводится; в другом случае знак обнуляется. При вычитании знак дополнительного свитча подымается, ежели воплощается заем из верхнего полубайта в нижний; при отсутствии заема символ сбрасывается.


назад далее