Основные арифметические команды
Основные арифметические команды представлены в табл. 5.1
Таблица 5.1. Основные арифметические команды
Назначение | Общий вид | Комментарий | |||
Сложение
| add <Оп1>, <Оп2>
xadd <Оп1>, <Оп2> | Оп1 = Оп1 + Оп2
Оп1«Оп2, Оп1 = Оп1 + Оп2 | |||
Вычитание | sub <Оп1>, <Оп2> | Оп1 = Оп1 - Оп2 | |||
Умножение беззнаковое | mul < Оп > | ||||
Умножение знаковое | imul < Оп > | ||||
Умножение знаковое 2-х операндное | imul <Оп1>, <Оп2> | Оп1 = Оп1 * Оп2 | |||
Умножение знаковое 3-х операндное | imul <Оп1>, <Оп2>, константа | Оп1 = Оп2 * константа | |||
Деление беззнаковое
Деление знаковое | div <Оп>
idiv <Оп> |
Во всех командах не допускается два адреса памяти.
При выполнении сложения с помощью команды xadd второй операнд должен быть регистром.
Команды умножения с двумя (тремя ) операндами есть только для знаковых умножений (умножение с учетом знака). Эти команды формируют произведение длиной сомножителей, поэтому их нецелесообразно использовать в случае возможного переполнения.
Деление выполняется нацело, дробная часть результата отбрасывается. Одновременно с частным формируется остаток от деления. Если при выполнении деления частное не помещается в отведенное для него поле, возникает особая ситуация “Деление на ноль”. Команда деления может требовать специальной подготовки для записи делимого. Подготовка состоит в расширении делимого знаковым разрядом для чисел со знаком и обнулении старшей части делимого для чисел без знака. Для этих целей можно использовать команды пересылки или специальные команды. Команды пересылки (MOV) рассмотрены выше