Menu
CoddyTech

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_register

Nilai 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:

RegisterNilai
rax7
rcx3
rdx3
rbx7

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
challenge icon

Tantangan

Tulis kode assembly untuk tugas-tugas ini:

  1. Masukkan angka 4 ke dalam rax
  2. Salin nilai dari rax ke dalam rbx
  3. Salin nilai dari rbx ke dalam rcx

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
    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