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 sebuah kotak kosong. Kamu memiliki nilai yang tersimpan di sebuah register (misalnya, al berisi angka 7).
Saat 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 dalam al tetap berada di sana. 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. Itu adalah register 8-bit yang ukurannya sesuai. Kamu akan mempelajari lebih lanjut tentang ukuran register nanti.
Aturan penting:
| Aturan | Penjelasan |
|---|---|
| Tanda kurung siku wajib digunakan | mov destination, al adalah salah |
| Tujuan harus berupa alamat memori | Gunakan label seperti [destination] |
| Ukurannya harus cocok | Untuk latihan ini, gunakan al (8 bit) |
Kesalahan umum:
; Salah: 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 saat ini, fokus saja pada instruksi MOV.
Tantangan
Tulis dua baris assembly untuk:
- Masukkan angka 9 ke 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:
; 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