Menu
CoddyTech

Ôn tập: thử thách MOV

Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 22 trên 45.

challenge icon

Thử thách

Thử thách này sẽ kiểm tra mức độ hiểu của bạn về:

  • Tải giá trị từ bộ nhớ
  • Lưu giá trị vào bộ nhớ
  • Sao chép giữa các thanh ghi
  • Dùng kích thước thanh ghi phù hợp

Các địa chỉ dữ liệu đã được tạo sẵn cho bạn. Bạn chỉ cần viết các câu lệnh MOV.

Thử thách

Hoàn thành các nhiệm vụ sau theo thứ tự. Viết một dòng hợp ngữ cho mỗi nhiệm vụ.

Dữ liệu đã có sẵn:

  • num1: chứa giá trị 8 (1 byte)
  • num2: chứa giá trị 3 (1 byte)
  • result: vùng trống (1 byte)

Nhiệm vụ:

  1. Tải giá trị từ num1 vào al
  2. Tải giá trị từ num2 vào bl
  3. Sao chép giá trị từ bl vào cl
  4. Lưu giá trị từ al vào result

Sau khi chạy code:

  • al phải chứa 8
  • bl phải chứa 3
  • cl phải chứa 3
  • Bộ nhớ tại result phải chứa 8

Tự làm thử

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:
    ; Code của bạn chạy trước
    
    %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

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Assembly