En aquest tema, aprendrem sobre la sintaxi i l'estructura bàsiques del llenguatge Assembly. Aquest és un pas fonamental per començar a escriure programes en Assembly. Ens centrarem en la sintaxi general, les instruccions bàsiques i com estructurar un programa simple.

  1. Components Bàsics d'un Programa en Assembly

Un programa en Assembly està format per diverses parts clau:

  • Etiquetes (Labels): Són noms que es poden utilitzar per marcar una posició específica en el codi. Són útils per a salts i subrutines.
  • Instruccions: Són les ordres que la CPU executa. Cada instrucció té una operació específica.
  • Directives: Són ordres per al compilador o l'assemblador, no per a la CPU.
  • Comentaris: Són línies de text que no s'executen i serveixen per documentar el codi.

Exemple de Programa Simple

section .data
    msg db 'Hola, món!', 0

section .text
    global _start

_start:
    ; Escrivim el missatge a la sortida estàndard
    mov eax, 4          ; syscall number (sys_write)
    mov ebx, 1          ; file descriptor (stdout)
    mov ecx, msg        ; pointer to message
    mov edx, 12         ; message length
    int 0x80            ; call kernel

    ; Sortim del programa
    mov eax, 1          ; syscall number (sys_exit)
    xor ebx, ebx        ; exit code 0
    int 0x80            ; call kernel

  1. Seccions d'un Programa

Secció .data

Aquesta secció s'utilitza per definir dades estàtiques o constants que el programa utilitzarà. Les dades es poden definir amb diferents directives com db (define byte), dw (define word), etc.

section .data
    msg db 'Hola, món!', 0

Secció .text

Aquesta secció conté el codi executable del programa. Aquí és on es defineixen les instruccions que la CPU ha d'executar.

section .text
    global _start

_start:
    ; Codi executable aquí

  1. Instruccions Bàsiques

Moviment de Dades

L'instrucció mov es fa servir per moure dades d'un lloc a un altre.

mov eax, 1  ; Mou el valor 1 al registre EAX

Operacions Aritmètiques

Les instruccions aritmètiques permeten realitzar operacions com suma, resta, multiplicació i divisió.

add eax, 2  ; Suma 2 al valor del registre EAX
sub eax, 1  ; Resta 1 al valor del registre EAX

Instruccions de Control de Flux

Les instruccions de control de flux permeten alterar l'ordre d'execució del codi.

jmp etiqueta  ; Salta a l'etiqueta especificada

Interrupcions

Les interrupcions són utilitzades per fer crides al sistema operatiu.

int 0x80  ; Crida a una interrupció del sistema operatiu

  1. Comentaris

Els comentaris són essencials per documentar el codi i fer-lo més comprensible. En Assembly, els comentaris es comencen amb un punt i coma (;).

; Aquest és un comentari
mov eax, 1  ; Mou el valor 1 al registre EAX

Exercici Pràctic

Escriu un Programa Simple en Assembly

Escriu un programa en Assembly que imprimeixi "Hola, món!" a la consola i després surti.

Solució

section .data
    msg db 'Hola, món!', 0

section .text
    global _start

_start:
    ; Escrivim el missatge a la sortida estàndard
    mov eax, 4          ; syscall number (sys_write)
    mov ebx, 1          ; file descriptor (stdout)
    mov ecx, msg        ; pointer to message
    mov edx, 12         ; message length
    int 0x80            ; call kernel

    ; Sortim del programa
    mov eax, 1          ; syscall number (sys_exit)
    xor ebx, ebx        ; exit code 0
    int 0x80            ; call kernel

Resum

En aquest tema, hem après sobre la sintaxi i l'estructura bàsiques d'un programa en Assembly. Hem vist com es defineixen les seccions de dades i codi, com es mouen les dades entre registres, com es realitzen operacions aritmètiques i com es controlen els fluxos d'execució. També hem escrit un programa simple que imprimeix un missatge a la consola. Amb aquests fonaments, estem preparats per aprofundir en altres aspectes del llenguatge Assembly.

© Copyright 2024. Tots els drets reservats