⚙️INSTRUCCI0NES ARITMETICAS

Instrucciones Aritmeticas

Instruccion INC

La instrucion INC se usa para incrementar un operando en uno. Funciona en un solo operando que puede estar en un registro o en memoria.

SINTAXIS:

INC detination

El destino del operando podria ser un operando de 8 bits, 16 bits o 32 bits.

EJEMPLO:

INC EBX        ; Incrementa el registro a 32 bits
INC DL         ; Incrementa el registro a 8 bits
INC [count]    ; Incrementa la variable del contador

Instruccion DEC

Se usa para decrementar un operando en uno.

DEC destination

El destino del operando podria ser un operando de 8 bitsm 16 bits o 32 bits.

EJEMPLO:

segment .data
    count dw 0
    value db 15
    
segment .text
    inc [count]
    dec [value]
    
    mov edx, count
    inc word [ebx]
    
    mov esi, value
    dec byte [esi]

Instrucciones ADD y SUB (Suma y Resta)

estas instrucciones se utilizan para realizar sumas/restas simples de datos binarios en byte, palabra y palabra doble, es decir, para sumar o restar operandos de 8 bits, 16 bits o 32 bits, respectivamente.

La instruccion ADD/SUB puede tener lugar entre:

  • Registrese para registrarse.

  • Memoria para registrar.

  • Registrarse en la memoria.

  • Registrese a datos constantes.

  • Memoria a datos constantes.

Al igual que otras instrucciones, las operaciones de memoria a mamoria no son posibles con las instrucciones ADD/SUB. Una operacion ADD o SUB establece o borra los indicadores de desbordamiento.

EJEMPLO:

Se pedira dos digitos al ususario, los almacenara en EAX y EBX, agregara los valores, almacenara el resultado en una ubicacion de memoria res y al final muestra el resultado.

Instruccion MUL/IMUL (Multiplicacion)

El MUL maneja datos sin firmar y IMUL maneja datos con signo. Pero ambos afectan la bandera de Acarreo Y Desbordamiento.

SINTAXIS:

La multiplicacion en ambos casos estar en un acomulador, dependiendo del tamaño del multipicando y el multiplicador y el producto generado tambien se almacena en dos registros dependiendo del tamañode los operandos.

Vemos el siguiente ejemplo:

Sr.No.

Escenarios

1

Cuando se multiplican dos bytes:

El multiplicando está en el registro AL y el multiplicador es un byte en la memoria o en otro registro. El producto está en AX. Los 8 bits de orden superior del producto se almacenan en AH y los 8 bits de orden inferior se almacenan en AL.

Aritmética1

2

Cuando se multiplican dos valores de una palabra:

El multiplicando debe estar en el registro AX y el multiplicador es una palabra en la memoria u otro registro. Por ejemplo, para una instrucción como MUL DX, debe almacenar el multiplicador en DX y el multiplicando en AX.

El producto resultante es una palabra doble, que necesitará dos registros. La parte de orden superior (más a la izquierda) se almacena en DX y la parte de orden inferior (más a la derecha) se almacena en AX.

Aritmética2

3

Cuando se multiplican dos valores de palabra doble:

Cuando se multiplican dos valores de palabra doble, el multiplicando debe estar en EAX y el multiplicador es un valor de palabra doble almacenado en la memoria o en otro registro. El producto generado se almacena en los registros EDX:EAX, es decir, los 32 bits de orden superior se almacenan en el registro EDX y los 32 bits de orden inferior se almacenan en el registro EAX.

Aritmética3

EJEMPLO:

Ejemplo multiplicando 3 y 2 , imprimiendo el resultado:

Instrucciones DIV/IDIV

La division genera dos elementos, un cociente y un resto. En la division puede ocurrir desbordamiento. El procesador genera una interrupcion si se produce un desbordamiento.

Igual DIV -> sin firma o signo, IDIV-> datos con signo.

SINTAXIS

El dividendo esta en un acomulador. Ambas instrucciones pueden funcionar el operandos de 8 bits, 16 bits o 32 bits. La operacion afecta a los seis indicadores de estado.

Vemamos tres casos de division con diferentes tamaños:

Sr.No.

Escenarios

1

Cuando el divisor es 1 byte −

Se supone que el dividendo está en el registro AX (16 bits). Después de la división, el cociente pasa al registro AL y el resto al registro AH.

Aritmética4

2

Cuando el divisor es 1 palabra −

Se supone que el dividendo tiene una longitud de 32 bits y está en los registros DX:AX. Los 16 bits de orden superior están en DX y los 16 bits de orden inferior están en AX. Después de la división, el cociente de 16 bits va al registro AX y el resto de 16 bits al registro DX.

Aritmética5

3

Cuando el divisor es palabra doble −

Se supone que el dividendo tiene una longitud de 64 bits y está en los registros EDX:EAX. Los 32 bits de orden superior están en EDX y los 32 bits de orden inferior están en EAX. Después de la división, el cociente de 32 bits pasa al registro EAX y el resto de 32 bits pasa al registro EDX.

Aritmética6

EJEMPLO:

Divide 8 entre 2. El dividendo 8 se almacena ene l registro AX de 16 bits y el divisor se almacena en el registro bBL de 8 bits.

Última actualización