V bob Assembler tilida dasturlash
Download 0.51 Mb. Pdf ko'rish
|
10-amaliy
- Bu sahifa navigatsiya:
- Eslatma : Ushbu kitobda bundan buyon «Assembler tilida yozilgan dastur» va «Assembler dasturi» iboralari bir xil manoda ishlatiladi. 5.3. Ozgaruvchilarni elon qilish
5.2. Assembler tili
Assembler so'zi ingliz tilidan olingan bo'lib, yig'uvchi, jamlovchi ma'nolarini anglatadi. Assemblerda yoziladigan dasturlar hamma dasturlash tillarida bo'lgani kabi, oddiy matn sifatida matn muharrirlari orqali yoziladi. Aslini olganda assembler ham bir dastur bo'lib, u berilgan matndagi assembler buyruqlarini mashina buyruqlariga o'giradi. Bu til quyi darajali til deb atalishining sababi shuki, assembler tili mashina tiliga juda yaqin ko'rinishga ega. Undagi har bir 1 Bu yerda protsessor little endian ekanligi nazarda tutilgan. To'liq ma'lumot uchun «O'zgaruvchilarni e'lon qilish» mavzusiga qarang. 45 vazifa, topshiriq, amal (amal deganda, arifmetik amallarni bajaradigan buyruqlar ko'zda tutiladi) yoki buyruq aniq bir mashina darajasidagi buyruqqa to'g'ri keladi, ya'ni assemblerdagi har bir buyruq mos ravishda o'z yagona mashina kodiga ega. Masalan, yuqori darajali dasturlash tillaridagi ma'lum bir ifoda yoki buyruq mashina tilidagi 10-15 ta yaqin mashina buyruqlari bilan ifodalanadi. Shuning uchun ham assembler boshqa dasturlash tillari kompilyatorlaridan soddaroqligi bilan ajralib turadi. Eslatma : Ushbu kitobda bundan buyon «Assembler tilida yozilgan dastur» va «Assembler dasturi» iboralari bir xil ma'noda ishlatiladi. 5.3. O'zgaruvchilarni e'lon qilish O'zgaruvchilar dasturlashda katta ahamiyatga ega. Matematika kursidan ma'lumki, funksiya ma'lum bir o'zgaruvchilarga bog'liq bo'ladi. O'zgaruvchi esa har xil qiymatlarni qabul qilib, doim o'zgarib turadi. Unga bog'liq holda funksiya qiymati ham o'zgarib turadi. Masalan, f x= x2 4 funksiyasini oladigan bo'lsak, uning o'zgaruvchisi x hisoblanadi. Shu tariqa dasturni ham funksiya deb tushunsak, uning ham o'z o'zgaruvchilari mavjud. Lekin biz daftarda yechadigan tenglama yoki funksiya o'zgaruvchilaridan dasturdagi o'zgaruvchilarning farqi shundaki, ular uchun alohida qiymat saqlash maqsadida xotiradan joy ajratiladi. Qancha va qanday joy ajratish bu dasturchi vazifasiga kiradi. Demak, dasturdagi o'zgaruvchilar bu dasturchining kerakli qiymatlarini dasturning boshidan oxirigacha bo'lgan ish jarayonida saqlaydigan va xotirada ma'lum bir joyni ajratish yo'li bilan amalga oshiradigan obyektlardir. Yuqoridagi boblarda xotira haqida ma'lumot olgan bo'lsangiz, ravshanki, xotiraga murojaat etganda kerakli xotira sohasining manzili orqali aloqaga kirishiladi. O'zgaruvchilarda ham shu narsa yuz beradi. Biz ularni birinchi marta e'lon qilganimizda, ya'ni dasturga tanishtirganimizda, xotiradan keraklicha joy ajratiladi va bu joy manzili o'zgaruvchi sifatida dasturga jo'natiladi. Biz dasturda o'zgaruvchiga murojaat qilish uchun berilgan manzildan foydalanamiz. Manzilning o'zi ham bunday olib qaraganda qandaydir bir son bo'lib, unga keyinchalik murojaat qilish uchun dasturchi eslab qolishiga to'g'ri keladi. Dasturlash davomida ba'zida shunday o'zgaruvchilarning 30-40 tasi kerak bo'lishi mumkin. Bu har bir o'zgaruvchidan foydalanish uchun uning manzilini eslab qolishi zarur deganidir. Inson ruhiyatidan ma'lumki, kishi katta-katta sonlardan ko'ra harflardan, belgilardan tashkil topgan nomlarni yoki hech bo'lmaganda bo'g'inlarni ancha yaxshi eslab qoladi. Shuni hisobga olgan holda dasturlashda ham matematikada bo'lgani kabi o'zgaruvchilarga ularni e'lon qilganda nom beriladi. O'zgaruvchi nomi assembler tili nuqtai nazarida xotiradan ajratilgan joy manziliga qo'yilgan nishondir. Demak, nishon bu o'zgaruvchi uchun berilgan nom ekan. Dasturlash davomida o'zgaruvchiga murojaat qilish kerak bo'lgan joylarda nishonlar yoziladi. Nishonlar faqat dasturchi uchun ahamiyatga ega bo'lib, assembler dasturni yig'ish chog'ida ularni hammasini kerakli mantiqiy manzillarga almashtirib chiqadi. O'zgaruvchi, ya'ni nishon nomlari harflardan, raqamlardan va _, $, #, @, ~, ., ? kabi maxsus belgilardan tashkil topishi mumkin. Nomlashda faqat lotin alifbosidagi harflar ishlatiladi. Nishon nomi harf bilan boshlanishi shart! Ammo ba'zi, maxsus hollarda nishon ., _ va ? belgilari bilan ham boshlanishi mumkin. Bu hollar haqida birozdan so'ng so'z yuritamiz. O'zgaruvchi nomi 4095 ta belgidan ortiq bo'lmasligi kerak. Nishonga qanday nom berish dasturchiga havola. Asosiysi o'zgaruvchiga shunday nom berish kerakki, nom unda qanday qiymat saqlanayotgani haqida bildirib tursin. Masalan: x, y, abc, F7, eng_katta_b, EKUK va hokazo. NASM kompilyatori bosh harflarni kichik harflardan farqlaydi. Ya'ni o'zgaruvchilar nomi bir xil bo'lsada, faqat bosh yoki kichik harflarga 46 farq qilsa ular boshqa-boshqa o'zgaruvchilar hisoblanadi. Masalan: hisob, Hisob, HISOB va hiSOB boshqa-boshqa o'zaruvchilar hisoblanadi. Endi bevosita o'zgaruvchi uchun xotiradan joy ajratishga to'xtalsak. Buni biz dasturlash tilida o'zgaruvchini e'lon qilish deb ataymiz. Buning asosan ikki xil yo'li bor. Birinchisida faqat keraklicha joy ajratiladi va manzil nishonga o'zlashtiriladi. Ikkinchisida esa joy ajratilishi bilan birga o'zgaruvchiga boshlang'ich qiymat ham beriladi, ya'ni o'zgaruvchi e'lon qilinishi bilan birga u aniqlanadi ham. Birinchi usulda e'lon qilinadigan o'zgaruvchilar dasturning .bss bo'limida yoziladi. Yozish qoidasida esa biz RESX direktivasidan foydalanamiz. X o'rnida 6-jadvalda ko'rsatilgan harflardan biri bo'lishi mumkin. Bu harflar qancha xotira ajratilishini aniqlaydi. Direktiva iborasiga kelsak, bu faqat assembler tushunadigan va umuman mashina tiliga o'girilmaydigan maxsus buyruqlar. Assembler RESX ni ko'rganida o'zgaruvchi uchun joy ajratilishi kerakligini anglaydi. 6-jadval Download 0.51 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling