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



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

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

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

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


назад далее