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



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

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

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

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


назад далее