khanhhoangbkdn
VIP Members
-
07/10/2016
-
34
-
65 bài viết
Lập trình Assembly trên Nasm part 1
Các bạn tham khảo tài liệu asm tại link :
https://whitehat.vn/threads/tong-hop-tai-lieu-hoc-assembly-tren-nasm.8566/
Cấu trúc của một chương trình asm:
Để biên dịch trên linux 64 bit :
Để biên dịch trên linux 32 bit :
Ví dụ về chương trình asm đơn giản các bạn có thể tham khảo :
https://whitehat.vn/threads/tong-hop-tai-lieu-hoc-assembly-tren-nasm.8566/
Cấu trúc của một chương trình asm:
Mã:
segment .data ;;chứa dữ liệu khai báo
segment .bss ;;chứa dữ liệu input và các biến sử dụng trong chương trình
segment .code ;;vùng mã lệnh
global main
main:
push ebp ;tương đương int main(){
mov ebp,esp
;......phần code Assembly
leave ;bằng mov esp,ebp >> pop ebp
ret ;tương đương return 0;
Để biên dịch trên linux 64 bit :
nasm -f elf32 ex6.asm
ld -m elf_i386 ex6.o -o ex6
Để biên dịch trên linux 32 bit :
nasm -f ex6.asm
ld -m elf ex6.o -o ex6
Ví dụ về chương trình asm đơn giản các bạn có thể tham khảo :
Mã:
segment .data
operchar db '+',0
msg db "Math %d %c %d = %d",10,0
segment .code
extern printf
global main
main:
push ebp
mov ebp,esp
sub esp,4
mov eax,8
mov edx,4
push eax
add eax,edx
mov ecx,eax
pop eax
push ecx
push edx
push dword [operchar]
push eax
push msg
call printf
add esp,20
leave
ret