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



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

Глядя на эти условия, стоит вспомнить, что в ассемблере есть два типа сравне­ний — для чисел со знаком и без. Так вот, директивы .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, которая работает с числами без знака.

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

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

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

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


назад далее