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



Листинг 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 знаков. Громадная часть данных указателей будет рассчитана после выполнения действительных процедур с участием процедур относительного перехода, а также с помощью команды CIN (прерывание по восполнению). Влияние арифметических функций на указатели изображено ниже.

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

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


назад далее