Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Запись на языке высокого уровня




Приемник -= Источник + CF;

Команда DEC – уменьшение на единицу

 

Формат команды

 

Dec Операнд

 

Действие команды
Операнд уменьшается на 1

 

Запись на языке высокого уровня

Операнд--;

Команда NEG – изменение знака

 

Формат команды

 

Neg Операнд

 

Действие команды
Знак операнда изменяется на противоположный

 

Запись на языке высокого уровня

Операнд = -Операнд;

Команда MUL – умножение беззнаковых чисел

 

Формат команды

 

Mul Источник

 

Действие команды
В зависимости от размера операнда Источник:
1 байт: AX = AL*Источник;
2 байта: (DX;AX) = AX*Источник;
4 байта: (EDX;EAX) = EAX*Источник;

Команда MUL – умножение беззнаковых чисел

 

Особенности команды
Размер произведения всегда в два раза больше размера множителей

 

Пример. Реализация команды C=A*B

Mov EAX, A

mul B

mov C, EAX; возможна потеря
; разрядов!!!

Команда DIV – деление беззнаковых чисел

 

Формат команды

Div Источник

Действие команды
В зависимости от размера операнда Источник:
1 байт: AL = AX / Источник;
AH = AX % Источник;

2 байта: AX = (DX;AX) / Источник;
DX = (DX;AX) % Источник;

4 байта: EAX = (EDX;EAX) / Источник;
EDX = (EDX;EAX) % Источник;

Команда DIV – деление беззнаковых чисел

 

Особенности команды
Размер неполного частного и остатка всегда в два раза меньше размера делимого.

Пример. Реализация команды C=A/B

Mov EAX, A

Mov EDX, 0

div B

Mov C, EAX

Команда IMUL – умножение знаковых чисел

 

Формат команды

(1) imul Источник

(2) imul Приемник, Источник

(3) imul Приемник, Источник1, Источник2

Команда IMUL – умножение знаковых чисел

Действие команды, случаи (2), (3)

– операнд-приемник должен быть регистром;

– операнд-источник2 должен быть непосредственным
значением из диапазона [-128; +127];

– результат умножения усекается до размера
операнда-приемника (возможна потеря разрядов)

Команда IMUL – умножение знаковых чисел

Пример. Реализация команды C=A*B

Mov EAX, A

imul EAX, B; возможна потеря!!!

Mov C, EAX

Команда IDIV – деление знаковых чисел

Формат команды

Idiv Источник

Действие команды
Соответствует команде DIV,
но учитывается знаковый бит

При использовании арифметических команд сложение, вычитание, умножение необходимо, чтобы размеры операндов были одинаковыми.

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

Поэтому часто перед выполнением арифметических команд выполняются команды преобразования типов, которые позволяют увеличивать разрядность операндов до требуемых размеров.

Все команды преобразования типов рассчитаны на использование со знаковыми операндами и заполняют дополнительные разряды значением знакового бита.

Команда CBW – преобразование байта в слово

Пример 1. Вычисление C=A+B (Слово = Байт + Слово)

Mov AL, A

Cbw

Add AX, B

Mov C, AX

Команда CBW – преобразование байта в слово

Пример 2. Вычисление C=A/B (Байт = Байт / Байт)

Mov AL, A

Cbw

Idiv B

Mov C, AL

Команда CWD – преобразование слова в двойное слово

Формат команды

Cwd

Действие команды
Заполняет регистр DX значением старшего бита регистра AX, т.е. расширяет AX®(DX;AX)

Команда CWDE – преобразование слова в двойное слово

Формат команды

Cwde

Действие команды
Заполняет старшую часть регистра EAX значением старшего бита регистра AX, т.е. расширяет AX®EAX

Команда CDQ – преобразование двойного слова в учетверенное слово

Формат команды

Cdq

Действие команды
Заполняет регистр EDX значением старшего бита регистра EAX, т.е. расширяет EAX®(EDX;EAX)

Команда CDQ – преобразование двойного слова в учетверенное слово

Пример. Вычисление C=A/B (знаковые операнды)

Mov EAX, A

Cdq

Idiv B

Mov C, EAX

Для преобразования типа беззнаковых операндов достаточно заполнить соответствующий регистр (часть регистра) нулевыми битами, например, с помощью команды MOV

Пример. Вычисление C=A/B (беззнаковые операнды)

Mov EAX, A

Mov EDX, 0

Div B

Mov C, EAX






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных