Ô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.
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ụ:
- Tải giá trị từ
num1vàoal - Tải giá trị từ
num2vàobl - Sao chép giá trị từ
blvàocl - Lưu giá trị từ
alvàoresult
Sau khi chạy code:
alphải chứa 8blphải chứa 3clphải chứa 3- Bộ nhớ tại
resultphả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
syscallTất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Playground Assembly