NASM Assembler uchun to'liq qo'llanma (Linux tizimida) Sozlash
1 NASM ni o‘rnatish
NASM assemblerini Linux operatsion tizimiga o'rnatish uchun quyidagi buyruqni kiriting. Bu buyruqlar Debian/Ubuntu kabi tarqatmalarda ishlaydi:
Agar sizda RedHat/CentOS, Fedora, yoki Arch Linux ishlatilayotgan bo‘lsa, quyidagi mos buyruqlarni kiriting:
RedHat/CentOS:
Fedora:
Arch Linux:
O‘rnatilgan NASM versiyasini tekshirish uchun:
Agar NASM muvaffaqiyatli o‘rnatilgan bo‘lsa, versiya raqami ko‘rsatiladi.
2 NASM yordamida dastur yozish va kompilyatsiya qilish
NASM yordamida oddiy assembler kodini yozish va tuzish jarayoni quyidagicha:
2 Oddiy dastur yozish: "Hello, World!"
Bu oddiy dastur ekranga "Hello, World!" matnini chiqaradi. Yangi .asm
fayl yaratish uchun terminalda quyidagi buyruqni kiriting:
Yangi ochilgan faylga quyidagi assembler kodini yozing:
Bu kod yozilgandan so‘ng faylni saqlang va chiqib ketish uchun CTRL + O
, so'ng CTRL + X
buyrug'idan foydalaning.
2 Assembler kodni tuzish
NASM yordamida bu faylni obyekt faylga aylantirish uchun quyidagi buyruqni kiriting:
Bu yerda:
-f elf64
— 64-bit Linux uchun ELF formatida tuzishni ko‘rsatadi.hello.asm
— assembler faylning nomi.-o hello.o
— obyekt faylning chiqish nomi.
Obyekt faylni bog‘lash (linking)
Yaratilgan hello.o faylni bog‘lovchi (linker) yordamida bajariladigan dasturga aylantirish kerak. Buning uchun quyidagi buyruqni ishlating:
Bu buyruq hello.o obyekt faylni bajariladigan hello nomli dasturga aylantiradi.
Dasturga bajarilish huquqini berish
Yaratilgan dasturga bajarilish huquqini berish kerak, chunki Linux tizimida fayllar odatda bajarilish huquqiga ega emas. Quyidagi buyruq yordamida huquq bering:
Dastur ishga tushirish
Bajariladigan faylga huquq berilgandan so‘ng, dasturni ishga tushirish uchun quyidagi buyruqni kiriting:
Agar hammasi to‘g‘ri bo‘lsa, terminalda "Hello, World !" xabari chiqadi.
3 NASM da arifmetik operatsiyalar
Assembler kodda arifmetik operatsiyalar bajarish uchun add
, sub
, mul
, va div
buyruqlari ishlatiladi. Quyida oddiy misollar keltirilgan:
Qo‘shish va ayirish:
Ko‘paytirish va bo‘lish:
4 Tizim chaqiruvlari bilan ishlash (System Calls)
Linux operatsion tizimida NASM yordamida tizim chaqiruvlari orqali fayllar bilan ishlash, xabarlar chiqarish va boshqa operatsiyalarni bajarish mumkin. Quyida ba'zi muhim tizim chaqiruvlari ro‘yxati:
sys_read
3
fd, buf, len
Fayldan o‘qish
sys_write
4
fd, buf, len
Faylga yozish
sys_exit
1
exit_code
Dasturdan chiqish
Misol – sys_read
va sys_write
tizim chaqiruvlari:
sys_read
va sys_write
tizim chaqiruvlari:Quyidagi dastur foydalanuvchidan ma'lumotni kiritadi va keyin uni ekranga chiqaradi:
Dastur sizdan ma'lumot kiritishni talab qiladi va keyin shu ma'lumotni ekranga qaytaradi.
5. Xatolarni bartaraf etish
Xatolik 1: ./hello: permission denied
./hello: permission denied
Bu xatolik faylga bajarilish huquqi berilmaganligini bildiradi. Faylga bajarilish huquqini berish uchun:
Xatolik 2: ld: cannot find hello.o: No such file or directory
ld: cannot find hello.o: No such file or directory
Bu xatolik hello.o
obyekt faylni topa olmaganingizni bildiradi. hello.asm faylni tuzib hello.o faylni yaratganingizga ishonch hosil qiling:
Keyin obyekt faylni ld
orqali bog‘lang:
Xatolik 3: hello.asm: fatal: will not overwrite input file
hello.asm: fatal: will not overwrite input file
Bu xatolik input va output fayl nomlarining bir xil bo‘lishi sababli paydo bo‘ladi. -o
orqali turli nomdagi obyekt faylni yaratishingiz kerak.
Xulosa
NASM assembler tili orqali Linux operatsion tizimida to‘g‘ridan-to‘g‘ri apparat darajasida ishlashni o‘rganish mumkin. Yuqoridagi qadamlar yordamida siz NASM assemblerda oddiy dasturlar yaratishni, tizim chaqiruvlari bilan ishlashni, va Linuxda to‘liq ishchi dasturlar yaratishni o‘rganasiz.
Bu rasimda biz boshqa fayil ko'rinishida ko'rsatib o'tganmiz !
Last updated