Bagian .data
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 23 dari 45.
Di Bab 2, kamu memuat nilai dari memori dan menyimpan nilai ke memori. Namun, dari mana asal memori itu? Siapa yang membuat num1, num2, dan result?
Jawabannya adalah bagian .data. Di sinilah kamu membuat datamu sendiri di memori.
Apa itu bagian .data?
Bagian .data adalah bagian dari program assembly-mu tempat kamu mendefinisikan data yang akan disimpan di memori sebelum programmu dijalankan.
Sintaks:
section .data
; Letakkan definisi datamu di siniMengapa kamu membutuhkannya:
| Tanpa bagian .data | Dengan bagian .data |
|---|---|
| Kamu tidak punya data untuk digunakan | Kamu bisa membuat angka, string, dan variabel |
| Alamat memori tidak diketahui | Kamu bisa menggunakan label seperti myNumber atau message |
| Kamu tidak bisa menguji kodemu | Kamu bisa memuat dan menyimpan data yang kamu buat |
Contoh sederhana:
section .data
age db 25 ; Buat byte bernama "age" dengan nilai 25
price dw 1000 ; Buat word bernama "price" dengan nilai 1000
name db 'Bob' ; Buat string bernama "name" dengan huruf B, o, bLetaknya di file-filemu:
Ingat pola dua file dari Bab 0:
| File | Konten |
|---|---|
data.asm | section .data dengan definisi datamu |
main.asm | %include "data.asm" diikuti section .text dengan kodemu |
Apa yang terjadi saat programmu berjalan:
- Sistem operasi memuat programmu ke dalam memori
- Sistem operasi membaca bagian
.datadan menempatkan datamu di alamat memori tertentu
- Labelmu (
age,price,name) menjadi alamat - Sekarang, kodemu dapat mengakses alamat-alamat ini menggunakan
[age],[price],[name]
Aturan penting:
| Aturan | Penjelasan |
|---|---|
| Simpan datamu bersama-sama | Kamu dapat membuka section .data lebih dari sekali (assembler akan menggabungkan bagian-bagiannya), tetapi satu section di data.asm lebih mudah dibaca |
| Label harus unik | Kamu tidak dapat memiliki dua label age |
| Data dibuat sebelum kodemu dijalankan | Data siap digunakan saat _start dimulai |
Dalam pelajaran berikutnya, kamu akan belajar cara mendefinisikan berbagai tipe data menggunakan db, dw, dd, dan dq
Tantangan
Tulis kode di file data.asm untuk:
- Membuat bagian
.data - Membuat byte bernama
countdengan nilai 5
Coba sendiri
%include "data.asm"
section .text
global _start
_start:
; Muat nilai dari count ke al
mov al, [count]
; Simpan nilainya untuk dicetak
mov r12, rax
; Ubah ke ASCII dan cetak (hanya 0-9)
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Keluar
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
Latihan sendiri: Playground Assembly