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], registerTanda 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], alKamu 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:
| Aturan | Penjelasan |
|---|---|
| Tanda kurung siku wajib digunakan | mov destination, al adalah penggunaan yang salah |
| Tujuan harus berupa alamat memori | Gunakan label seperti [destination] |
| Ukuran harus cocok | Untuk latihan ini, gunakan al (8 bit) |
Kesalahan umum:
; Salah: tanda kurung siku tidak ada
mov destination, al
; Benar: menyimpan nilai ke memori
mov [destination], alDalam 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.
Tantangan
Tulis dua baris assembly untuk:
- Masukkan angka 9 ke dalam register
al - Simpan nilai dari
alke alamat memoridestination
(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
syscallPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
3Instruksi Pertama: MOV
Apa Itu MOV?MOV dengan Nilai LangsungMOV dari Register ke RegisterMOV dari Memori ke RegisterMOV dari Register ke MemoriLEA: Muat AlamatMOV dengan Ukuran BerbedaLatihan: Tukar RegisterUlasan: Tantangan MOVLatihan sendiri: Playground Assembly