Zbekiston respublikasi toshkent shahar al-xorazmiy nomidagi toshkent axborot
Download 70.77 Kb. Pdf ko'rish
|
1-topshiriq
- Bu sahifa navigatsiya:
- ; This program displays a message on screen Yoki: add eax, ebx ; adds ebx to eax
- [label] mnemonic [operands] [;comment]
section.data
BSS bo'limi o'zgaruvchilarni e'lon qilish uchun ishlatiladi. BSS bo'limini e'lon qilish sintaksisi: section.bss Matn bo'limi haqiqiy kodni saqlash uchun ishlatiladi. Bu bo'lim global _start deklaratsiyasi bilan boshlanishi kerak, bu yadroga dasturning bajarilishi qayerdan boshlanishini bildiradi. Matn qismini e'lon qilish sintaksisi: section.text global _start _start: Assembly tilidagi izoh nuqta-vergul (;) bilan boshlanadi. U har qanday bosma belgilarni o'z ichiga olishi mumkin, shu jumladan bo'sh. U o'z-o'zidan satrda paydo bo'lishi mumkin, masalan: ; This program displays a message on screen Yoki: add eax, ebx ; adds ebx to eax Assembly tilidagi dasturlar uch turdagi bayonotlardan iborat: ❖ Bajariladigan ko'rsatmalar yoki ko'rsatmalar ❖ Assembler direktivalari yoki pseudo-ops ❖ Makroslar. Bajariladigan ko'rsatmalar yoki oddiy ko'rsatmalar protsessorga nima qilish kerakligini aytadi. Har bir ko'rsatma operatsiya kodidan (opcode) iborat. Har bir bajariladigan ko'rsatma bitta mashina tili ko'rsatmasini hosil qiladi. Assembler direktivalari yoki psevdo-opslar assemblerga birlashtirish jarayonining turli jihatlari haqida ma’lumot beradi. Ular bajarilmaydi va mashina tilidagi ko'rsatmalarni yaratmaydi. Makroslar asosan matnni almashtirish mexanizmidir. Assembly tilidagi ko'rsatmalar har bir satrga bitta bayonot kiritiladi. Har bir bayonot quyidagi formatga amal qiladi: [label] mnemonic [operands] [;comment] Kvadrat qavs ichidagi maydonlar ixtiyoriy. Asosiy ko'rsatma ikki qismdan iborat bo'lib, birinchisi - bajariladigan buyruqning nomi (yoki mnemonika), ikkinchisi - operandlar yoki buyruq parametrlari. Quyida assambler tilidagi odatiy gaplarga misollar keltirilgan: Quyidagi assembly tili kodi ekranda 'Hello World' qatorini ko'rsatadi: Biz allaqachon yig'ilish dasturining uchta bo'limini muhokama qildik. Ushbu bo'limlar turli xil xotira segmentlarini ham ifodalaydi. Qizig'i shundaki, bo'lim kalit so'zini segment bilan almashtirsangiz, xuddi shunday natijaga erishasiz. Quyidagi kodni sinab ko'rib buni bilish mumkin: Segmentlangan xotira modeli tizim xotirasini segment registrlarida joylashgan ko'rsatkichlar tomonidan havola qilingan mustaqil segmentlar guruhlariga ajratadi. Har bir segment ma'lum turdagi ma'lumotlarni o'z ichiga olishi uchun ishlatiladi. Bir segment ko'rsatmalar kodlarini o'z ichiga olishi uchun ishlatiladi, boshqa segment ma'lumotlar elementlarini saqlaydi va uchinchi segment dastur stekini saqlaydi. Yuqoridagi munozaralar asosida biz turli xil xotira segmentlarini belgilashimiz mumkin: Ma'lumotlar segmenti - U .data bo'limi va .bss bilan ifodalanadi. .data bo'limi dastur uchun ma'lumotlar elementlari saqlanadigan xotira hududini e'lon qilish uchun ishlatiladi. Ma'lumotlar elementlari e'lon qilingandan keyin bu bo'limni kengaytirib bo'lmaydi va u butun dastur davomida statik bo'lib qoladi. .bss bo'limi, shuningdek, dasturda keyinroq e'lon qilinadigan ma'lumotlar uchun buferlarni o'z ichiga olgan statik xotira bo'limidir. Bu bufer xotirasi nol bilan to'ldirilgan. Kod segmenti - .matn bo'limi bilan ifodalanadi. Bu xotirada buyruq kodlarini saqlaydigan maydonni belgilaydi. Bu ham belgilangan maydon. Stack - Bu segment dastur ichidagi funktsiyalar va protseduralarga uzatiladigan ma'lumotlar qiymatlarini o'z ichiga oladi. Protsessor operatsiyalari asosan ma'lumotlarni qayta ishlashni o'z ichiga oladi. Ushbu ma'lumotlar xotirada saqlanishi va undan foydalanish mumkin. Biroq, ma'lumotlarni o'qish va xotiraga saqlash protsessorni sekinlashtiradi, chunki u boshqaruv shinasi va xotira saqlash blokiga ma'lumotlar so'rovini yuborish va ma'lumotlarni bir xil kanal orqali olishning murakkab jarayonlarini o'z ichiga oladi. Protsessor operatsiyalarini tezlashtirish uchun protsessor registrlar deb ataladigan ba'zi ichki xotira saqlash joylarini o'z ichiga oladi. Registrlar ma'lumotlar elementlarini xotiraga kirmasdan qayta ishlash uchun saqlaydi. Protsessor chipiga cheklangan miqdordagi registrlar o'rnatilgan. IA-32 arxitekturasida o'nta 32 bitli va oltita 16 bitli protsessor registrlari mavjud. Registrlar uchta toifaga bo'lingan: ● Umumiy registrlar, ● Nazorat registrlari va ● Segmentli registrlar. Umumiy registrlar yana quyidagi guruhlarga bo'linadi: ● Ma'lumotlar registrlari, ● Pointer registrlari ● Indeks registrlari. Protsessor ko'rsatmalar to'plami AND, OR, XOR, TEST va NOT Boolean mantiqiy ko'rsatmalarini taqdim etadi, ular dasturning ehtiyojiga qarab bitlarni sinovdan o'tkazadi, o'rnatadi va tozalaydi. Barcha holatlarda birinchi operand registrda yoki xotirada bo'lishi mumkin. Ikkinchi operand registrda/xotirada yoki darhol (doimiy) qiymatda bo'lishi mumkin. Biroq, xotiradan xotiraga operatsiyalarni amalga oshirish mumkin emas. Ushbu ko'rsatmalar operandlarning bitlarini taqqoslaydi yoki moslashtiradi va CF, OF, PF, SF va ZF bayroqlarini o'rnatadi. NASM o'zgaruvchilar uchun saqlash joylarini zaxiralash uchun turli xil aniqlovchi direktivalarni taqdim etadi. Define assembler direktivasi saqlash joyini ajratish uchun ishlatiladi. U bir yoki bir nechta baytni zahiralash va ishga tushirish uchun ishlatilishi mumkin. Fayl ko'rsatgichi fayldagi keyingi o'qish/yozish operatsiyasi uchun joyni baytlar bo'yicha belgilaydi. Har bir fayl baytlar ketma-ketligi sifatida qaraladi. Har bir ochiq fayl fayl boshiga nisbatan ofsetni baytlarda ko'rsatuvchi fayl ko'rsatkichi bilan bog'langan. Fayl ochilganda, fayl ko'rsatkichi nolga o'rnatiladi. Download 70.77 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling