logo

Главная Система команд x86 Базовая система команд CPU DEC

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

DEC

Декремент

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

*

     

*

*

*

*

 

 

Код

Команда

Описание

Проц.

Пример

FE /1

DEC r/m8

Уменьшить r/m8 на 1

8086

dec al

FF /1

DEC r/m16

Уменьшить r/m16 на 1

8086

dec word ptr [di]

FF /1

DEC r/m32

Уменьшить r/m32 на 1

Intel386

dec dword ptr [ebx]

48+rw

DEC r16

Уменьшить r16 на 1

8086

dec dx

48+rd

DEC r32

Уменьшить r32 на 1

Intel386

dec ecx

Описание:

Команда DEC (Decrement by 1) относится к группе команд целочисленной (или двоичной) арифметики (Binary Arithmetic Instructions). Она производит целочисленное вычитание, уменьшая операнд команды (операнд-назначение, DEST) на единицу. Операнд-назначение (DEST) является единственным операндом команды и может быть быть переменной в регистре или в памяти (r16, r32, r/m8, r/m16, r/m32).

Особенностью команды DEC является то, что она влияет на флаги EFLAGS.OF, EFLAGS.SF, EFLAGS.ZF, EFLAGS.AF и EFLAGS.PF, но не влияет на флаг переноса EFLAGS.CF. Это востребовано при организации разнообразных циклов, когда нет необходимости отслеживать переполнение. В противном случае нужно использовать команду SUB со вторым операндом равным 1.

Команда DEC с операндом-назначением (DEST), являющимся переменной в памяти, может использоваться совместно с префиксом блокировки LOCK, который обеспечит атомарное исполнение команды.

Для команды DEC обратной является команда INC, увеличивающая операнд-назначение (DEST) на единицу.

Операция:

DEST = DEST - 1;

Особые ситуации защищенного режима:

#GP(0), если операнд-назначение (DEST) находится в памяти в сегменте, запрещенном для записи.
#GP(0), если при обращении к операнду в памяти в сегменте DS, ES, FS или GS используется нулевой селектор.
#GP(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в стековом сегменте SS.

Intel386 … :
#PF(Код ошибки) при страничной ошибке.
#UD при использовании префикса LOCK, если операнд-назначение (DEST) не является значением в памяти.

Intel486 … :
#AC(0) при невыровненной ссылке в память, если активирован контроль выравнивания (CR0.AM = 1, EFLAGS.AC = 1, CPL = 3).

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда в памяти находится вне допустимого для реального режима пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS, если любая часть операнда в памяти выходит за допустимую для реального режима верхнюю границу стекового сегмента SS.

Intel386 … :
#UD при использовании префикса LOCK, если операнд-назначение (DEST) не является значением в памяти.

Особые ситуации режима V86:

#GP(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в сегменте CS, DS, ES, FS или GS.
#SS(0), если любая часть операнда в памяти находится вне допустимого пространства эффективных адресов в стековом сегменте SS.

Intel386 … :
#PF(Код ошибки) при страничной ошибке.
#UD при использовании префикса LOCK, если операнд-назначение (DEST) не является значением в памяти.

Intel486 … :
#AC(0) при невыровненной ссылке в память, если активирован контроль выравнивания (CR0.AM = 1, EFLAGS.AC = 1, CPL = 3).

Замечание:

К командам целочисленной арифметики относятся команды ADD, ADC, SUB, SBB, IMUL, MUL, IDIV, DIV, INC, DEC, NEGCMP.

В свою очередь, сами названные команды целочисленной арифметики делятся на следующие подгруппы:

  • команды сложения (ADDADCINC);
  • команды вычитания (SUB, SBB, DEC);
  • команды умножения (IMUL, MUL);
  • команды деления (IDIV, DIV).
  • команды сравнения и изменения знака (CMP, NEG).

Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники