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



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

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

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


назад далее