Bước 1: Chuẩn bị môi trường
- Chọn trình biên dịch / assembler
- NASM (Netwide Assembler): phổ biến, miễn phí
- Link: https://www.nasm.us/
- Hoặc MASM (Microsoft Assembler) nếu dùng Windows + Visual Studio
- NASM (Netwide Assembler): phổ biến, miễn phí
- Cài đặt môi trường để chạy ASM
- Windows: NASM + Command Prompt hoặc Visual Studio
- Linux: NASM + terminal
- Mac: NASM + terminal
- Chọn môi trường giả lập/IDE (tùy chọn)
- Emu8086: cho ASM 16-bit, dễ học, trực quan
- Visual Studio Code + plugin NASM
Bước 2: Cấu trúc cơ bản của chương trình ASM
ASM làm việc trực tiếp với registers, memory, và instruction set.
Ví dụ: chương trình ASM in “Hello” trên console (NASM + Linux x86_64):
<span>section .data<br> msg db "Hello, ASM!",0xA ; dữ liệu + newline<br><br>section .text<br> global _start ; điểm bắt đầu chương trình<br><br>_start:<br> mov rax, 1 ; syscall: sys_write<br> mov rdi, 1 ; file descriptor: stdout<br> mov rsi, msg ; địa chỉ chuỗi<br> mov rdx, 12 ; độ dài chuỗi<br> syscall ; gọi hệ thống<br><br> mov rax, 60 ; syscall: sys_exit<br> xor rdi, rdi ; exit code 0<br> syscall<br></span>
- mov: chuyển giá trị vào register
- syscall: gọi hệ điều hành để thực hiện hành động (như in ra màn hình)
- rax, rdi, rsi, rdx: register dùng để truyền tham số
Bước 3: Khái niệm cơ bản cần biết
- Registers: nơi lưu dữ liệu tạm thời
- Ví dụ x86_64: rax, rbx, rcx, rdx
- Memory addressing: làm việc trực tiếp với địa chỉ của biến
- Instructions: lệnh cơ bản
- mov: chuyển dữ liệu
- add/sub/mul/div: toán học
- cmp/jmp: điều kiện và nhảy
- Syscall / interrupt: tương tác với hệ điều hành
Bước 4: Viết chương trình ASM đầu tiên
- In ra màn hình → như ví dụ trên
- Cộng hai số:
<span>section .text<br>global _start<br><br>_start:<br> mov rax, 5 ; số 5<br> mov rbx, 3 ; số 3<br> add rax, rbx ; rax = rax + rbx<br><br> ; kết quả 8 ở rax, chỉ lưu trong register<br> mov rdi, rax ; exit code = 8<br> mov rax, 60 ; sys_exit<br> syscall<br></span>
- Bạn có thể chạy → exit code sẽ là 8 (kiểm tra bằng $? trên Linux)
Bước 5: Tips để làm quen ASM
- Bắt đầu với các lệnh cơ bản: mov, add, sub, inc, dec, cmp, jmp
- Làm việc với register trước, sau đó học memory addressing
- Debug bằng gdb hoặc simulator → nhìn dữ liệu trong register
- Viết chương trình nhỏ trước: in ra màn hình, cộng trừ hai số, vòng lặp đơn giản
- Hiểu cách máy tính thực sự làm việc → ASM rất gần với phần cứng
- ASM ≈ “ngôn ngữ của CPU”, thao tác trực tiếp với register và memory
- Chương trình ASM = section dữ liệu + section text
- Lệnh cơ bản: mov, add, sub, cmp, jmp
- Tương tác với OS = syscall
Xem thêm chủ đề cùng danh mục
- Vì sao Greenland lạnh giá, còn iceland lại xanh tươi?
- Dream là ai
- Mr beast là ai
- Các trận chiến mà dabi tham gia, ngoài lề
- Dabi Toya todoroki Tính cách năng lực Kosei
- các chiêu của bakugo P3
- Các chiêu của Bakugo
- các chiêu của Bakugo Katsuki ngắn gọn
- các chiêu của shoto ngắn gọn
- Các câu nói để đời trong học viện siêu anh hùng (của Dabi)
