Основные арифметические команды представлены в табл. 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) рассмотрены выше