Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы (книга Комаров) / Программирование на Ассемблере (ч 2).doc
Скачиваний:
155
Добавлен:
08.03.2015
Размер:
380.93 Кб
Скачать

Команды сравнения

К этой подгруппе относятся команды 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) команды циклических сдвигов.