- •3.11.1 Команды пересылки данных
- •Команды пересылки общего назначения
- •Xchg приемник, источник
- •Команды загрузки адресных значений
- •Команды обращения к стеку
- •Команды пересылки флагов
- •Команды ввода/вывода
- •In аккумулятор, порт
- •In аккумулятор, dx.
- •3.11.2. Арифметические команды
- •Типы арифметических данных
- •Команды инкрементирования и декрементирования
- •Inc приемник
- •Команды сложения и вычитания
- •Команды расширения знака
- •Команды умножения и деления
- •Imul источник.
- •Команды десятичной коррекции
- •Сложение в bdc-формате
- •Вычитание в bcd-формате
- •Сложение в ascii-формате
- •Вычитание в ascii-формате
- •Умножение в ascii-формате
- •Деление в ascii-формате
- •3.11.3 Логические команды
- •Команды логических операций
- •Команды сравнения
- •Команды сдвигов
- •Команды логических сдвигов
- •Команды арифметических сдвигов
- •Команды циклических сдвигов
- •3.11.4. Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды перехода по состоянию арифметических флагов
- •Команды перехода по соотношению между числами
- •Команды перехода по состоянию регистра cx
- •Команды управления циклами
- •Команды для организации подпрограмм
- •Команды прерываний
- •3.11.5. Команды обработки строк
- •Строковые примитивы
Команды сравнения
К этой подгруппе относятся команды CMP и TEST. Они записываются в формате:
CMP приемник, источник
TEST приемник, источник
и осуществляют соответственно арифметическое и логическое сравнение операндов с фиксацией результатов сравнения только на флагах. Значения операндов при выполнении этих команд не изменяются.
Операндами команд CMP и TEST могут быть байты или слова. В качестве приемника и источника данных используются регистры МП или регистр и ячейка памяти. Кроме того, источник может быть и непосредственным значением.
Команда арифметического сравнения CMP выполняет сравнение операндов путем их вычитания подобно команде SUB, но результат вычитания не сохраняется, а лишь фиксируются его признаки на флагах. Таким образом, эта команда реализует операцию
(F) = (приемник) (источник).
По значению флагов можно определить соотношения между операндами. После команды сравнения всегда находится команда условного перехода, анализирующая состояние флагов и передающая управление при истинности условия перехода. На практике следующая за CMP команда условного перехода выбирается по таблице 3.3 в зависимости от требуемого условия перехода (соотношения между сравниваемыми операндами).
Пример 3.83:
CMP AX, DX ; Сравнение регистра с регистром
CMP [BX],DX ; или с ячейкой памяти
CMP AL, 53 ; или с числом
Команда TEST осуществляет логическое сравнение операндов путем выполнения над ними операции поразрядной конъюнкции подобно команде AND. При этом результат операции не сохраняется, а лишь фиксируются его признаки на флагах, которые формируются идентично команде AND. Таким образом, эта команда реализует операцию
(F) = (приемник) (источник).
Как правило, команда TEST используется для проверки значения заданного бита. В этом случае за ней следует команда условного перехода JNZ.
Пример 3.84:
IN AL, Port ; Переход по метке M1,
TEST AL, 80h ; если бит D7 порта
JNZ M1 ; ввода Port установлен в 1
. . . . . . . . . .
M1: . . . . . . . . . .
Команды сдвигов
Команды этой подгруппы предназначены для сдвига байтов или слов на указанное количество разрядов влево или вправо. Все команды сдвигов записываются в формате:
ROTATE приемник, счетчик,
где ROTATE формальная мнемоника команды сдвига;
счетчик формальный параметр, определяющий количество сдвигов операндаприемника.
Параметр "счетчик" может принимать два фактических значения: 1 или CL. В первом случае сдвиг осуществляется на один разряд и называется статическим сдвигом. Во втором случае количество сдвигов операнда определяется содержимым регистра CL, рассматриваемым как беззнаковое целое число. Такой сдвиг называется динамическим.
В качестве приемника могут использоваться 8-битные или 16-битные регистр МП или ячейка памяти.
По сути выполняемых действий все команды сдвигов можно разделить на три подгруппы:
1) команды логических сдвигов;
2) команды арифметических сдвигов;
3) команды циклических сдвигов.