Dasturni nasm kompilyatori orqali yig'ish uchun buyruqlar qatoriga quyidagi yoziladi
Download 494.54 Kb. Pdf ko'rish
|
11.2-amaliy
- Bu sahifa navigatsiya:
- Eslatma
- p BOSHLANGICH FAYL NOMI
i,I
DIREKTORIYA NOMI Boshlang'ich fayllarni axtarish uchun qo'shimcha direktoriya ko'rsatish. Odatda %INCLUDE makrosiga berilgan boshlang'ich fayllar NASM buyrug'i ishga tushirilgan direktoriyadan qidiriladi. Ushbu kalit orqali esa NASMning boshlang'ich fayllarni axtaradigan direktoriyalariga boshqa direktoriyalarni qo'shish mumkin. Masalan, nasmio.inc fayli dastur joylashgan direktoriyada emas, balki shu direktoriya ichidagi etc direktoriyasida bo'lsin, u holda: $ nasm –f elf birinchi_dastur.asm –I etc/ Direktoriya nomidan so'ng (/) ni qo'yishni unutmang! Chunki faylning to'liq yo'lini aniqlashda NASM shunchaki direktoriya nomiga boshlang'ich fayl nomini qo'shadi. 66 Eslatma : Albatta bu kalitsiz ham %INCLUDE makrosiga boshlang'ich faylning to'liq yo'lini ko'rsatib qo'yish mumkin. Ammo bu holda har safar boshlang'ich faylni boshqa yoqqa ko'chirganingizda kompilyatsiyadan oldin dastur kodiga o'zgartirish kiritishga to'g'ri keladi. p BOSHLANG'ICH FAYL NOMI Dasturga ko'rsatilgan boshlang'ich faylni qo'shadi. Bu orqali dasturga %INCLUDE makrosisiz boshlang'ich fayllarni qo'shish mumkin, shunchaki –p kaliti orqali fayllar NASMga beriladi. Masalan, dasturimizdagi birinchi qatorni o'chirib tashlangda, yig'ish jarayonida quyidagini yozing: $ nasm –f elf dastur.asm –p nasmio.inc d MAKRO[=qiymat] Bir qatorli makroni kompilyatsiya jarayonida aniqlaydi. Bu kalitdan dasturni shartli yig'ishda foydalaniladi («Makro vositalar» bobiga qarang). Bu yerda to'rt burchak qavs uni ichidagi narsa bo'lishi ham, bo'lmasligi ham mumkinligini bildiradi. l TAHLIL FAYL NOMI Dasturni yig'ish natijasida vujudga keladigan mashina tilidagi kodni maxsus ko'rinishda berilgan faylga yozib beradi. Mashina tilidagi kod va manzillar inson tushunishi qiyin bo'lgan ikkilik sanoq tizimida emas, balki ixchamroq bo'lgan o'n oltilik sanoq tizimida beriladi. Faylda siz tuzgan assembler dasturi va unga qo'shilgan boshlang'ich fayldagi dastur o'ng tomonda, unga to'g'ri keladigan mashina kodi esa chap tomonda joylashtiriladi. Bu juda ham foydali kalit bo'lib, tuzgan dasturingizni mashina tilida qanday bo'lishini ko'rishga imkon beradi. Masalan, qiziqish uchun birinchi dasturimizni sinab ko'rishimiz mumkin: $ nasm –f elf dastur.asm l tahlil.txt Endi tahlil.txt faylini biror bir matn muharriri orqali ochib ko'ramiz. Qiziquvchilar uchun dasturning ba'zi qatorlarini tahlil qilamiz. Birinchi dasturning 11–16 qatorlari: 112 section .bss 113 00000000 114 00000004 115 116 section .data 117 00000000 59616E612075636872 xayr db "Yana uchr 118 00000009 61736867756E636861 ashguncha 119 00000012 2C20786179722E0 , xayr.",0 25–26 qatorlar: 215 00000094 A1[00000000] mov eax , [a] 216 00000099 0305[04000000] add eax , [b] Birinchi ustunda tahlil faylidagi har bir satrning tartib raqami joylashgan va bu ustun sizda boshqacha bo'lishi mumkin. Ikkinchi ustunda dasturning har bir qatorining foydali manzillari 4 baytli qiymat 67 sifatida berilgan, ya'ni offsetlar (o'n oltilik sanoq tizimida). Uchinchi ustunda esa bevosita qiymatlar va buyruqlarning mashina tilidagi kodlari joylashgan. E'tibor bergan bo'lsangiz 11 va 15-qatorlardagi section kabi assembler tiliga xos direktivalar mashina tiliga o'girilmagan. Barcha bo'limlarning offset manzillari noldan boshlangan. a va xayr nishonlari bo'lim boshida joylashgani uchun ularning ham manzillari 0x00000000 ga teng. xayr ning 25 baytli boshlang'ich qiymati nishon oldida o'n oltilik sanoq tizimida berilgan. a o'zgaruvchisi 4 baytli bo'lgani sababli b ning manzili shunga qarab 0x00000004 dan boshlangan. (25) qatordagi MOV buyrug'i xotiradagi o'zgaruvchi qiymatini EAX ga yuklashni anglatadigan 0xA1 mashina kodiga o'girilgan va yonida xotira manzili burchakli qavs ichida berilgan. Ushbu buyruq qiymati bilan birga 5 bayt o'lchamga ega bo'lgani tufayli keyingi buyruq 0x00000099 manzilidan boshlangan: 0x95 + 0x5 = 0x99. Eslatma : Windowsda NASM kalitlariga beriladigan fayl nomi yoki mutlaq yo'llar tarkibida bo'shliq ( ) belgisi bo'lmasligi kerak. Masalan: > nasm f win32 dastur.asm IC:\Program files ishlamaydi. 68 Download 494.54 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling