mask_b equ 10111011 … mov al,mask_b shr 3 ;al=00010111 |
Рис. 6. Синтаксис операторов сдвига
Операторы сравнения (возвращают значение “истина” или “ложь”) предназначены для формирования логических выражений (см. рис. 7 и ). Логическое значение “истина” соответствует цифровой единице, а “ложь” — нулю. Например,
tab_size equ 30 ;размер таблицы … mov al,tab_size ge 50 ;загрузка размера таблицы в al cmp al,0 ;если tab_size < 50, то je m1 ;переход на m1 … m1: … |
В этом примере если значение tab_size больше или равно 50, то результат в al равен 0ffh, а если tab_size меньше 50, то al равно 00h. Команда cmp сравнивает значение al с нулем и устанавливает соответствующие флаги в flags/eflags. Команда je на основе анализа этих флагов передает или не передает управление на метку m1.
Рис. 7. Синтаксис операторов сравнения
Таблица 1. Операторы сравнения
Оператор | Значение |
eq | ИСТИНА, если выражение_1 равно выражение_2 |
ne | ИСТИНА, если выражение_1 не равно выражение_2 |
lt | ИСТИНА, если выражение_1 меньше выражение_2>ИСТИНА, если выражение_1 не равно выражение_2 |
le | ИСТИНА, если выражение_1 меньше или равно выражение_2 |
gt | ИСТИНА, если выражение_1 больше выражение_2 |
ge | ИСТИНА, если выражение_1 больше или равно выражение_2 |
Логические операторы выполняют над выражениями побитовые операции (рис. 8). Выражения должны быть абсолютными, то есть такими, численное значение которых может быть вычислено транслятором. Например:
flags equ 10010011 mov al,flags xor 01h ;al=10010010;пересылка в al поля flags с ;инвертированным правым битом |