MOV dari Register ke Register
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 16 dari 45.
Sekarang kamu sudah tahu cara memasukkan angka langsung ke dalam register (MOV immediate), kamu juga bisa menyalin nilai antar-register.
Sintaks:
mov destination_register, source_registerNilai dari register source disalin ke register destination. Register source tetap tidak berubah.
Contoh:
mov rax, 5 ; rax = 5
mov rbx, rax ; rbx = 5 (disalin dari rax)Setelah dua instruksi ini, rax dan rbx berisi 5.
Penting: Register sumber (rax) masih memiliki nilainya. MOV menyalin, bukan memotong atau memindahkan.
Contoh lain:
mov rax, 7 ; rax = 7
mov rcx, 3 ; rcx = 3
mov rdx, rcx ; rdx = 3 (disalin dari rcx)
mov rbx, rax ; rbx = 7 (disalin dari rax)Setelah instruksi ini:
| Register | Nilai |
|---|---|
| rax | 7 |
| rcx | 3 |
| rdx | 3 |
| rbx | 7 |
Mengapa ini penting:
- Kamu dapat menyimpan nilai dengan menyalinnya ke register lain sebelum mengubah nilai aslinya
- Kamu dapat menggunakan kembali nilai tanpa memuatnya lagi dari memori
- Ini adalah dasar dari sebagian besar operasi assembly
Tantangan
Tulis kode assembly untuk tugas-tugas ini:
- Masukkan angka 4 ke dalam
rax - Salin nilai dari
raxke dalamrbx - Salin nilai dari
rbxke dalamrcx
Setelah kamu menulis kodemu, ketiga register harus berisi 4.
Coba sendiri
section .data
msg_rax db 'rax = '
msg_rax_len equ $ - msg_rax
msg_rbx db 'rbx = '
msg_rbx_len equ $ - msg_rbx
msg_rcx db 'rcx = '
msg_rcx_len equ $ - msg_rcx
section .bss
digit resb 1
section .text
global _start
_start:
%include "solution.asm"
; Simpan nilai
mov r12, rax
mov r13, rbx
mov r14, rcx
; Cetak "rax = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; Cetak nilai rax
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Cetak "rbx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; Cetak nilai rbx
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Cetak "rcx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; Cetak nilai rcx
mov rax, r14
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