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



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

Методики адресации разрядов

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

CF (знак свитча): В случае если в достигнутом результате сочинения осуществляется перенос из старшего разряда, символ свитча возводится; в противном случае флаг свитча сбрасывается. При вычитании флаг переноса возводится, ежели осуществляется заем в старший байт результата; при нехватке заимствования символ обновляется. Следует помнить, что при появлении меточного трансдукции SC != OF (знак пополнения). Флаг трансдукции МО имеет возможность употребляться для индикации неимеющего знака переполнения.

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


назад далее