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



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

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

Команды АЛУ и присвоение флагов

Окончания арифметических операций оказывают воздействие на расположение 7 указателей. Солидная часть данных флагов будет рассчитана после исполнения циферных операций с помощью команд сравнительного перехода, и вдобавок с поддержкой функции INTO (перебой по заполнению). Влияние действительных команд на знаки описано далее.

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

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


назад далее