✴️Basic Syntax
Một chương trình assembly được chia thành 3 phần chính:
data
bss
text
data section
Phần data được sử dụng để khai báo dữ liệu khởi tạo hoặc hằng số và tất nhiên là nó không thay đổi trong thời gian chạy, bạn có thể khai báo các giá trị hằng số khác nhau, tên tệp hoặc kích thước bộ đệm, v.v., trong phần này.
Cú pháp để khai báo data section là:
section .data
bss section
Phần này được sử dụng để khai báo các biến. Cú pháp để khai báo bss là:
section .bss
text section
Phần này được sử dụng để lưu giữ code. Phần này phải được bắt đầu bằngglobal _start
để nó nói cho kernel biết nơi code bắt đầu được chạy và thực thi:
Cú pháp để khai báo text section là:
section.text
global _start
_start:
<code written here>
Comment
Để viết được comment thì ta thêm ";" vào trước mỗi câu comment.
add eax, ebx ; adds ebx to eax
Các câu lệnh assembly
Câu lênh Assembly bao gồm 3 loại:
Executable instructions or instructions
Assembler directives or pseudo-ops, and
Macros
Trong đó:
Executable instructions hoặc instructions sẽ nói cho bộ xử lý việc nó phải làm. Mỗi instruction bao gồm một operation code (opcode). Mỗi executable instructions tạo ra một lệnh ngôn ngữ máy.
Assembler directives hoặc pseudo-ops sẽ nói cho trình biên dịch về các khía cạnh khác nhau của assembly process. Chúng không thể thực thi và tạo ra các lệnh ngôn ngữ máy.
Macro về cơ bản là một cơ chế thay thế văn bản.
Cú pháp của các câu lệnh Assembly.
Format chung của nó là:
[label] instruction <operands> ;comment
Về cơ bản thì nó gồm 2 phần: instruction <-- thực thi và operand or parameters. Ví dụ:
MOV EAX, 48 ; Transfer the value 48 in the mem to EAX
Và sau tất cả thì bạn đã có thể nắm được cấu trúc của một chương trình cần có rồi. Thì mình sẽ ví dụ về chương trình in ra "Hello World" như bao ngôn ngữ khác để bạn có thể bắt đầu đi đến những bài sau:
section .data
msg db "Hello World!!"
len equ $-msg ;len of msg
section .text
global _start
_start:
;syscall write
mov edx, len
mov ecx, msg
mov ebx, 0x1
mov eax, 0x4
int 0x80
;syscall exit
mov eax, 0x1
int 0x80
Đây là câu lệnh giúp bạn có thể biên dịch được ra file ELF để thực thi.
nasm -f elf hello.asm
ld -m elf_i386 -s -o hello hello.o

Oke vậy phần này đã hoàn thành.
Bài tập cho bài hôm nay sẽ là:
In họ và tên+ sở thích của bản thân ra màn hình ví dụ như sau:

Chúc các bạn học tập vui vẻ 😊
Last updated