Assemblytaal en x86-programmeren voor systemen op laag niveau · Les

Uw eerste Assembly-programma

Stel uw ontwikkelomgeving in en schrijf, assembleer, link en voer een eenvoudig 'Hello, World!'-programma uit in x86 Assembly.

Les 3 van 412 stappen

Uw eerste Assembly-programma is een gratis Assemblytaal en x86-programmeren voor systemen op laag niveau-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Assemblytaal en x86-programmeren voor systemen op laag niveau. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Assemblytaal en x86-programmeren voor systemen op laag niveau bevat in totaal 4 lessen.

Je eerste Assembly-programma

Tijd om zelf aan de slag te gaan: je stelt de hulpmiddelen in, schrijft een "Hello, World!" in assembly en zet dit om in een uitvoerbaar bestand. Dit is het leuke gedeelte.

Aan de slag: assembler en linker

Je hebt twee hulpmiddelen nodig: een assembler (wij gebruiken NASM) om een objectbestand te maken en een linker (LD) om dat om te zetten in een uitvoerbaar programma.

Opbouw van een Assembly-programma

Een assemblyprogramma is verdeeld in secties. .data bevat geïnitialiseerde gegevens zoals tekenreeksen; .text bevat je instructies en begint bij _start.

"Hello, World!" opslaan

Sla het bericht op in .data. De instructie db definieert bytes; we voegen een regeleinde (0xA) toe en berekenen direct daarna de lengte.

section .data
    msg db 'Hello, World!', 0xA
    len equ $ - msg

Systeemaanroepen: tekst afdrukken

Om tekst af te drukken, vraag je het besturingssysteem dit te doen via een systeemaanroep. Op Linux is dat sys_write (nummer 1): je geeft de uitvoer, het adres en het aantal bytes door.

section .text
    global _start

_start:
    ; sys_write (syscall number 1)
    mov rax, 1         ; syscall number for sys_write
    mov rdi, 1         ; file descriptor 1 (stdout)
    mov rsi, msg       ; address of the string to write
    mov rdx, len       ; number of bytes to write
    syscall            ; execute the system call

Ons programma beëindigen (syscall)

Wanneer het programma klaar is, moet het het besturingssysteem met een tweede syscall vertellen dat het moet stoppen: sys_exit (nummer 60), met een afsluitstatus — 0 betekent succes.

    ; sys_exit (syscall number 60)
    mov rax, 60        ; syscall number for sys_exit
    mov rdi, 0         ; exit status 0 (success)
    syscall            ; execute the system call

Je eerste volledige programma!

Hier is het volledige "Hello, World!"-programma — sla het op als hello.asm. De sectie .data bevat het bericht, en .text drukt het af en beëindigt het programma.

section .data
    msg db 'Hello, World!', 0xA
    len equ $ - msg

section .text
    global _start

_start:
    ; sys_write (syscall number 1)
    mov rax, 1         ; syscall number for sys_write
    mov rdi, 1         ; file descriptor 1 (stdout)
    mov rsi, msg       ; address of the string to write
    mov rdx, len       ; number of bytes to write
    syscall            ; execute the system call

    ; sys_exit (syscall number 60)
    mov rax, 60        ; syscall number for sys_exit
    mov rdi, 0         ; exit status 0 (success)
    syscall            ; execute the system call

Van Assembly naar objectbestand

Eerst assembleer je het programma: nasm -f elf64 zet hello.asm om in het objectbestand hello.o — machinecode, maar nog geen uitvoerbaar bestand.

nasm -f elf64 hello.asm -o hello.o

Het uitvoerbare bestand maken

Het objectbestand kan nog niet worden uitgevoerd. De linker (ld) koppelt het ingangspunt _start en maakt het uiteindelijke uitvoerbare bestand.

ld hello.o -o hello

Voer het programma uit en bekijk de uitvoer!

Voer het nu uit met ./hello. "Hello, World!" wordt in je console afgedrukt — gefeliciteerd, je hebt zojuist je eerste x86-assemblyprogramma uitgevoerd!

./hello

Korte controle: processtappen

Je hebt het volledige proces gezien om vanuit assemblycode een uitvoerbaar bestand te maken. Wat is de juiste volgorde van de stappen?

Samenvatting: je eerste Assembly-programma

Je hebt de volledige werkstroom uitgevoerd: gegevens definiëren, sys_write en sys_exit aanroepen, en vervolgens assembleren, linken en uitvoeren. Hierna: registers en gegevenstypen.

Gratis beginnen

Leer Assembly met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Uw eerste Assembly-programma” gratis?

Ja — de volledige tekst van “Uw eerste Assembly-programma” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Assemblytaal en x86-programmeren voor systemen op laag niveau wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Assemblytaal en x86-programmeren voor systemen op laag niveau bevat in totaal 4 lessen.

Wat leer ik in “Uw eerste Assembly-programma”?

Stel uw ontwikkelomgeving in en schrijf, assembleer, link en voer een eenvoudig 'Hello, World!'-programma uit in x86 Assembly. Je oefent met Assemblytaal en x86-programmeren voor systemen op laag niveau door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Assemblytaal en x86-programmeren voor systemen op laag niveau te beginnen?

Ervaring vooraf is niet nodig. Assemblytaal en x86-programmeren voor systemen op laag niveau op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Uw eerste Assembly-programma”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Assemblytaal en x86-programmeren voor systemen op laag niveau?

Ja. Elke les over Assemblytaal en x86-programmeren voor systemen op laag niveau bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Wat is Assembly Language?
  2. Grondbeginselen van de x86-architectuur
  3. Uw eerste Assembly-programma
  4. De toolchain voor assembleren, linken en uitvoeren
← Terug naar Assemblytaal en x86-programmeren voor systemen op laag niveau