Menu
CoddyTech

MOV dari Register ke Memori

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

Sekarang setelah kamu tahu cara memuat data dari memori ke dalam register, kamu akan mempelajari kebalikannya: menyimpan data dari register ke dalam memori.

Sintaks:

mov [address], register

Tanda kurung siku [ ] berarti: "simpan nilai dari register ke alamat memori ini."

Bayangkan seperti ini:

Bayangkan di alamat memori destination ada kotak kosong. Kamu memiliki nilai di sebuah register (misalnya, al berisi angka 7).

Ketika kamu menulis:

mov [destination], al

Kamu memberi tahu CPU: "Ambil nilai dari register al (7) dan masukkan ke kotak bernama destination."

Setelah perintah ini dijalankan, alamat memori destination kini berisi nilai 7. Nilai di al tetap ada. Nilai itu tidak dihapus.

Contoh:

mov al, 7            ; Masukkan 7 ke register al
mov [destination], al ; Simpan nilai dari al ke alamat memori "destination"

Catatan: Dalam latihan ini, data di memori berukuran 1 byte (8 bit). Karena itu, kita menggunakan al. Register tersebut berukuran 8 bit, sesuai dengan ukuran datanya. Kamu akan mempelajari lebih lanjut tentang ukuran register nanti.

Aturan penting:

AturanPenjelasan
Tanda kurung siku wajib digunakanmov destination, al adalah penggunaan yang salah
Tujuan harus berupa alamat memoriGunakan label seperti [destination]
Ukuran harus cocokUntuk latihan ini, gunakan al (8 bit)

Kesalahan umum:

; Salah: tanda kurung siku tidak ada
mov destination, al

; Benar: menyimpan nilai ke memori
mov [destination], al

Dalam tantangan di bawah ini, alamat memori destination sudah dibuat untukmu. Kamu akan belajar cara membuat datamu sendiri di Bab 3. Untuk sekarang, fokus saja pada instruksi MOV.

challenge icon

Tantangan

Tulis dua baris assembly untuk:

  1. Masukkan angka 9 ke dalam register al
  2. Simpan nilai dari al ke alamat memori destination

(Alamat memori destination sudah dibuatkan untukmu.)

Coba sendiri

section .data
    msg db 'destination = '
    msg_len equ $ - msg

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; file solution.asm disertakan di sini
    ; file ini mendefinisikan destination DAN instruksi MOV milikmu
    
    %include "solution.asm"
    
    ; Muat nilai yang tersimpan dari memori ke al untuk dicetak
    mov al, [destination]
    
    ; Simpan nilainya
    mov r12, rax
    
    ; Cetak "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Cetak nilainya
    mov rax, r12
    add rax, 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
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