Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
66
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

6.2. Арифметические операции.

1) Команды счёта Пример: dec [bx]

а) Формат команды:INC <приемник>

Содержимое приемника увеличивается на единицу и возвращается в приемник.

б) Формат команды: DEC <приемник>

Содержимое приемника уменьшается на единицу и возвращается в приемник

Примеры:

INC AL

DEC [BX]

2) Арифметические операции над двоичными кодами.

а) Формат команды: ADD <приёмник>, <источник> - сложение

Действие: приемник := приемник + источник

б) Формат команды: SUB <приёмник>, <источник> - вычитание

Действие: приемник := приемник + источник

в) Формат команды: ADC <приёмник>, <источник>

Действие: аналогично ADD, но к сумме добавляется флаг СF.

г) Формат команды: SВB <приёмник>, <источник>

Действие: аналогично SUB, но дополнительно вычитается флаг СF.

Эти команды влияют на флаги. Приемник не может быть адресован непосредственно, оба операнда одновременно не могут быть в памяти.

Пример: ADD [BX], DI

3) Команда сравнения:

Формат команды: CMP <опер1>, <опер2>

Действие: аналогично SUB, но изменяются только флаги.

Пример: пусть DI=51; тогда после выполненияCMP 5, [DI] установятся флаги:

C =1;

Z =0 (т.к. разность не равна нулю);

P =1 (флаг паритета);

S =1 (значение самого старшего разряда).

6.3. Команды корректировки.

Команды корректировки – команды обработки результатов арифметических операций над кодами чисел ASCII. Если ввод операндов происходит из периферийного устройства (клавиатуры) или через псевдооператоры, то арифметические команды применимы только с командами корректировки:

AAA– скорректировать сложение дляASCII

AAS – скорректировать вычитание для ASCII.

Команды используют неявную адресацию приёмника и источника. Источником в них является регистр AL, т.е. корректируемый результат вAL. Приёмником информации являются регистрыAHиAL,причём младший байт откорректированного результата разместится вAL, а перенос вАН. Для полной корректировки, результата в старшие тетрады регистровAH, ALдолжны быть записаны 3H.

Пример:

Op1 dB ‘9’

Var dB ‘9’

MOV AH, 0

MOV BH, op1

ADD var, BH

MOV AL, var

AH AL

00110001b 00110100b

Запись 3Н делается программным путём, с помощью команды ИЛИ.

6.4. Команды логических операций.

1) Поразрядные логические операции:

Формат команды: AND <приёмник>, <источник> - И

Формат команды: OR <приёмник>, <источник> - ИЛИ

Формат команды: XOR <приёмник>, <источник> - исключающее ИЛИ

Формат команды: NOT <приёмник> - НЕ

Формат команды:TEST <опер1>, <опер2> - выполняется как AND, результат не сохраняется, но влияет на флаги, TEST.

Пример: AND [BX], 001b

Команда AND часто применяется для выделения нужного количества бит из 1-го операнда. Маска позволяет выделить необходимый разряд первого операнда.

2) Команды сдвига

Формат команды: <мнемокод операции> <приемник>

Формат команды: <мнемокод ><приемник>

Если число разрядов сдвига равно 1, можно указать в команде, иначе число сдвигов определяется содержимым регистра CX.

10101011

101010110 Сдвиг на один разряд в сторону старшего бита

Сдвиги выполняются влево (L, в сторону старшего разряда) и вправо (R).

Сдвиги бывают:

а) Sxx – простые:

SAx- арифметические

SHx– логические (shift)

При SARзнаковый разряд копирует освобождающиеся разряды:

10111111

11011111 С

б) Rxx– циклические

Логические сдвиги бывают с учётом флага С(RCx) и без учёта флага (ROx,rotation)

Примеры: SAR byte ptr [BX]

SAL

SAR

SHR [BP]

ROL

ROR

RCL

RCR