Zbekiston respublikasi toshkent shahar al-xorazmiy nomidagi toshkent axborot


Download 70.77 Kb.
Pdf ko'rish
bet2/3
Sana19.06.2023
Hajmi70.77 Kb.
#1610872
1   2   3
Bog'liq
1-topshiriq

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:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling