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 valueContoh:
section .data
myNumber dd 50000 ; 4 byte, nilai 50000
bigNum dd 4000000 ; 4 byte, nilai 4 juta
max32 dd 4294967295 ; Nilai maksimum 32-bitTabel perbandingan:
| Direktif | Ukuran | Rentang | Register yang digunakan |
|---|---|---|---|
db | 1 byte | 0 sampai 255 | al |
dw | 2 bytes | 0 sampai 65,535 | ax |
dd | 4 bytes | 0 sampai 4,294,967,295 | eax |
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 kembaliAturan penting:
| Aturan | Penjelasan |
|---|---|
Gunakan eax untuk memuat atau menyimpan | eax adalah register 32-bit |
Tantangan
MudahBuat 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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Definisi Data
Bagian .datadb, Definisikan Bytedw, Definisikan Worddd, Definisikan Double Worddq, Definisikan Quad Wordstring dengan dbSimbol $Tinjauan: Buat data.asmLatihan sendiri: Playground Assembly