Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет№9(asm).docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
87.86 Кб
Скачать

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

1) Команды счёта

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

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

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

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

Примеры:

INC AL

DEC [BX](Рисунок 3)

Рисунок 3-DEC[BX]

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

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

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

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

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

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

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

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

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

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

П ример: ADD [BX], DI(Рисунок 4)

Рисунок 4- ADD [BX], DI

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

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

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

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

C =1;

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

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

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

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

Команды корректировки – команды обработки результатов арифметических операций над кодами чисел 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Н делается программным путём, с помощью команды ИЛИ.

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

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

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

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

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

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

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

Пример: AND [BX], 001b(Рисунок 5)\

Рисунок 5- AND [BX], 001b

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

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

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

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

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

10101011

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

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

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

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

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

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

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

10111111

1 1011111 С

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

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

Примеры:

SAL

SAR

SHR [BP]

ROL

ROR

RCL

RCR

SAR byte ptr [BX]-проиллюстрирована на рисунке 6

Рисунок 6- SAR byte ptr [BX]