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.
- 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
- 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.
Secció .text
Aquesta secció conté el codi executable del programa. Aquí és on es defineixen les instruccions que la CPU ha d'executar.
- Instruccions Bàsiques
Moviment de Dades
L'instrucció mov
es fa servir per moure dades d'un lloc a un altre.
Operacions Aritmètiques
Les instruccions aritmètiques permeten realitzar operacions com suma, resta, multiplicació i divisió.
Instruccions de Control de Flux
Les instruccions de control de flux permeten alterar l'ordre d'execució del codi.
Interrupcions
Les interrupcions són utilitzades per fer crides al sistema operatiu.
- 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 (;
).
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.
Curs de Programació en Assembly
Mòdul 1: Introducció al Llenguatge Assembly
- Què és el Llenguatge Assembly?
- Història i Evolució de l'Assembly
- Conceptes Bàsics i Terminologia
- Configuració de l'Entorn de Desenvolupament
Mòdul 2: Fonaments del Llenguatge Assembly
- Comprensió de la CPU i la Memòria
- Registres i les Seves Funcions
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa en Assembly
Mòdul 3: Representació de Dades i Instruccions
- Sistemes Binari i Hexadecimal
- Tipus de Dades i Mides
- Instruccions Aritmètiques
- Instruccions Lògiques
Mòdul 4: Flux de Control
Mòdul 5: Conceptes Avançats d'Assembly
- Interrupcions i Crides de Sistema
- Macros i Assembly Condicional
- Assembly Inline en Llenguatges d'Alt Nivell
- Optimització del Codi Assembly
Mòdul 6: Assembly per a Diferents Arquitectures
Mòdul 7: Aplicacions Pràctiques i Projectes
- Escrivint un Bootloader Simple
- Creant un Nucli Bàsic de Sistema Operatiu
- Interfície amb el Maquinari
- Depuració i Perfilat del Codi Assembly