En aquest tema, explorarem els conceptes fonamentals i la terminologia essencial que necessitaràs per comprendre i treballar amb el llenguatge Assembly. Aquestes bases són crucials per a qualsevol programador que vulgui dominar aquest llenguatge de baix nivell.

  1. Què és el Llenguatge Assembly?

El llenguatge Assembly és un llenguatge de programació de baix nivell que està molt a prop del codi màquina, el qual és directament executat per la CPU. A diferència dels llenguatges d'alt nivell com Python o Java, Assembly proporciona un control directe sobre el maquinari, permetent optimitzacions molt específiques.

Característiques Clau:

  • Baix Nivell: Proporciona un control directe sobre el maquinari.
  • Dependència de l'Arquitectura: Cada tipus de CPU té el seu propi llenguatge Assembly.
  • Eficiència: Permet escriure codi molt eficient en termes de temps d'execució i ús de memòria.

  1. Instruccions i Operands

Instruccions:

Les instruccions són les ordres que donem a la CPU. Cada instrucció en Assembly correspon a una operació específica que la CPU pot realitzar, com ara moure dades, realitzar càlculs aritmètics, o controlar el flux del programa.

Operands:

Els operands són els valors o adreces sobre els quals operen les instruccions. Poden ser registres, constants, o adreces de memòria.

Exemple:

MOV AX, 5  ; Mou el valor 5 al registre AX
ADD AX, 3  ; Suma 3 al valor del registre AX

  1. Registres

Els registres són petites àrees d'emmagatzematge dins de la CPU que s'utilitzen per a operacions ràpides. Cada CPU té un conjunt de registres que poden variar en nombre i funció.

Tipus de Registres:

  • Registres de Dades: Emmagatzemen dades temporals (ex: AX, BX, CX, DX en x86).
  • Registres d'Adreces: Emmagatzemen adreces de memòria (ex: SI, DI, BP, SP en x86).
  • Registres de Control: Emmagatzemen informació de control (ex: IP, FLAGS en x86).

Taula de Registres Comuns (x86):

Registre Descripció
AX Acumulador
BX Base
CX Comptador
DX Dades
SI Índex Font
DI Índex Destí
BP Punt de Base
SP Punt de Pila
IP Punter d'Instrucció
FLAGS Registre de Banderes

  1. Memòria i Adreçament

Memòria:

La memòria és l'espai on es guarden les dades i les instruccions del programa. En Assembly, és crucial comprendre com accedir i manipular la memòria.

Modes d'Adreçament:

  • Adreçament Immediat: L'operand és un valor constant.
    MOV AX, 10  ; Mou el valor 10 al registre AX
    
  • Adreçament Directe: L'operand és una adreça de memòria.
    MOV AX, [1234h]  ; Mou el valor de la memòria a l'adreça 1234h al registre AX
    
  • Adreçament Indirecte: L'operand és una adreça emmagatzemada en un registre.
    MOV AX, [BX]  ; Mou el valor de la memòria a l'adreça emmagatzemada en BX al registre AX
    

  1. Comentaris en Assembly

Els comentaris són essencials per a la llegibilitat del codi. En Assembly, els comentaris es comencen amb un punt i coma (;).

Exemple:

MOV AX, 5  ; Mou el valor 5 al registre AX
ADD AX, 3  ; Suma 3 al valor del registre AX

Exercicis Pràctics

Exercici 1:

Escriu un programa en Assembly que mogui el valor 10 al registre AX i després sumi 20 a AX.

Solució:

MOV AX, 10  ; Mou el valor 10 al registre AX
ADD AX, 20  ; Suma 20 al valor del registre AX

Exercici 2:

Escriu un programa en Assembly que mogui el valor de la memòria a l'adreça 2000h al registre BX.

Solució:

MOV BX, [2000h]  ; Mou el valor de la memòria a l'adreça 2000h al registre BX

Conclusió

En aquesta secció, hem cobert els conceptes bàsics i la terminologia essencial del llenguatge Assembly. Hem après sobre les instruccions, els operands, els registres, la memòria i els modes d'adreçament. Aquests fonaments són crucials per avançar en l'aprenentatge del llenguatge Assembly. En el proper mòdul, aprofundirem en la comprensió de la CPU i la memòria, i com interactuen amb el codi Assembly.

© Copyright 2024. Tots els drets reservats