1. Các section của chương trình:
Một chương trình Assembly có thể chia thành 3 section (phân đoạn): Data section, Bss session và Text section.
Phân đoạn data:
Được sử dụng để khai báo các dữ liệu khởi tạo và các hằng của chương trình. Dữ liệu ở đây sẽ không được thay đổi khi chạy chương trình.
Chúng ta có thể khai báo giá trị hằng, tên file, kích thước buffer,… tại đây.
Cú pháp: section .data
Section này thường được gọi là data segment.
Phân đoạn bss:
Được sử dụng để khai báo các biến sử dụng trong chương trình
Cú pháp: section .bss
Phân đoạn text:
Được sử dụng để giữ mã lệnh (code) của chương trình. Phân đoạn này phải bắt đầu với khai báo global _start, để báo với hệ điều hành (Kernel) vị trí bắt đầu của chương trình là tại đây.
Cú pháp:
section .text
global _start
_start:
Section này thường được gọi là code segment.
2. Cú pháp câu lệnh Assembly:
Chương trình ngôn ngữ Assembly bao gồm 3 loại lệnh:
Executable instructions hoặc instructions: Đây là dạng lệnh gợi nhớ của ngôn ngữ máy. Processor sẽ dịch các lệnh này sang lệnh ngôn ngữ máy để thực thi.
Assembler directives hoặc pseudo-ops: Đây là các ướng dẫn biên dịch chương trình, nó chỉ có tác dụng với trình biên dịch nên không được dịch sang ngôn ngữ máy.
Macros: Chính là một tập lệnh được đặt tên. Ngay trong quá trình biên dịch chương trình, mỗi lệnh macro sẽ được thay bằng tập lệnh bên trong của nó.
Cú pháp câu lệnh Assembly:
[label] mnemonic [operands] [;comment]
Trong đó:
- [label]: Có thể xem là tên đại diện của lệnh. Nó thường được sử dụng trong các đoạn lệnh có lệnh nhảy (jump), lệnh lặp (loop), lệnh gọi chương trình con (call),…
- Mnemonic: Tên của lệnh ở dạng gợi nhớ (như: mov, add, sub, int…). Đây là một trong các lệnh thuộc tập lệnh gợi nhớ của một processor nào đó.
- [operands]: Đây là các đối tượng chịu sự tác động của lệnh: Biến, hằng, thanh ghi, địa chỉ ô nhớ,… Một lệnh ngôn ngữ Assembly có thể không có, có 1 hoặc 2 operand (toán hạng)
- [;comment]: Phần chú thích lệnh. Được đặt sau dấu chấm phẩy (;).
Ví dụ 1:
AddReg: Add Eax, Ebx ; Cộng nội dung Ebx vào Eax
; AddReg là label của lệnh này
Ví dụ 2:
inc count ; Tăng biế nhớ COUNT lên 1 đơn vị
mov total, 48 ; Chuyển số 48 vào biến nhớ total
add ah, bh
and mask1, 128
add marks, 10
mov al, 10
(Còn tiếp)
» Tin mới nhất:
» Các tin khác: