5-Amaliy ish Mavzu: Assembler tilida asosiy operatorlar bilan tanishish: Ishdan maqsad


Mavzu: Assembler tilida dasturlash



Yüklə 256,89 Kb.
Pdf görüntüsü
səhifə2/3
tarix02.06.2023
ölçüsü256,89 Kb.
#123019
1   2   3
5-Amaliy ish (Assembler tilida asosiy operatorlar bilan tanishish

5.1 Mavzu: Assembler tilida dasturlash. 
Assembler tili bir 
dasturlash tili
 ma'lum bir turdagi protsessor uchun mo'ljallangan past 
darajali. Biz uni ishlab chiqarishimiz mumkin 
 
yuqori darajadagi dasturlash tilidan 
(masalan, C / C ++). Ammo biz ushbu tilda dasturlarni o'zimiz ham yozishimiz mumkin. 
Biz o'z navbatida assembler kodini assembler yordamida mashina kodiga aylantirishimiz 
mumkin. 
Assembler - bu kompyuterni boshqaradigan va ko'rsatmalarni bitlar naqshiga 
o'zgartiradigan dastur. Protsessor undan asosiy operatsiyalarni bajarish uchun 
foydalanishi mumkin. Ba'zilar ushbu ko'rsatmalarni assembler tili deb atashadi, 
boshqalari esa bu atamadan foydalanadilar assambleya tili . 
Biz qayerda assemblerdan foydalanamiz? 
Har bir kompyuterda kompyuterning arifmetik, mantiqiy va nazorat ishlarini bajaradigan 
protsessor mavjud. 
Har bir protsessor oilasi har xil operatsiyalarni bajarish uchun o'ziga xos ko'rsatmalarga 
ega, masalan, klaviatura kiritish, ma'lumotni ekranda aks ettirish va boshqa har xil 
vazifalarni bajarish. Ushbu ko'rsatmalar ketma-ketligini "mashina tiliga oid ko'rsatmalar" 
deymiz. 
Protsessor faqat mashina tilidagi ko'rsatmalarni tushunadi, ular birlar va nollarning 
ketma-ketligidir. Biroq, mashina tili juda tushunarsiz va murakkab bo'lib, dasturiy 
ta'minotni ishlab chiqishda foydalanish mumkin emas. Shunday qilib, assembler tili turli 
xil ko'rsatmalarni ramziy kodda va tushunarli shaklda ifodalovchi ma'lum bir 
protsessorlar oilasi uchun mo'ljallangan. 
Assambleya tili - shakli va mazmuni bo'yicha mashina tiliga eng yaqin ramziy 
dasturlash tili. O'rnatish tili quyidagi hollarda foydalidir: 

Biz dasturimiz bosqichlarini baytgacha va hatto bit darajasiga qadar ehtiyotkorlik 
bilan nazorat qilishimiz kerak. 



COBOL, Java yoki C kabi boshqa ramziy dasturlash tillari bilan ta'minlanmagan 
funktsiyalar uchun kichik dasturlarni yozishimiz kerak. 
Assambleyer shunday ishlaydi 

Kompyuterlar ma'lum bir asosiy ko'rsatmalar to'plami bilan ta'minlanadi, ular 
kompyuter bajarishi mumkin bo'lgan asosiy operatsiyalarga mos keladi. Masalan, 
"Load" iborasi protsessorning ketma-ket bitlarini protsessor xotirasidagi joydan 
registr deb ataladigan maxsus omborga ko'chirilishiga olib keladi. 

Dasturchi ushbu assembler ko'rsatmalaridan foydalangan holda dastur yozishi 
mumkin. 

Deb nomlanuvchi assambleyerlarning ushbu ketma-ketligi 
manba kodi 
yoki manba 
dastur, keyinchalik dasturni boshlaganimizda assembler dasturida ko'rsatiladi. 

Assembler dasturi har bir dastur yo'riqnomasini manba dasturida oladi va tegishli 
bitli oqim yoki naqsh hosil qiladi (nollar qatori va ma'lum uzunlikdagi birliklar). 

Assambleyer dasturining chiqishi kirish manbai dasturiga nisbatan ob'ekt kodi yoki 
ob'ekt dasturi deb ataladi. Ob'ekt dasturini tashkil etadigan nollar va bir qatorlar 
qatori mashina kodi deb ham ataladi. 

Keyin biz ob'ekt dasturini istalgan vaqtda ishga tushirishimiz mumkin. 
Assambleya tili ko'rsatmalar yoki izohlarni ifodalovchi bayonotlardan iborat. 
Yo'riqnomalar tilning ishchi qismi bo'lib, quyidagi uch guruhga bo'linadi: 

Mashina uchun ko'rsatmalar. 

Montajchi uchun ko'rsatmalar. 

Ibratli ko'rsatmalar. 
O'rnatish kodini qanday qo'llaymiz? 
Ko'pgina kompilyatorlar manba kodini to'g'ridan-to'g'ri mashina kodiga o'zgartirganligi 
sababli yarating 
dasturiy ta'minotni ishlab chiquvchilar 
ko'pincha assembler tilidan 
foydalanmasdan dasturlar. Ammo ba'zi hollarda biz dasturni aniq sozlash uchun 
assembler kodidan foydalanishimiz mumkin. Masalan, dasturchi ma'lum bir jarayonni 
iloji boricha samarali ishlashiga ishonch hosil qilish uchun uni assembler tilida yozishi 
mumkin. 
Assembler tillari protsessor arxitekturasiga qarab turlicha bo'lishiga qaramay, ular 
ko'pincha tegishli ko'rsatmalar va operatorlarga ega. Quyida x86 protsessorlarini qo'llab-
quvvatlaydigan ko'rsatmalarga ba'zi misollar keltirilgan. 

MOV - ma'lumotlarni bir joydan boshqasiga ko'chirish. 

ADD - ikkita qiymatni birga qo'shish. 

SUB - bitta qiymatni boshqa qiymatdan ayirish. 

PUSH - ma'lumotlarni to'plamga surish. 

POP - to'plamdan olingan ma'lumotlar. 

JMP - boshqa joyga o'tish. 

INT - jarayonni to'xtatish. 
3 va 4 raqamlarini qo'shish uchun quyidagi oddiy yig'ish kodidan foydalanishimiz 
mumkin: 
mov eax, 3 - "eax" registriga 3 yuklaydi. 
mov ebx, 4 - "ebx" registrga 4 yuklaydi. 
eax, ebx, ecx qo'shing - "eax" va "ebx" ni qo'shing va natijani (7) "ecx" da saqlang. 


Biroq, assemblerda dastur yozish juda mashaqqatli jarayondir. Buning sababi shundaki, 
har bir operatsiya juda oddiy darajada bajarilishi kerak. Kompyuter dasturini yaratish 
uchun hech qachon assembler kodidan foydalanishning hojati bo'lmasligi mumkin, ammo 
assambleyer tilini o'rganish ko'pincha informatika o'quv dasturining bir qismidir, chunki 
u protsessorlarning ishlash uslubi to'g'risida foydali ma'lumot beradi. 
Assembler tilining afzalliklari 
Ushbu asosiy tilni bilish sizni quyidagilar haqida xabardor qiladi: 

Dasturlar OS, protsessor va BIOS bilan birgalikda ishlaydi. 

Ma'lumotlar xotirada ko'rsatiladi. 

Protsessor ko'rsatmalarni bajaradi. 

Ma'lumotlarga ishlov berish. 

Dastur tashqi qurilmalarga kirish huquqiga ega bo'ladi. 
Assembler tilidan foydalanishning afzalliklari: 

Kamroq xotira va bajarilish vaqtini talab qiladi. 

Assembler apparatga tegishli murakkab vazifalarni sodda usulda iloji boricha 
osonlashtiradi. 

Vaqt tanqidiy ishlariga mos keladi. 

Interfaol tartiblarini va boshqa xotira dasturlarini yozish uchun eng mos keladi. 
Assembler tilini o'rganishimiz kerakmi? 
Assambler tilini o'rganishimiz kerakmi, bizning ishimizga bog'liq. Ko'pgina ishlab 
chiquvchilar uchun javob "yo'q". 
Assembler tilini o'rganishning ikkita asosiy sababi bor: biz uni o'zimiz ishlatishimiz 
kerakligi yoki kompyuterlarni fundamental darajada tushunishni istaganimiz uchun. 
Amaliy nuqtai nazardan, faqat bir nechta muhandislar va kompyuter olimlari 
assemblerlardan foydalanadilar. 
Dasturiy ta'minot ishlab chiqaruvchilarning aksariyat qismi, shu jumladan deyarli barcha 
dasturlarni ishlab chiquvchilar yuqori darajadagi dasturlash tillaridan foydalanadilar va 
assembler kodisiz. Ammo biz assambler tilidan foydalanadigan ba'zi bir aniq yo'nalishlar 
quyidagilardir: 

Operatsion tizimlar. 

Mikrodastur. 

Uskunalar dasturlari. 

Dasturlash tillarini loyihalash. 

Kompilyatorlarni loyihalash. 

O'rnatilgan tizimlar


Uskuna dizayni. 

Ilg'or 
kriptografiya


Nazariy informatika. 
Assamblerni o'rganishning yana bir sababi bu kompyuterning tubida nima borligini 
yaxshiroq anglashdir. (Shuning uchun deyarli barcha IT mutaxassislari ushbu tilni o'quv 
jarayonida o'rgatishadi.) 
Agar siz kompyuterlarga sho'ng'ishni yaxshi ko'radigan va texnologiyaga qiziqsangiz, 
past darajadagi tizimlarni rivojlantirishda martaba haqida o'ylashingiz mumkin. 
Assembler tili kodini yaratish 


Kod generatori sintaksis analizatori va/yoki semantik analizatorning chiqishini quyi 
darajadagi kodga, masalan, assembler tiliga o'giradi. 
Kompilyatorning birinchi qismi tahlil qiladi manba kodini dasturning ma'nosini o'z 
ichiga olgan tuzilishga aylantiradi. Bu struktura odatda tekshirilgan va dekodlangan 
mavhum sintaksis daraxtidir. Bundan tashqari, dekodlash barcha identifikatorlar 
tayinlanganligini bildirishini unutmang. 
Ushbu strukturadan biz mos keladigan kodni ham olishimiz mumkin hosil qilish boshqa 
tilda, maqsadli tilda. Kod ishlab chiqaruvchisi shunday qiladi. 
Ba'zi kompilyatorlar ikki marta ishlab chiqaradilar: avval SIL, LLVM IR, HIR, MIR, 
CIL va boshqalar kabi "oraliq tilda" kod ishlab chiqaradilar. Keyin ular virtual mashina 
kodi, assembler tili yoki mashina tili kabi to'g'ridan-to'g'ri bajarishimiz mumkin bo'lgan 
maqsadli tilda "haqiqiy" kod ishlab chiqarishni amalga oshiradilar. 
Kod yaratish maqsadlari 
Bular yaxshi kod ishlab chiqaruvchining uchta maqsadi: 

U to'g'ri kodni ishlab chiqishi kerak. 

Jeneratör samarali kod yaratishi kerak. 

U samarali kod ishlab chiqishi kerak. 
O'rganish uchun boshqa narsalar 
Dasturni tayyorlash va ko'chirish sohasidagi yangi g'oya - a tushunchasi 
virtual mashina
 . 
Masalan, Java dasturlash tili yordamida til ko'rsatmalari bayt kod deb nomlanuvchi 
mashina tilining umumiy shakliga tuzilgan bo'lib, uni virtual mashina bajarishi mumkin, 
bu kompyuterning aksariyat operatsiyalariga yaqin keladigan nazariy mashina turi. Keyin 
bayt kodi Java virtual mashinasiga oldindan yuklangan yoki o'rnatilgan har qanday 
hisoblash platformasiga yuborilishi mumkin. Virtual mashina platformaning o'ziga xos 
ko'rsatmalari va boshqa xususiyatlarini biladi va Java bayt kodini ishga tushirishga 
imkon beradi. 
Ba'zi tillar mavjud, agar ular haqida biron bir narsani bilsak, biz ko'p narsani qila olamiz. 
Python va Ruby shunga o'xshashdir, biz ular haqida biron bir foydali narsani qurish 
uchun hafta oxiri etarlicha ma'lumot olishimiz mumkin. Assambleya tili bunday emas. 
Biz hech qachon assembler tilini o'z-o'zidan emas, balki har doim ma'lum bir platformada 
ishlatamiz. Assambleyerni bilishi kerak bo'lgan muhandis turi, ehtimol siz samarali 
bo'lish uchun boshqa ko'nikmalarni ham bilishingiz kerak bo'lgan joyda ishlaydi. Bunga 
quyidagilar kiradi: 

VHDL va Verilog kabi apparat tillari, shuningdek mikroprotsessorlar va 
elektrotexnika haqida tushuncha. 

C va uning hosilalari kabi past darajadagi operatsion tizim tillari: C ++, C # va D 

Fortran va kabi qadimiy tillar 
Kobol


Java va Objective-C kabi platforma tillari. 

Algoritmlar. 
Programmalash tillari sun’iy tillar hisoblanadi, ularda sintaksis va semantik qoidalar 
qat’iy aniqlangan bo‘ladi. SHu sababli Programmalash tillari tabiiy tillardan farqli 
ravishda jumlalarni ko‘pmazmunli va erkin talqin etishga yo‘l qo‘ymaydi. Buning asosiy 
sababi tildagi xar bir ko‘rsatma mashina tilidagi aniq bir buyruqqa o‘tadi.


Sintaksis-bu qoidalar to‘plami bo‘lib, Programmalash tilida ruxsat etilgan belgilarning 
ketma-ketligi va asosiy ichki tuzilishni aniqlaydi.
Semantika-til birliklariga (so‘z, so‘z birikmalari, jumlalariga) beriladigan qiymatlardir.
EHMlar endi yuzaga kelgan paytda programma tuzishda, faqat mashina tillarida, ya’ni 
sonlar yordamida EHM bajarishi kerak bo‘lgan amallarning kodlarida kiritilgan. Bu 
holda mashina uchun tushinarli sanoq, sistemasi sifatida 2 lik, 6 lik, 8 lik sanoq 
sistemalari bo‘lgan. Programma mazkur sanoq sistemasidagi sonlar vositasida kiritilgan.
YUqori bosqichli programmalashda, mashina tillariga qaraganda mashinaga moslashgan 
(yo‘naltirilgan) belgili kodlardagi tillar hisoblanadi. Belgilar kodlashtirilgan tillarning 
asosiy tamoyillari shundaki, unda mashina kodlari ularga mos belgilar bilan belgilanadi
hamda xotirani avtomatik taqsimlash va xatolarni tashhis qilish kiritilgan. Bunday 
mashina moslashgan til -
ASSEMBLER tili nomini oldi.
EHM faqat mashina tilini-buyruqlar, operand va sonlarning ikkilik sanok, sistemasidagi 
ko‘rinishini «tushinadi». SHu sababli, Assembler tilida yozilgan programmalar uchun 
ularni mashina tiliga o‘tkazuvchi «tarjimon» kerak bo‘ladi.
Assembler tilidagi programmani mashina tiliga o‘tkazuvchi maxsus programma 
translyator deyiladi, ayrim hollarda uni assembler deb ham atashadi.
Mashinaga moslashgan tillarning asosiy kamchiligi bir turdagi mashina uchun tuzilgan 
programma boshqa mashinalarda bajarilmaydi, ya’ni bunday tillar mashinaning apparat 
tuzilishiga bog‘liq qilib yaratiladi. Masalan, Pravets mashinasi uchun tuzilgan 
programma IBM yoki YAMANA turidagi mashinalar uchun o‘tmaydi va aksincha.
Programmalash tillarining keyingi bosqichida protsedurali tillar joylashadi. Bu tillaring 
asosiy xususiyati shundaki, ularning sintaksis va semantikasi konkret EHM (protsessor) 
buyruqlari tarkibiga bog‘liq, emas. Tuzilgan programmani konkret EHM ga bog‘lashni 
translyator amalga oshiradi.
Programmaning boshlang‘ich matni Operativ xotiraga kiritilgandan keyin u translyasiya 
qilinadi. Natijada, aynan shu mashina «tushinadigan» buyruqlar ketma-ketligi hosil 
bo‘ladi va ularni bajarish asosida EHM masalani echadi. Programmani tarjimasi va uni 
bajarish jarayoni ikki usulda amalga oshirilishi mumkin:
Birinchi usul-komplilyator deb nomlanuvchi usulda programmani EHMda bajarilishi-
tarjima jaryoni to‘liq, tugagandan keyin amalga oshiriladi. Bunda tarjima programmasini 
operativ xotirada saqlab turishga hojat yuq, shu sababli xotirani tejashga erishiladi.
Ikkinchi usul – interpretatsiya - programmadagi ayrim operatorlar ular tarjima qilingan 
zahoti bajariladi, shundan keyin navbatdagi operator tarjima qilinadi, bajariladi va 
xokazo. Bu rejimda xotirada interpretator programmasi ham bo‘lishi kerak, natijada 
qo‘shimcha xotira ishlatiladi va programmaning ishlashi kompilyasiya qilinganga 
nisbatan sekin ishlaydi. Interpretatorning afzallik tomonlari programmalarni sozlash 
paytida ko‘rinadi, ya’ni yo‘l qo‘yilgan xatolar tuzatilishi mumkin.
Kompilyatorda
bunday
imkoniyat
yuk.
Protsedurali tillarning umumiy xususiyatlarini ko‘raylik. Bu tillarda programmadagi 
yozuvlar umumiy qabul qilingan matematik yozuvlarga juda yaqin va tushunish uchun 
engildir. Masalan, 7 va 5 sonlaring yig‘indisini hisoblash amalini programmalash tillarida 
yozilishini ko‘raylik:


mashina tilida
Buyruq 
Operand adresi 
0011 1111 
1101 0001 
0000 0101 
1101 0010 
0000 0110 
1101 00111 
0000 0111 
1101 0100 
1000 0000 
1101 0101 
Java tili kompyuter tarmoqlarida amal qiladigan programmalarni yaratishga 
mo‘ljallangan, ya’ni Java tilida yozilgan programmalar global tarmoqlarda 
dinamik reklamalarni (animatsiya, teletayp lentalari) global tarmoqda joylashtirish 
uchun ishlatiladi, Java tilining afzalligi shundaki, u turli operatsion sistemalarda 
ham birdek amal qilaveradi. Java programmasi bir paytda Windows, UNIX va 
Macintosh operatsion sistemalarida ishlashi mumkin.
Quyidagi jadvalda programmalash tillari xaqida ma’lumotlar keltirilgan.

Yüklə 256,89 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin