Rangkai Semuanya
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 39 dari 45.
Kamu telah mempelajari keempat bagian dari syscall write:
| Register | Nilai yang disimpan | Nilai untuk output layar |
|---|---|---|
rax | Nomor syscall | 1 (write) |
rdi | File descriptor | 1 (stdout) |
rsi | Alamat buffer | Alamat string-mu |
rdx | Jumlah byte | Panjang string-mu |
Sekarang saatnya menggabungkan semuanya.
Pola syscall write yang lengkap:
mov rax, 1 ; nomor syscall untuk write
mov rdi, 1 ; deskriptor file (stdout)
mov rsi, msg ; alamat string
mov rdx, msgLen ; jumlah byte yang akan dicetak
syscall ; minta OS mencetakProgram lengkap yang berfungsi:
section .data
msg db 'Hello, World!', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
mov rax, 60
mov rdi, 0
syscallFungsi program ini:
| Langkah | Yang terjadi |
|---|---|
| 1 | Mencetak "Hello, World!" ke layar |
| 2 | Pindah ke baris baru |
| 3 | Keluar dengan lancar dengan kode 0 |
Urutannya penting:
Kamu harus menyiapkan register sebelum menjalankan syscall. Urutan instruksi mov tidak penting selama keempatnya sudah diatur sebelum syscall.
Tantangan
Tulis program lengkap yang mencetak pesan "Assembly is fun" diikuti baris baru, lalu keluar dengan benar.
String dan panjangnya sudah ditentukan. Kamu hanya perlu menulis kode di dalam _start:.
Coba sendiri
section .data
msg db 'Assembly is fun', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; TODO: Siapkan dan panggil syscall write
; Gunakan rax=1, rdi=1, rsi=msg, rdx=msgLen
; TODO: Akhiri program dengan benar menggunakan kode 0
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
Latihan sendiri: Playground Assembly