Mẫu hai tệp
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 5 trên 45.
Trong suốt khóa học này, bạn sẽ viết mọi chương trình bằng hai tệp riêng biệt:
| Tệp | Mục đích |
|---|---|
data.asm | Lưu trữ toàn bộ dữ liệu (chuỗi, số, biến) |
main.asm | Lưu trữ toàn bộ code (chỉ thị, logic, luồng) |
Trình hợp dịch không yêu cầu điều này. Bạn có thể đặt mọi thứ trong một tệp. Nhưng tách code khỏi dữ liệu giúp chương trình gọn gàng hơn, dễ đọc hơn và dễ gỡ lỗi hơn.
Tại sao lại có hai tệp?
- Tổ chức: Dữ liệu và code có mục đích khác nhau. Tách riêng chúng giúp bạn suy nghĩ rõ ràng hơn.
- Tái sử dụng: Bạn có thể dùng cùng một
data.asmvới các tệpmain.asmkhác nhau.
- Dễ đọc: Bạn không cần cuộn qua những chuỗi dài để tìm đoạn code của mình.
- Thực tiễn trong ngành: Các dự án thực tế tách biệt code và dữ liệu, dù thường theo những cách phức tạp hơn.
Cách hoạt động:
Tệp main.asm bao gồm tệp data.asm bằng chỉ thị %include. Chỉ thị này cho trình hợp dịch biết: "chèn toàn bộ nội dung của data.asm vào đây trước khi hợp dịch."
Hai tệp đặt cạnh nhau:
| data.asm | main.asm |
|---|---|
section .data | %include "data.asm" |
| (đặt biến ở đây) | section .text |
global _start | |
_start: | |
| (đặt câu lệnh ở đây) |
Chức năng của từng phần:
| Phần | Mục đích | Tệp nào? |
|---|---|---|
section .data | Chứa dữ liệu tồn tại trong bộ nhớ khi chương trình chạy | data.asm |
section .text | Chứa các chỉ thị có thể thực thi (code) | main.asm |
global _start | Giúp trình liên kết nhận biết điểm vào chương trình | main.asm |
_start: | Nhãn nơi chương trình bắt đầu thực thi | main.asm |
Bạn chưa cần ghi nhớ
section .data,section .text,global _starthay_start:vào lúc này. Mình sẽ giải thích chi tiết từng lệnh trong các bài học tiếp theo. Trước mắt, bạn chỉ cần nhìn tổng thể và hiểu cấu trúc của hai tệp.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
Tự luyện tập: Playground Assembly