Menu
CoddyTech

Ulasan: Tantangan MOV

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

challenge icon

Tantangan

Tantangan ini akan menguji pemahamanmu tentang:

  • Memuat nilai dari memori
  • Menyimpan nilai ke memori
  • Menyalin nilai antar-register
  • Menggunakan ukuran register yang tepat

Alamat data sudah disiapkan untukmu. Kamu hanya perlu menulis instruksi MOV.

Tantangan

Selesaikan tugas berikut secara berurutan. Tulis satu baris assembly untuk setiap tugas.

Data yang sudah disediakan:

  • num1: berisi nilai 8 (1 byte)
  • num2: berisi nilai 3 (1 byte)
  • result: ruang kosong (1 byte)

Tugas:

  1. Muat nilai dari num1 ke dalam al
  2. Muat nilai dari num2 ke dalam bl
  3. Salin nilai dari bl ke dalam cl
  4. Simpan nilai dari al ke dalam result

Setelah kodemu:

  • al seharusnya berisi 8
  • bl seharusnya berisi 3
  • cl seharusnya berisi 3
  • Memori di result seharusnya berisi 8

Coba sendiri

section .data
    msg_al db 'al = '
    msg_al_len equ $ - msg_al
    msg_bl db 'bl = '
    msg_bl_len equ $ - msg_bl
    msg_cl db 'cl = '
    msg_cl_len equ $ - msg_cl
    msg_result db 'result = '
    msg_result_len equ $ - msg_result
    newline db 0xa

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; Kodemu dijalankan lebih dulu
    
    %include "solution.asm"
    
    mov r12, rax
    mov r13, rbx
    mov r14, rcx
    mov r15, 0
    mov r15b, [result]

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_al
    mov rdx, msg_al_len
    syscall

    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_bl
    mov rdx, msg_bl_len
    syscall

    mov rax, r13
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_cl
    mov rdx, msg_cl_len
    syscall

    mov rax, r14
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_result
    mov rdx, msg_result_len
    syscall

    mov rax, r15
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Assembly