Câu lạc bộ Tin học dành cho học sinh Tiểu học

làm quen với ngôn ngữ lập trình ASM (NASM)

Trạng thái

♥ Lượt xem: 7
♥ Lượt phản hồi: 0

Tham gia
28/10/2025
Bài viết
368
Điểm Like
1,746
Điểm Uy tín
364,516
Tí Tinh Tế
Miu Mềm Mại
Rồng Rực Rỡ
Tỵ Tinh Tường
Heo Hiền Hậu
Tuổi Mùi
Phù điêu Hổ
Phù điêu Rồng
Hổ Hào Hiệp
Ngựa Ngộ Nghĩnh
Dê Dịu Dàng
Tích cực hoạt động

Bước 1: Chuẩn bị môi trường


  1. Chọn trình biên dịch / assembler
    • NASM (Netwide Assembler): phổ biến, miễn phí
    • Hoặc MASM (Microsoft Assembler) nếu dùng Windows + Visual Studio
  2. Cài đặt môi trường để chạy ASM
    • Windows: NASM + Command Prompt hoặc Visual Studio
    • Linux: NASM + terminal
    • Mac: NASM + terminal
  3. 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


  1. Registers: nơi lưu dữ liệu tạm thời
    • Ví dụ x86_64: rax, rbx, rcx, rdx
  2. Memory addressing: làm việc trực tiếp với địa chỉ của biến
  3. 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
  4. 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


  1. In ra màn hình → như ví dụ trên
  2. 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


  1. Bắt đầu với các lệnh cơ bản: mov, add, sub, inc, dec, cmp, jmp
  2. Làm việc với register trước, sau đó học memory addressing
  3. Debug bằng gdb hoặc simulator → nhìn dữ liệu trong register
  4. 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
  5. 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



💡 Tóm tắt cho người mới:


  • 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
 

Trạng thái

♥ Lượt xem: 7
♥ Lượt phản hồi: 0

Trên Bottom