Newline Itu Penting
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 41 dari 45.
Kamu telah menambahkan 0x0a (baris baru) di akhir string-mu. Namun, apa yang terjadi jika kamu lupa menambahkannya?
Tanpa baris baru:
Teks dicetak, tetapi kursor tetap berada di baris yang sama. Output berikutnya akan muncul tepat di sebelahnya.
Contoh tanpa baris baru:
section .data
first db 'Hello'
firstLen equ $ - first
second db 'World'
secondLen equ $ - second
section .text
mov rax, 1
mov rdi, 1
mov rsi, first
mov rdx, firstLen
syscall
mov rax, 1
mov rdi, 1
mov rsi, second
mov rdx, secondLen
syscallOutput:
HelloWorld
Tanpa spasi. Tanpa baris baru. Semuanya menempel.
Dengan baris baru:
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondOutput:
Hello
WorldSetiap string dicetak pada barisnya sendiri.
Fungsi baris baru:
| Karakter | ASCII | Efek |
|---|---|---|
0x0a | 10 | Memindahkan kursor ke awal baris berikutnya |
Kesalahan umum terkait baris baru:
| Kesalahan | Hasil |
|---|---|
| Tidak ada baris baru sama sekali | Teks menyatu dalam satu baris |
| Baris baru hanya di akhir string terakhir | String sebelumnya menyatu, string terakhir berpindah ke baris berikutnya |
| Baris baru di tengah string | Baris terputus di tempat yang tidak terduga |
Aturan yang aman:
Selalu tambahkan 0x0a di akhir setiap string yang ingin kamu tampilkan di baris tersendiri.
Tantangan
Kamu diberi tiga string tanpa baris baru. Tugasmu adalah mencetaknya agar muncul pada tiga baris terpisah.
String tersebut adalah:
| String | Nilai |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Persyaratan:
- Definisikan setiap string dengan baris baru (
0x0a) di bagian akhir - Hitung panjang setiap string secara otomatis
- Cetak ketiga string menggunakan syscall write
- Keluar dengan bersih menggunakan kode 0
Coba sendiri
section .data
; TODO: Definisikan word1 dengan teks ke-1 yang tercantum dalam instruksi dan karakter baris baru
; TODO: Definisikan word2 dengan teks ke-2 yang tercantum dalam instruksi dan karakter baris baru
; TODO: Definisikan word3 dengan teks ke-3 yang tercantum dalam instruksi dan karakter baris baru
; TODO: Hitung panjang setiap string
section .text
global _start
_start:
; TODO: Cetak word1
; TODO: Cetak word2
; TODO: Cetak word3
; TODO: Akhiri program dengan benar
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
3Instruksi Pertama: MOV
Apa Itu MOV?MOV dengan Nilai LangsungMOV dari Register ke RegisterMOV dari Memori ke RegisterMOV dari Register ke MemoriLEA: Muat AlamatMOV dengan Ukuran BerbedaLatihan: Tukar RegisterUlasan: Tantangan MOV6Syscall write
Syscall write (1)Deskriptor file (rdi)Alamat buffer (rsi)Jumlah byte (rdx)Rangkai SemuanyaCetak Dua stringNewline Itu PentingRingkasan: Penyiapan writeLatihan sendiri: Playground Assembly