Menu
CoddyTech

dd, Definisikan Double Word

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

dw membuat data sebesar 2 byte. Namun, terkadang kamu membutuhkan angka yang lebih besar. Untuk itu, gunakan dd: Define Double Word.

Double word dalam assembly x86 berukuran 4 byte (32 bit).

Sintaks:

label dd value

Contoh:

section .data
    myNumber dd 50000        ; 4 byte, nilai 50000
    bigNum   dd 4000000      ; 4 byte, nilai 4 juta
    max32    dd 4294967295   ; Nilai maksimum 32-bit

Tabel perbandingan:

DirektifUkuranRentangRegister yang digunakan
db1 byte0 sampai 255al
dw2 bytes0 sampai 65,535ax
dd4 bytes0 sampai 4,294,967,295eax

Cara menggunakan double word dalam kodemu:

section .data
    myNumber dd 50000

section .text
    mov eax, [myNumber]    ; Muat nilai ke eax
    add eax, 10000         ; eax menjadi 60000
    mov [myNumber], eax    ; Simpan kembali

Aturan penting:

AturanPenjelasan
Gunakan eax untuk memuat atau menyimpaneax adalah register 32-bit
challenge icon

Tantangan

Mudah

Buat sebuah double word bernama distance dengan nilai 125000 di bagian .data.

Coba sendiri

%include "data.asm"

section .data
    msg db 'distance = '
    msg_len equ $ - msg
    newline db 0xa

section .bss
    buffer resb 32

section .text
    global _start

_start:
    ; Muat nilai double word ke eax
    mov eax, [distance]
    
    ; Ubah eax menjadi string desimal
    mov rsi, buffer
    add rsi, 31          ; Pindah ke akhir buffer
    mov byte [rsi], 0    ; Penanda akhir null
    
    mov ecx, 10          ; Pembagi untuk konversi desimal

convert_loop:
    xor edx, edx         ; Kosongkan edx untuk pembagian
    div ecx              ; Bagi eax dengan 10, eax = hasil bagi, edx = sisa
    add dl, '0'          ; Ubah sisa menjadi ASCII
    dec rsi
    mov [rsi], dl        ; Simpan digit
    cmp eax, 0
    jnz convert_loop

    ; Simpan pointer digit dan panjangnya SEBELUM nilainya tertimpa
    mov r8, rsi          ; r8 = pointer ke digit pertama
    mov r9, buffer
    add r9, 31
    sub r9, rsi          ; r9 = jumlah digit
    
    ; Tampilkan pesan
    mov rax, 1
    mov rdi, 1
    mov rdx, msg_len
    mov rsi, msg
    syscall
    
    ; Tampilkan angka
    mov rax, 1
    mov rdi, 1
    mov rsi, r8
    mov rdx, r9
    syscall
    
    ; Tampilkan baris baru
    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall
    
    ; Keluar
    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