Menu
CoddyTech

Jumlah byte (rdx)

Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 38 dari 45.

Kamu sudah memberi tahu OS tempat untuk mencetak (rdi) dan apa yang harus dicetak (rsi). Sekarang kamu perlu memberi tahu OS berapa banyak byte yang harus dicetak.

Register untuk jumlah byte adalah rdx.

Mengapa OS membutuhkan panjang string?

OS tidak tahu di mana string-mu berakhir. Tanpa panjang, OS akan terus membaca memori selamanya. Panjang memberi tahu OS kapan harus berhenti.

Contoh:

section .data
    msg db 'Hello', 0x0a
    msgLen equ $ - msg

section .text
    mov rdx, msgLen      ; rdx = jumlah byte yang akan dicetak

Apa yang terjadi jika panjangnya salah?

Jika kamu menetapkanHasil
Terlalu pendekHanya sebagian string yang dicetak
Terlalu panjangOS terus membaca melewati string-mu hingga ke memori sampah: mungkin mencetak karakter acak atau mengalami crash
NolTidak ada yang dicetak

Menghitung panjang secara otomatis:

Kamu sudah mempelajari pola $ - label di Bab 3:

section .data
    msg db 'Hello', 0x0a
    msgLen equ $ - msg    ; msgLen = 6 (Hello + baris baru)

Ini memastikan panjangnya selalu benar, bahkan jika kamu mengubah string.

Contoh lengkap:

section .data
    msg db 'Hello', 0x0a
    msgLen equ $ - msg

section .text
    mov rax, 1           ; syscall write
    mov rdi, 1           ; stdout
    mov rsi, msg         ; alamat string
    mov rdx, msgLen      ; jumlah byte
    syscall
challenge icon

Tantangan

Kamu diberi string bernama color dengan nilai 'Red' yang diikuti newline. Konstanta bernama colorLen sudah didefinisikan menggunakan $ - color.

Tulis baris kode yang menetapkan panjang string ke rdx menggunakan konstanta colorLen.

Tulis hanya instruksi mov untuk rdx.

Coba sendiri

section .text
    global _start

_start:
    ; Kodemu dijalankan lebih dulu (menetapkan rdx)
    %include "solution.asm"
    
    mov rax, 1
    mov rdi, 1
    mov rsi, color
    ; rdx sudah berisi panjangnya (dari kodemu)
    syscall

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Assembly