Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 17 - 18 - Система команд IA-32.ppt
Скачиваний:
47
Добавлен:
18.02.2023
Размер:
612.35 Кб
Скачать

Арифметические команды

Команда незнакового умножения: MUL множитель

Множителем может быть:

8-разрядный регистр или ячейка памяти: AX = AL * множитель, 16-разрядный регистр или ячейка памяти: DX:AX = AX * множитель, 32-разрядный регистр или ячейка памяти: EDX:EAX = EAX * множитель

Флаги OF и CF устанавливаются в 1, если старшая часть результата не равна 0. В противном случае – в ноль.

Примеры:

mul

ch

mul

word ptr [edi]

mul

ecx

 

 

Арифметические команды

Команда знакового умножения: IMUL множитель

IMUL назначение, источник

IMUL назначение, источник1, источник2

1 вариант: совпадает с MUL

2 вариант: назначение = назначение * источник, назначение – РОН, источник – РОН, ячейка памяти, непосредственное значение

3 вариант: назначение = источник1 * источник2,

назначение – РОН, источник1 – РОН, ячейка памяти, источник2 – непосредственное значение.

Примеры:

imul

cx

imul

eax, dword ptr [esi]

imul

eax, edx, 100

 

 

Арифметические команды

Команда незнакового деления: DIV делитель

Делитель может быть РОН или ячейкой памяти.

Если делитель 8-разрядный, то AX / делитель → AL – частное, AH – остаток.

Если делитель 16-разрядный, то DX:AX / делитель → AX – частное, DX

– остаток.

Если делитель 32-разрядный, то EDX:EAX / делитель → EAX – частное, EDX – остаток.

Примеры:

div

cl

div

word ptr [edi]

div

ebx

 

 

Арифметические команды

Команда знакового деления: IDIV делитель

Делитель может быть РОН или ячейкой памяти.

Если делитель 8-разрядный, то AX / делитель → AL – частное, AH – остаток.

Если делитель 16-разрядный, то DX:AX / делитель → AX – частное, DX

– остаток.

Если делитель 32-разрядный, то EDX:EAX / делитель → EAX – частное, EDX – остаток.

Примеры:

idiv

cl

idiv

word ptr [edi]

idiv

ebx

 

 

Арифметические команды

Команда инкремента: INC значение

Команда декремента: DEC значение

Значение может быть РОН или ячейкой памяти 8-, 16- или 32- разрядности.

Не оказывает влияния на CF, остальные флаги устанавливаются в зависимости от полученного результата.

Пример:

inc

edx

dec

es:[edi]

 

 

Арифметические команды

Команда арифметического отрицания: NEG значение

Равнозначна вычитанию из 0. Значение может быть РОН или ячейкой памяти 8-, 16- или 32-разрядности.

CF устанавливается в 0, если операнд равен 0. В противном случае CF устанавливается в 1. Остальные флаги устанавливаются согласно результату.

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

 

CMP

операнд1, операнд2

Вычитает из первого операнда второй операнд без сохранения результата, устанавливает флаги в соответствии с результатом.

Первый операнд может быть РОН или ячейкой памяти, второй операнд – РОН, ячейкой памяти или непосредственным значением. Оба операнда не могут быть одновременно ячейками памяти.

Логические команды

Команда побитового «И»

AND назначение, источник

Назначение: РОН, память.

Источник: РОН, память, непосредственное значение.

Оба операнда не могут быть одновременно памятью

Флаги CF и OF очищаются, флаги ZF, SF, PF устанавливаются в соответствии с результатом.

Примеры:

and

al, ah

and

eax, es:[edi]

and

word ptr es:[edi], 200

and

dx, 0ff00h

 

 

Логические команды

Команда побитового «ИЛИ»

OR назначение, источник

Назначение: РОН, память.

Источник: РОН, память, непосредственное значение.

Оба операнда не могут быть одновременно памятью

Флаги CF и OF очищаются, флаги ZF, SF, PF устанавливаются в соответствии с результатом.

Примеры:

or

al, dh

or

eax, ds:[esi]

or

word ptr es:[edi], 200

or

dx, 7777h

 

 

Логические команды

Команда побитового «Исключающее ИЛИ» XOR назначение, источник

Назначение: РОН, память.

Источник: РОН, память, непосредственное значение.

Оба операнда не могут быть одновременно памятью

Флаги CF и OF очищаются, флаги ZF, SF, PF устанавливаются в соответствии с результатом.

Примеры:

xor

al, dh

xor

eax, ds:[esi]

xor

word ptr es:[edi], 200

xor

dx, 7777h

 

 

Логические команды

Команда побитового отрицания: NOT назначение

Назначение: РОН или память Не оказывает влияния на регистр флагов

Примеры:

not edx not ds:[ebx]