Transferencias de datos,  direccionamiento y aritmética

Transferencias de datos, direccionamiento y aritmética

tipos de operandos

Immediate

un entero constante (8, 16 o 32 bits)

Register

el nombre de un registro

Memory

referencia a una ubicación en la memoria

Instrucción MOV

Instrucción MOV

Mover desde el origen al destino.

No se permite más de un operando de memoria

estencion de signo

estencion de signo

La instrucción MOVSX llena la mitad superior del destino con una copia del bit de signo del operando de origen.

Adición y resta

Adición y resta

INC e DEC Instruciónes

Destino INC : Lógica:destino + 1

Destino DEC: Lógica: destino - 1

Instrucciones ADD y SUB

Lógica:destino + fuente

Lógica: destino - fuente

NEG (negate) Instrucción

Invierte el signo de un operando.

Banderas afectadas por la aritmética

Bandera cero

Sign flag

Carry flag

Overflow flag

Operadores y directivas relacionados con datos

Operador OFFSET

devuelve la distancia en bytes de una etiqueta desde el comienzo de su segmento adjunto

Operador PTR

Anula el tipo predeterminado de una etiqueta (variable)

Orden Little Endian

se refiere a la forma en que Intel almacena enteros en la memoria.

Los enteros de múltiples bytes se almacenan en orden inverso, con el byte

menos significativo almacenado en la dirección más baja

Operador PTR (cont)

e puede usar para combinar elementos de un tipo de datos más pequeño y moverlos a un operando más grande.

LENGTHOF

cuenta el número de elementos en una sola declaración de datos

SIZEOF Operator

devuelve un valor que es equivalente a multiplicar LENGTHOF por TYPE.

Directiva LABEL

Asigna un nombre y tipo de etiqueta alternativos a una ubicación de almacenamiento existente

Operandos de memoria directa

Operandos de memoria directa

es una referencia nombrada al almacenamiento en memoria

Extensión cero

Extensión cero

la instrucción MOVZX llena (extiende) la mitad superior del destino con ceros.

operandos de desviacion directa

Se agrega una compensación constante a una etiqueta de datos para producir una dirección efectiva (EA).

CONT

flags

flags

Zero Flag (ZF)

se establece cuando el resultado de una operación produce cero en el operando de destino.

Sign Flag (SF)

se establece cuando el operando de destino es negativo

Desbordamiento y llevar banderas Un punto de vista de hardware

Cómo afecta la instrucción ADD OF y CF:

CF = (llevar a cabo MSB),OF = CF XOR MSB

Cómo la instrucción SUB afecta a OF y CF:

CF = INVERTIR (llevar a cabo el MSB)

negar la fuente y agregarla al destino

OF = CF XOR MSB

Carry Flag (CF)

El indicador de acarreo se establece cuando el resultado de una operación genera un valor sin signo que está fuera de rango

Overflow Flag (OF)

se establece cuando el resultado de una operación firmado no es válido o está fuera de rango.

Direccionamiento indirecto

Operandos indirectos (1 de 2)

contiene la dirección de una variable, normalmente una matriz o cadena.

Operandos indirectos (2 de 2)

Use PTR para aclarar el atributo de tamaño de un operando de memoria.

Operandos indexados

agrega una constante a un registro para generar una dirección efectiva.

Escalado de índice

Puede escalar un operando indirecto o indexado al desplazamiento de un elemento de matriz.

Punteros

Puede declarar una variable de puntero que contiene el desplazamiento de otra variable.

Instrucciones JMP y LOOP

Instrucción JMP

es un salto incondicional a una etiqueta que generalmente

está dentro del mismo procedimiento.

Instrucción LOOP

crea un ciclo de conteo