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



Листинг 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 равна нулю.

Арифметико логические операции с присвоением флага

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

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

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


назад далее