En este tema, aprenderemos sobre las instrucciones aritméticas en el lenguaje ensamblador. Estas instrucciones son fundamentales para realizar operaciones matemáticas básicas como suma, resta, multiplicación y división. A lo largo de esta sección, veremos cómo se utilizan estas instrucciones, ejemplos prácticos y ejercicios para reforzar el aprendizaje.

Conceptos Clave

  1. Instrucciones Aritméticas Básicas:

    • ADD: Suma dos operandos.
    • SUB: Resta el segundo operando del primero.
    • MUL: Multiplica dos operandos.
    • DIV: Divide el primer operando por el segundo.
  2. Operandos:

    • Los operandos pueden ser registros, valores inmediatos o direcciones de memoria.
  3. Registros Comunes:

    • AX, BX, CX, DX: Registros de propósito general en la arquitectura x86.

Instrucciones Aritméticas en Detalle

Suma (ADD)

La instrucción ADD suma el valor del segundo operando al primer operando y almacena el resultado en el primer operando.

Sintaxis:

ADD destino, fuente

Ejemplo:

MOV AX, 5      ; AX = 5
ADD AX, 3      ; AX = AX + 3 -> AX = 8

Resta (SUB)

La instrucción SUB resta el valor del segundo operando del primer operando y almacena el resultado en el primer operando.

Sintaxis:

SUB destino, fuente

Ejemplo:

MOV AX, 10     ; AX = 10
SUB AX, 4      ; AX = AX - 4 -> AX = 6

Multiplicación (MUL)

La instrucción MUL multiplica el valor del operando por el valor en el registro AX y almacena el resultado en AX (para operandos de 8 bits) o en DX:AX (para operandos de 16 bits).

Sintaxis:

MUL fuente

Ejemplo:

MOV AX, 2      ; AX = 2
MOV BX, 3      ; BX = 3
MUL BX         ; AX = AX * BX -> AX = 6

División (DIV)

La instrucción DIV divide el valor en el registro AX (para operandos de 8 bits) o en DX:AX (para operandos de 16 bits) por el operando. El cociente se almacena en AX y el residuo en DX.

Sintaxis:

DIV fuente

Ejemplo:

MOV AX, 10     ; AX = 10
MOV BX, 2      ; BX = 2
DIV BX         ; AX = AX / BX -> AX = 5, DX = 0

Ejercicios Prácticos

Ejercicio 1: Suma y Resta

Escribe un programa en ensamblador que sume dos números y luego reste un tercer número del resultado.

Código:

section .data
    num1 db 10
    num2 db 5
    num3 db 3

section .bss
    result resb 1

section .text
    global _start

_start:
    ; Suma num1 y num2
    mov al, [num1]
    add al, [num2]

    ; Resta num3 del resultado
    sub al, [num3]

    ; Almacena el resultado
    mov [result], al

    ; Salida del programa
    mov eax, 1
    int 0x80

Ejercicio 2: Multiplicación y División

Escribe un programa en ensamblador que multiplique dos números y luego divida el resultado por un tercer número.

Código:

section .data
    num1 db 6
    num2 db 4
    num3 db 2

section .bss
    result resb 1

section .text
    global _start

_start:
    ; Multiplica num1 y num2
    mov al, [num1]
    mov bl, [num2]
    mul bl

    ; Divide el resultado por num3
    mov bl, [num3]
    div bl

    ; Almacena el resultado
    mov [result], al

    ; Salida del programa
    mov eax, 1
    int 0x80

Retroalimentación y Consejos

  • Errores Comunes:

    • No inicializar los registros antes de usarlos.
    • Olvidar que MUL y DIV afectan a registros específicos (AX, DX).
  • Consejos:

    • Siempre verifica el contenido de los registros antes y después de las operaciones aritméticas.
    • Usa comentarios en tu código para mantenerlo claro y comprensible.

Conclusión

En esta sección, hemos cubierto las instrucciones aritméticas básicas en ensamblador, incluyendo ADD, SUB, MUL y DIV. Estas instrucciones son esenciales para realizar operaciones matemáticas en programas de ensamblador. Asegúrate de practicar con los ejercicios proporcionados para consolidar tu comprensión. En la próxima sección, exploraremos las instrucciones lógicas, que son igualmente importantes para la manipulación de datos en ensamblador.

© Copyright 2024. Todos los derechos reservados