En aquest tema, aprendrem sobre les instruccions aritmètiques en el llenguatge Assembly. Aquestes instruccions són fonamentals per realitzar operacions matemàtiques bàsiques com la suma, la resta, la multiplicació i la divisió. A més, veurem com manipular els registres per emmagatzemar els resultats d'aquestes operacions.

Conceptes Clau

  1. Registres: Espais de memòria dins de la CPU que s'utilitzen per emmagatzemar dades temporals.
  2. Operands: Valors o adreces de memòria sobre els quals s'executen les operacions aritmètiques.
  3. Flags: Indicadors que es modifiquen en funció del resultat d'una operació aritmètica (per exemple, el flag de zero, el flag de transport, etc.).

Instruccions Aritmètiques Bàsiques

Suma (ADD)

L'instrucció ADD s'utilitza per sumar dos operands. El resultat es guarda en el primer operand.

Sintaxi:

ADD destí, font

Exemple:

MOV AX, 5    ; Carrega el valor 5 en el registre AX
ADD AX, 3    ; Suma 3 al valor en AX (AX = 5 + 3 = 8)

Resta (SUB)

L'instrucció SUB s'utilitza per restar el segon operand del primer operand. El resultat es guarda en el primer operand.

Sintaxi:

SUB destí, font

Exemple:

MOV AX, 10   ; Carrega el valor 10 en el registre AX
SUB AX, 4    ; Resta 4 del valor en AX (AX = 10 - 4 = 6)

Multiplicació (MUL)

L'instrucció MUL s'utilitza per multiplicar dos operands. En el cas de la multiplicació, el resultat es guarda en registres específics depenent de la mida dels operands.

Sintaxi:

MUL font

Exemple:

MOV AX, 2    ; Carrega el valor 2 en el registre AX
MOV BX, 3    ; Carrega el valor 3 en el registre BX
MUL BX       ; Multiplica AX per BX (AX = 2 * 3 = 6)

Divisió (DIV)

L'instrucció DIV s'utilitza per dividir dos operands. El dividend es troba en registres específics, i el quocient i el residu es guarden en registres específics depenent de la mida dels operands.

Sintaxi:

DIV font

Exemple:

MOV AX, 10   ; Carrega el valor 10 en el registre AX
MOV BX, 2    ; Carrega el valor 2 en el registre BX
DIV BX       ; Divideix AX per BX (AX = 10 / 2 = 5, residu = 0)

Exercicis Pràctics

Exercici 1: Suma i Resta

Escriu un programa en Assembly que sumi dos nombres i després resti un tercer nombre del resultat.

Codi:

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

section .text
    global _start

_start:
    ; Carrega els valors en registres
    mov al, [num1]
    add al, [num2]
    sub al, [num3]

    ; Finalitza el programa
    mov eax, 1
    int 0x80

Exercici 2: Multiplicació i Divisió

Escriu un programa en Assembly que multipliqui dos nombres i després divideixi el resultat per un tercer nombre.

Codi:

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

section .text
    global _start

_start:
    ; Carrega els valors en registres
    mov al, [num1]
    mov bl, [num2]
    mul bl
    mov bl, [num3]
    div bl

    ; Finalitza el programa
    mov eax, 1
    int 0x80

Errors Comuns i Consells

  1. Desbordament de Registres: Assegura't que els registres utilitzats poden emmagatzemar el resultat de l'operació. Per exemple, multiplicar dos valors grans pot causar un desbordament.
  2. Flags: Després d'una operació aritmètica, revisa els flags per assegurar-te que l'operació s'ha realitzat correctament.
  3. Divisió per Zero: Evita dividir per zero, ja que això causarà una excepció en el programa.

Resum

En aquest tema, hem après les instruccions aritmètiques bàsiques en Assembly: ADD, SUB, MUL i DIV. Hem vist com utilitzar aquestes instruccions per realitzar operacions matemàtiques bàsiques i hem practicat amb alguns exercicis. A més, hem discutit alguns errors comuns i consells per evitar-los. Amb aquests coneixements, estàs preparat per avançar cap a instruccions més complexes i aplicacions pràctiques en Assembly.

© Copyright 2024. Tots els drets reservats