Программирование на Ассемблере


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


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



Содержание раздела