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.
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 $ - msgSystemkald: 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 callAfslutning 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 callDit 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 callFra 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.oOprettelse 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 helloKø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!
./helloHurtigt 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.
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
- Hvad er Assembly Language?
- Grundprincipper i x86-arkitektur
- Deres første Assembly-program
- Værktøjskæden til assemblering, linking og kørsel