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



не равно > больше >я больше или равно < меньше <я меньше или равно

Глядя на эти условия, стоит вспомнить, что в ассемблере есть два типа сравне­ний — для чисел со знаком и без. Так вот, директивы .IF .ELSE .ENDIF по умолча­нию считают числа беззнаковыми, то есть ассемблер поставит вместо .IF еах < О инструкцию jb, а для условия .IF еах > 0 поставит инструкцию ja. Чтобы заста­вить ассемблер использовать инструкции сравнения чисел со знаком jg и jV, нужно пометить одно из сравниваемых чисел оператором SDWORD PTR (для двой­ного слова), SWORD PTR (для слова) или же SBYTE PTR (для байта). Так, например, директива .IF SDWORD PTR digit > 0 превратится в инструкцию jle (если меньше или равно, перейти), а директива .IF digit > 0 станет инструкцией jbe, которая работает с числами без знака.

Арифметические команды и флаги

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

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

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


назад далее