Assembly-sprog og x86-systemprogrammering på lavt niveau · Lektion

Deres første Assembly-program

Opsæt Deres udviklingsmiljø, og skriv, assemblér, link og kør et enkelt 'Hello, World!'-program i x86 Assembly.

Lektion 3 af 412 trin

Deres første Assembly-program er en gratis Assembly-sprog og x86-systemprogrammering på lavt niveau-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Assembly-sprog og x86-systemprogrammering på lavt niveau, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Assembly-sprog og x86-systemprogrammering på lavt niveau-kurset indeholder 4 lektioner i alt.

Dit første Assembly-program

Nu skal du i gang med det praktiske: Du konfigurerer værktøjerne, skriver "Hello, World!" i assembly og omdanner det til en eksekverbar fil. Det er den sjove del.

Gør dig klar: Assembler og linker

Du skal bruge to værktøjer: en assembler (vi bruger NASM) til at oprette en objektfil og en linker (LD) til at omdanne den til et kørbart program.

Et Assembly-programs opbygning

Et assembly-program er opdelt i sektioner. .data indeholder initialiserede data som strenge, mens .text indeholder dine instruktioner, der begynder ved _start.

Lagring af "Hello, World!"

Gem meddelelsen i .data. Direktivet db definerer bytes; vi tilføjer et linjeskift (0xA) og beregner længden lige bagefter.

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

Systemkald: Udskrivning af tekst

For at udskrive tekst anmoder du operativsystemet via et systemkald. På Linux er det sys_write (nummer 1): Du angiver outputtet, adressen og antallet af bytes.

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

Afslutning af programmet (systemkald)

Når programmet er færdigt, skal det bede operativsystemet om at stoppe med et andet systemkald: sys_exit (nummer 60), hvor det angiver en afslutningsstatus – 0 betyder 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

Dit første komplette program!

Her er hele programmet "Hello, World!" – gem det som hello.asm. Sektionen .data indeholder meddelelsen, mens .text udskriver den og afslutter programmet.

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

Fra Assembly til objektfil

Først assemblerer du: nasm -f elf64 omdanner hello.asm til objektfilen hello.o – maskinkode, men endnu ikke en eksekverbar fil.

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

Oprettelse af den eksekverbare fil

Objektfilen kan endnu ikke køres. Linkeren (ld) forbinder indgangspunktet _start og opretter den endelige eksekverbare fil.

ld hello.o -o hello

Kør programmet, og se outputtet!

Kør det nu med ./hello. "Hello, World!" bliver udskrevet i din konsol – tillykke, du har netop kørt dit første x86-assemblyprogram!

./hello

Hurtigt tjek: Procestrin

Du har set hele processen til at oprette en eksekverbar fil fra assemblykode. Hvad er den korrekte rækkefølge af trinene?

Opsamling: Dit første Assembly-program

Du gennemførte hele arbejdsgangen: Definér data, kald sys_write og sys_exit, og assembler, link og kør derefter programmet. Næste emne: registre og datatyper.

Gratis at komme i gang

Lær Assembly med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Deres første Assembly-program” gratis?

Ja — hele teksten til “Deres første Assembly-program” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Assembly-sprog og x86-systemprogrammering på lavt niveau-kurset, skal du opgradere til CoddyKit PRO. Assembly-sprog og x86-systemprogrammering på lavt niveau-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Deres første Assembly-program”?

Opsæt Deres udviklingsmiljø, og skriv, assemblér, link og kør et enkelt 'Hello, World!'-program i x86 Assembly. Du øver dig i Assembly-sprog og x86-systemprogrammering på lavt niveau med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Assembly-sprog og x86-systemprogrammering på lavt niveau?

Der kræves ingen tidligere erfaring. Assembly-sprog og x86-systemprogrammering på lavt niveau på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Deres første Assembly-program”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Assembly-sprog og x86-systemprogrammering på lavt niveau-lektion?

Ja. Alle Assembly-sprog og x86-systemprogrammering på lavt niveau-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Hvad er Assembly Language?
  2. Grundprincipper i x86-arkitektur
  3. Deres første Assembly-program
  4. Værktøjskæden til assemblering, linking og kørsel
← Tilbage til Assembly-sprog og x86-systemprogrammering på lavt niveau