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



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

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

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

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


назад далее