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



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

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

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

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


назад далее