Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр№5 Арифметич команды_передел.doc
Скачиваний:
33
Добавлен:
01.03.2025
Размер:
111.62 Кб
Скачать

2. Краткие теоретические сведения.

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

Команды сложения

ADD <операнд1>, <операнд2> - команда сложения с принципом действия: <операнд1>:=<операнд1>+<операнд2>

ADC <операнд1>, <операнд2> - команда сложения с учетом флага переноса. Принцип действия: <операнд1>:=<операнд1>+<операнд2>+ значение CF

INC <операнд1> - операция инкремента, то есть увеличения значения операнда на 1.

В качестве <операнд1> можно использовать любой из регистров общего назначения или переменную в памяти, размерность в 1 байт, слово или двойное слово.

В качестве <операнд2> можно также использовать один из РОН, переменную в памяти.

Команды вычитания

SUB <операнд1>, <операнд2> - команда вычитания. Ее принцип действия: <операнд1>:= <операнд1> – <операнд2>.

SBB <операнд1>, <операнд2> - команда вычитания с учетом заема (флага CF ): <операнд1> := <операнд1> – <операнд2> – <значение_cf>.

DEC <операнд1> - операция декремента, то есть уменьшения значения операнда на 1.

Команды умножения

В составе МП есть две команды умножения, которые можно применять для умножения целых чисел без знака (MUL) и со знаком (IMUL).

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

MUL <операнд>

IMUL <операнд>

IMUL <регистр 16/32>, <операнд1>

IMUL <регистр 16/32>, <операнд1>, <const>

В команде беззнакового умножения один сомножитель и произведение являются предопределенными регистрами общего назначения. Второй сомножитель может быть одним из РОН или переменной в памяти. Т.к. при умножении двух сомножителей результат всегда будет превышать размерность любого из них, то в качестве регистра для хранения произведения используется регистр или пара регистров, достаточная, чтобы хранить полный результат команды умножения.

Если в качестве <операнд> используется 8-ми разрядный регистр или байт в памяти, то в качестве второго сомножителя всегда используется регистр AL, а результат помещается в 16-ти разрядный регистр AX.

Если используется 16-ти разрядный регистр или переменная в памяти размерностью в два байта, то в качестве второго сомножителя всегда используется регистр AX, а результат помещается в два 16-ти разрядных регистра DX:AX – старшая часть в регистр DX, младшая – в AX.

Если используется 32-х разрядный регистр или переменная в памяти размерностью в 4 байта, то второй сомножитель всегда находится в регистре EAX, результат записывается в два 32-х разрядных регистра EDX:EAX.

Команды деления

В составе МП есть две команды деления, которые можно применять для деления целых чисел без знака (DIV) и со знаком (IDIV).

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

DIV <операнд>

IDIV <операнд>

Операнд команды деления является делителем, делимое и результат операции – частное и остаток – помещаются в предопределенные регистры, зависящие от размерности операнда в команде.

Если длина <операнд> - байт, то предполагается, что делимое слово, находящееся в регистре AX, результат деления будет находится в регистре AL, остаток – в AH.

Если длина <операнд> - слово, то предполагается, что делимое двойное слово, находящееся в паре регистров DX:AX. Частное тогда запишется в регистр AX, остаток – в DX.