DEC
Decremento por 1
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
FE /1 | DEC r/m8 | M | Valido | Valido | Decremento r/m8 por 1. |
FF /1 | DEC r/m16 | M | Valido | Valido | Decremento r/m16 por 1. |
FF /1 | DEC r/m32 | M | Valido | Valido | Decremento r/m32 por 1. |
REX.W + FF /1 | DEC r/m64 | M | Valido | No codificable | Decremento r/m64 por 1. |
48+rw | DEC r16 | O | No codificable | Valido | Decremento r16 por 1. |
48+rd | DEC r32 | O | No codificable | Valido | Decremento r32 por 1. |
Codificacion de operandos
Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.
M
modrm.rmlectura y escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
O
opcode.reglectura y escrituralos tres bits bajos del propio byte de opcode
Coste medido
Cargando las mediciones de arch-data...
Banderas nombradas
CFAcarreoPFParidadAFAcarreo auxiliarZFCeroSFSignoOFDesbordamiento
Descripción
Subtracts 1 del operando de destino, mientras preserva el estado de la bandera CF. El operando de destino puede ser un registro o una ubicación de memoria. Esta instrucción permite actualizar un contador de bucle sin perturbar la bandera CF. (Para realizar una operación de decremento que actualiza la bandera CF, utilice una instrucción SUB con un operando inmediato de 1.)
Esta instrucción se puede utilizar con un prefijo LOCK para permitir que la instrucción se ejecute atómicamente.
En modo de 64 bits, DEC r16 y DEC r32 no son encodables (porque códigos de operación 48H a través de 4FH son prefijos REX). De lo contrario, el tamaño de operación predeterminado de 64 bits de la instrucción es de 32 bits. El uso del prefijo REX.R permite el acceso a registros adicionales (R8-R15). El uso del prefijo REX.W promueve la operación a 64 bits.
Vea la tabla resumen al comienzo de esta sección para la codificación de datos y límites.
Operación
DEST := DEST 1;Banderas afectadas
La bandera CF no está afectada. Las banderas OF, SF, ZF, AF y PF se establecen según el resultado.
Excepciones
Modo protegido
#GP(0) | Si el operando de destino se encuentra en un segmento no escrito. Si la dirección efectiva un operando de memoria está fuera del límite de segmento CS, DS, ES, FS o GS. Si el registro DS, ES, FS o GS contiene un NULL selector de segmento. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
Modo real
#GP | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
Modo virtual-8086
#GP(0) | Si un operando de memoria dirección efectiva está fuera del límite de segmento CS, DS, ES, FS o GS. |
#SS(0) | Si un operando de memoria dirección efectiva está fuera del límite del segmento SS. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |
Modo de compatibilidad
| Las mismas excepciones que en modo protegido. |
Modo de 64 bits
#SS(0) | Si una dirección de memoria que hace referencia al segmento SS está en forma no canónica. |
#GP(0) | Si la dirección de memoria está en forma no canónica. #PF(fault-code) Si un fallo de pagina ocurre. |
#AC(0) | Si la comprobación de alineación está habilitada y se hace una referencia de memoria no alineada mientras que el nivel de privilegio actual es 3. |
#UD | Si el prefijo LOCK se utiliza pero el destino no es un operando de memoria. |