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



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

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

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


назад далее