О‘zbekiston respublikasi oliy va о‘rta maxsus ta’lim vazirligi qarshi muhandislik iqtisodiyot instituti
Download 0,76 Mb. Pdf ko'rish
|
informatika va axborot texnologiyalari
- Bu sahifa navigatsiya:
- Operandlar va ularni adreslash rejimlari.
- Operandlarni mikroprogramma muxitida mavjud bо‘lmagan xolda ifodalanishi.
- Operandni buyriqni о‘zida kо‘rsatilishi (bevosita operand).
- Operandni registrlardan birida bо‘lishi.
- Operand stekda joylashadi.
- Adreslashtirish.
- Xotira kataglarini kurish.
- 4.Assembler translyatori . Dasturlarni initsializatsiyalash va kompilyatsiyalash . 1. Xotira va registrlar.
- Dasturni insializatsiyalash.
- Dasturlarni assemblerlashtirish.
- AMALIY HISOBLASH QISM 1-topshiriq.
Masalan : SEGMENT, ENDS, RROC, GROUR va boshqa direktiva-larni nom maydoni bо‘sh bо‘lishi kerak.
NAME, ASSUME, ORG, RUBLIC va boshqalar Malumotlarni taqsimlovchi operandalarda (DB, DW, DD) nomlar programmist tomonidan ixtiyoriy xolda kiritiladi. Makrobuyruqlarni aniqlovchi direktivaning yozilishi yuqoridagi kо‘rinishdai formatdan farqlanadi. Direktiva: Direktiva maydonlari, buyruq ope-randlaridagi mnemoniklarga anolog sifatida bо‘lib, assemblerni kalitli о‘zgarmaydigan sо‘zlarini birini tashkil etadi va assemblerlash jarayonida uning xarakterini aniqlaydi. Assembler direktivalari programmist tomonidan xotirani taqsimlash uchun ishlatiladi va simvolik nomlarni manipulyatsiya modellari bilan bog‘lashni taminlaydi.
direktivalarda, masalan DB, DW, RUBLIC operandlar rо‘yxati beriladi. Maslaan: SEGMENT, RROC obyektni atributlarini aniqlashni tayinlovchi kalitli sо‘zlardan iborat bо‘ladi. Bu xolda operandlarni kо‘rsatish majburmiy emas. Izox: Direktivining izox maydoni buyruqlar operatorlari izoxi bilan bir xil. Assembler tilida tegishli tartibda qо‘llaniladigan va о‘zaro bog‘liq bо‘lgan 3 juft direktivalar mavjud: PDF created with pdfFactory Pro trial version www.pdffactory.com
19
SEGMENT (segment) va ENDS (segmentni tugatish) RROC (prosedura yoki qism programma) va ENDR (protsedurani tugatish) MACRO (makrobuyruqlarni aniqlashni boshlanishi) va ENDM (makrobuyruqlarni aniqlashni tugallanishi) Operandlar va ularni adreslash rejimlari. Oldingi mavzularda biz operandlarni qayerda joylashishini va uning maydon tashkil etuvchilarini yozish xaqida tanishgan edik. Ushbu qismda esa bu savollarga tо‘laroq va sistemalashgan xolda javob beramiz. Bu esa bizga keyingi mavzularda tо‘g‘ridan –tо‘g‘ri assembler tilida amaliy programmalar tuzishni о‘rganishga о‘tishga imkon beradi. Operandlarni mikroprogramma muxitida mavjud bо‘lmagan xolda ifodalanishi. Bu xolatda buyruq tо‘g‘ridan –tо‘g‘ri operandga ega bо‘lmaydi. Buyruqni bajarilish algoritmi ayrim obyektlar (registrlar, eflags registridagi bayroqlar va bosh,) ustida qо‘llaniladi. Masalan: cli va sti buyruqlarida operandalar kо‘rsatilmaydi, oddiy xolda eflags registridagi if uzilish bayrog‘i bilan ishlaydi. Xlat buyrug‘i esa ds:bx juft registrlari tomonidan aniqlangan adres bо‘yicha xotira qatoriga va al registriga murojaat qiladi.
Operand buyruqlar kodida joylashgan, ya’ni uning bir qismini tashkil etadi. Bunday operandni buyruqda saqlash uchun uzunligi 32 bit gacha bо‘lgan maydon ajratiladi. Bevosita operand fakat ikkinchi operand(manba) sifatida bо‘lishi mumkin. qabul qiluvchi operand xotiradan yoki registrdan iborot bо‘lishi mumkin. Masalan: mov ax, 0ffffh ; ax registriga ffff 16 lik о‘zgarmasni uzatish. Add sum, 2; sum adresi bо‘yicha tashkil etuvchiga 2 butun sonni qо‘shish va natijani birinchi operandga, ya’ni xotiraga yozish. Operandni registrlardan birida bо‘lishi. Registrli operandlar registr nomlari bilan kо‘rsatiladi. Registrlar sifatida quyidagilarni ishlatish mumkin. 32-razryadli registlar: EAX,
EBX, EDX,
ECX, ESI,
ESP, EBP;
16-razryadli registlar: AX, BX, DX, CX, SI, DI, SP, BP; 8-razryadli registlar: AH, AL, BH, BL, CH, CL, DH, DL; Masalan: add ax, bx ; ax va bx registrlaridagi tashkil etuvchilarni qо‘shadi va natija ax registriga yoziladi. Dec si ; si ni tashkil etuvchisini bittaga kamaytiradi. PDF created with pdfFactory Pro trial version www.pdffactory.com
20
ki dx registri qiymati xolida kо‘rsatish mumkin. Oxirgi usul programmada port raqamini dinamik xolda aniqlashga imkon beradi. Operand stekda joylashadi. Buyruq biror bir operandga ega bо‘lmasligi, bitta yoki ikkita operandga ega bо‘lishi sham mumkin. Kо‘pgina buyruqlar ikkita operandni bо‘lishini talab etadi. Bir operandni joylashishi registerda yoki xotirada bо‘lishi, ikkinchi operandni joylashishi esa registrda yoki bevosita buyruqda bо‘lishi zarur. Bevosita operand faqat manba-operandi bо‘lishi mumkin.
Ikki operandli mashina buyrug‘ida operandlar quyidagi tartibda kо‘rsatiladi: Registr-registr; Registr-xotira; Xotira-registr; Bevosita operand-registr; Bevosita operand-xotira. Adreslash rejimlari. Ixtiyoriy programmani bajarilishida protsessor buyruq va ma’lumotlar joylashgan xotiraga murojaat qiladi. Ma’lumotlarni о‘zgartiruvchi buyruqlar, kerakli ma’lumotlarni joylashishini kо‘rsatuvchi adreslar aniqlanadi.
00 - xotira minimal adresidan boshlab xotirani xar bir katagi ketma-ket nomerlangan. Protsessor xotirani baytlarga yeki suzlarga yul ochib beradi.
1025 unli sonni kuraylik. 16-li sanok sistemada bu son 0401 buladi. Shu sonni xotiraga yezish uchun ikta bayt yeki bir suz kerak. Bu son 04 - katta kismdan va 01 - kichik kismdan iborat. PDF created with pdfFactory Pro trial version www.pdffactory.com
21
Sistema xotirada suz baytlarini teskari ketma-ketlikda saklaydi. Kichik kism kichik adresida, katta kism - katta adresida. Taxmin kilaylik, protsessor 16-li 0401 sonni registrdan 5612 va 5613 xotira kataglariga yezib kuyyadi:
[04] 5612 katagi 5613 katagi
kichik bayti katta bayti
protsessor, rakamli ma’lumotli baytlari xotirada teskari ketma-ketligida deb xisoblaydi va ular bilan tegishlicha ishlaydi. Bu xususiyat kompyuterda tula avtomatlashtirilgandir. Shunga karamasdan, assembler dasturlarini dasturlashtirish va sozlashda (tugrilashda) xar doim bu narsani esda tutish kerak. Xotira kataglarini kurish.
Xotira kataklarini ichidagilarni kurish uchun DOS DEBUG dasturi ishlatiladi. Bu dasturni boshkarish uchun DEBUG ni kiritib, Enter ni bosish kerak. Shunday keyin DEBUG dasturi diskdan xotirada yuklanadi. Yuklashdan keyin ekranga defis (-) taklif chikadi. Endi DEBUG dasturi komandalarni kabul kilishga tayer.
D - xotirani dampi - bu mashkga tegishli yakka - yagona komandadir. 1. Xotira kattaligi. Avval ishlash uchun mumkin bulgan xotirani kattaligini tekshiramiz. Xotira kattaligi kompyuter modellariga boglik buladi. Uning kiymati ichki ichki pereklyuchatellarni urnatishlar bilan boglik. Va uning kiymati real boglik kattalikdan kichikrok bulishi mumkin. Bu kiymati 16 lik 413 va 414 xotirani kataklaridadir, va uni DEBUG dan ikkita kismdan iborat bulgan kurinishdan kurish mumkin:
- 400 - segmentni adresi; 40 dek yeziladi (oxirgi noli nazarda tutiladi); va - 13 - segmentni boshlanishida siljishi. Shunday, kuyidagi talabni kiritish mumkin:
D 40 : 13 (va Enter ni bosish). Ekranga chikarilgan ikkita birinchi baytlar kilobaytda va 16 lik kurinishda xotirani kattaligini saklaydi
Komandlarda nomlarni, kvadrat kavsdagi nomlarni va sonlarni foydalanish xususiyatlarni kuraylik, kuyidagi masalalarda WORDA xotirada suzni aniklaydi:
MOV AX, BX ; BX ning ichidagi bor narsalarni AX ni registrga yubrish. MOV AX, WORDA; WORDA ni ichidagilarni AX ga yuborish.
MOV AX, [BX] ; AX ga VX registrini adredagi xotirani
;ichidagi narsalarni yuborishga. PDF created with pdfFactory Pro trial version www.pdffactory.com 22
Bu yerda kvadrat kavslar bilan foydalanish yangidir. Dasturni insializatsiyalash.
Yuklash dasturlani ikkita asosiy turlari bor: EXE va COM. EXE dasturni insializatsiyalashtirish uchun DOS da 4 ta talab bor: 1) Kaysi segment registralr segmentlarga mos bulishi assemblerga kursatish; 2) Dastur bajarishni boshlaganda, DS registrdagi adresni stekda saklaydi; 3) stekka nolli adresni yozish; 4) DS registrga ma’lumotlar segmentini adresini yuklash.
Kuyida initsializatsiyalashtirish va dasturdan chikishga tialablar tasdiklangan. 1. ASSUME- assembler direktivasi.
Assembler uchun anik segmentlar va segment registrlari orasilagi moslikni (tugri kelishini) aniklaydi, shu xolda, CODEGS- SS, DATASG- DS va STACKSG- SS . Shu misolda DATA SG va STACK SG aniklamaganlar, lekin ular shunday kursatiladi. STACKSG SEGMENT PARA STACK Stask ‘Stask’ DATASG SEGMENT PARA ‘Data’ cegmentlarni va segment registrlarini assotsiyalanib, assembler xar xil segmentda aloxida atroflarni siljishlarini aniklashni kila oladi. Masalan, kodlar segmentida xar bir komanda anik uzunligiga ega: birinchi komandasi 0 siljishiga ega, agar bu 2- baytli komanda bulsa, ikkinchi komandasi 2 siljishiga ega va xokazo.
2. Xotirada yuklashtirish modulidan oldin 286- baytli (16-li 100) atrof buladi. Bu atrof PSP dastur segmentini prefiksi deb nomlanadi. PSP boshlangich nuktani adresini aniklash uchun yuklashtirish dasturi DS registrini ishlatadi . Foydalanuvchini dasturi shu adresini saklashi kerak . Shuning uchun u shu adresni stekga kuyadi. Keyinrok, RET komandasi DOS ga kaytish uchun shu adres bilan foydalanadi.
3. Sistemada kuyidagi stek kiymati nolli adres (anikrogi, siljish) bulishi kerak. Shuning uchun SUB komandasi AX registrni tozalaydi. PUSH komandasi esa bu kiymatini stekga kiritadi.
4. DOS yuklovchi SS registrda tugri stek adresni va CS registrda kodlar segment adresini aniklab kuyadi. Ma’lumki yuklashtirish dasturi DS registrini boshka maksad uchun ishlatadi, DS registrini ikkita MOV komandalar bilan initsializatsiyalashtirish kerak. RET komandasi foydalanuvchi dasturidan chikish va DOS ga kaytishni ta’minlaydi. Shuning uchun RET komandasi PUSH DS komanda bilan dasturni boshigacha stekka yozilagan adresni ishlatadi. Boshka odatan foydalanayotgan chikish- INT 20H komandasidir. Umumiy kurinishda sizning xar bir EXE- dasturingiz shunday bulishi kerak (boshlanish) : CodeSeg Segment PARA ‘code’ Begin proc Far PDF created with pdfFactory Pro trial version www.pdffactory.com 23
ASSUME CS : code Seg, DS: Dataseg, SS: Stacks Push DS ; DS ni stekka yozish Sub AX, AX ; AX ga 0 kuyish Push AX ; nolni stekka yozish MOV AX, Dataseg ; adresni keltirish.
MOV DS, AX ; DS ga DataSeg
... ;
... ; Cizning kodlar
... ;
Ret ; Dos ga kaytish Begin Endp CodeSeg Ends End Begin Dasturlarni assemblerlashtirish.
Faraz kilaylikki, Sizda HELLO. ASM fayli bor va siz dasturni ishlatishni xoxlaysiz, lekin dasturni ishlatishdan oldin dasturni bajariladigan kurinishga uzgartirish kerak. Buning uchun ikkita kushimcha xarakatlar kerak: assembrlashtirish va komponovkalashtirish.
Assembrlashtirishda Sizning asos kilib olingan kodingiz (dastur matni) obyekt modulga (oralik formaga) aylanadi. Kompanovkalashtirishda esa bitta yoki bir necha modullar bajarilishi dasturga birlashtiriladi, assembrlashtirish va kompanovkalashtirishni komanda satri yordamida bajarish mumkin. HELLO. ASM faylni assemblerlashtirishni uchun
ni terib Enter ni bosing. Shundan keyin HELLO. ASM fayli HELLO. OBJ faylga assemblerlashtiriladi(aylanadi). (Faylni kengaytirishni ( razmerini) kiritish shart emas. Turbo assembler fayl ASM kengaytirishga egalikni nazarda tutadi)
Ekranda kuyidagi chikadi : turbo Assembler Version 3.0 Copyright © 1988, 1999(1) by Borland International dnc. Assembling fiele : HELLO. ASM (2) Error messages : None (3) Warning messages : None (4) Passes: 1 (5) Bamaining memory : 266k (6) (1) - turbo assembler, 3.0. versiyasi; Borland firmaning avtorlik xukuk; 1991 (2)- HELLO. ASM fayli assemblerlashtirilgan PDF created with pdfFactory Pro trial version www.pdffactory.com 24
(3)- xatolar tugrisida xabarlar yuk. (4)- ogxlantirilib berilgan xabarlar yuk. (5)- utish mikdori: 1 (6)- klogan xotira kataligi: 266 k.
Agar xatolar tugrisida xabarlar bulsa, ekranda ular satrlar nomerlari bilan chikadi. Xato tugrisida xabarlar chiksa, dasturni dastlabki kodini (matnni) tekshirish kerak. Xatolarni tugrilab, dasturni yana ssembleolashtiring. Turbo Assemblerni DOS dan ishga solish.
Dasturiy disklarda Turbo Assemblerni ikkita rivoyati (versiya) bor- TASM.EXE va TASMX.EXE . Juda katta modullarni assemblerlashtirish kerak bulsa, TASM ni ishlatish kerak. TASMX bilan ishlash uchun yana bir fayl kerak- DPMILOAD. EXE. U distributiv disklarda yetkazib beriladi. Agar sizning modullaringiz juda katta bulmasa TASMni tanlash kerak. Turbo Assemblerni shu versiyasi TASMX ga karaganda, tezrok ishlaydi. Turbo Assemblerni ikkala rivoyatlarida xam komanda satri juda kuchli va uzgarishlarga boy sintaksisga ega. Agar Turbo Assemblerni ishga solganda xech kanday argumentlarni bermasa, masalan:
TASM
Ekranga komanda satrini parametlari va sintaksisi chikariladi. Turbo Assembler Version 3.0 CopyRight © 1988, 1991 by Borland International, dnc . Usage: TASM{parametrlar} dastlabki-fayl {, obyekt- fayl} {, miting} {, per-sо‘lki} /a,/s Segmentlarni alifbo buyicha yoki dastlabki kod tarkibi buyicha tartibga solish. /C biri boshkasiga nisbatan yunalgan dalillarni mitingda aniklash. / dsym [q VAV] SUMq0 yoki SUMq VAL ni aniklaydi. /E, / r - emulyangan yoki realkalkib yurilgan nukta bilan kullanmalr. /H, / ? ushbu ma’lumot xabari chikadi. / iPATH kushilgan fayllar PATH bilan aniklangan yuldan axtariladi. / jCMD CMD boshlangich Assembler direktivasini aniklaydi ( masalan, jIDEAL) / Kh xesh jadvalni kuvvati. /L, /la listingni chikarish: l- odatdagi meting ; la - kengaytirilgan listing. /Ml,/mx,/mu identifikatorni xariflarini registrda ajratish: ml- xammasini , mx- global, mu- ajratilmaydi. /Mv idenfikator lar nomlarini maksimal uzunligini kuyish. /M dalillarni oldiga kuyish uchun yullarni bostirishga ruxsat beradi. /N listingda indenfikatorlar jadvallarni bosib kuyish. / 0, /ep serverli kodini ishlab chikarish, 32 razryadli kayd kilingan Phar lap kompanovshak uchun adreslar. PDF created with pdfFactory Pro trial version www.pdffactory.com
25
/ g kompanovkalashtirishga kerak emasli OBJ fayllar yozilishlarni bosib kuyish. / g ximoyalangan rejimda kod segmentini tekshirish. / f muvoffakiyatli assemblerlashtirishdan keyin javoblarni bosib kuyish. / wo/ w1,/ w2 - ogoxlantirish: w0- ogoxlantirish xabarlari yuk, w1 `rb w2- bor. /W- xxx,/ wqxxx - ogoxlantirishga takiklash yoki ruxsat / x listinga shartli assemblerlashtirish bloklarini kuyish. / z displega xato xabari bilan dastlabki matinni satrini chikarish. / zi, / zd,/ zn- indenfikatorlar tugrisida tuzatish uchun xabar: PDF created with pdfFactory Pro trial version www.pdffactory.com
26
AMALIY HISOBLASH QISM 1-topshiriq. MathCad
Professional dasturi
imkoniyatlaridan foydalanib matematik hisoblashlarni (funksiyani tekshirish, tenglamalar, tengsizliklarni yechish, simvolli hisoblashlar va boshq.) tez va aniq yechimlarini topishda yordam beradi. Bu dastur yordamida integrallashga va differensiyalashga oid funksiyalarni yechishni ko’rib chiqamiz: MathCad dasturi yordamida berilgan funksiyalar ustida simvolli hisoblashlarni bajaramiz. a) integrallashga oid funksiyalar:
3 3 sin ) ( + =
) 1 ( ) ( 2 5 + − = x tg e x f x
b) differensiallashga oid funksiyalar: x x x x x f + − + = 2 3 5 4 ) (
4 7 ) 5 2 cos( ) (
x x f + + − =
Integrallanuvchi x e x x x f 3 3 sin ) ( + = va ) 1 ( ) ( 2 5 + − = x tg e x f x funksiyalarni yechimini topish uchun
MathCad dasturini yuklaymiz va natijada MathCad Professional 2000 dasturining ishchi oynasi hosil bo’ladi:
Simvolli hisoblashlarni bajarish uchun uskunalar panelidan bo’limidagi dan kerakli instrumentlarni olamiz . Kerakli belgilashlarni bajarganimizdan so’ng quyidagicha darchalar hosil bo’ladi. PDF created with pdfFactory Pro trial version www.pdffactory.com
27
Topshiriqni bajarishimiz uchun ishchi maydonga integrallanuvchi funksiyani kiritamiz.
PDF created with pdfFactory Pro trial version www.pdffactory.com 28
Integrallanuvchi funksiya uchun boshlang’ich funksiyaini topish uchun ushbu darchadagi
ni
tanlaymiz va ishchi maydonda ushbu ko’rinishdagi formula hosil bo’ladi:
Y funksiyani X bo’yicha Integrallaymiz: va sichqonchaning chap tugmasini bosib Integrallanuvchi funksiyaning yechimini hosil qilamiz.
Yuqoridagi amallarni ketma-ketlikda tartib bilan bajargan holda topshiriqda berilgan ) 1
) ( 2 5 + − = x tg e x f x funksiya uchun ham quyidagi yechimni topamiz: PDF created with pdfFactory Pro trial version www.pdffactory.com 29
Differensiallashga oid x x x x x f + − + = 2 3 5 4 ) (
4 7 ) 5 2 cos( ) (
x x f + + − =
ushbu funksiyalarning differensiallarini topish uchun MathCad dasturiga birinchi funksiyani kiritamiz:
Differensiallanuvchi funksiyani yechimini topishimiz uchun
PDF created with pdfFactory Pro trial version www.pdffactory.com
30
Jadvaldan
ni tanlaymiz, ekranda ushbu
funksiya hosil bo’ladi. Y dan x bo’yicha differensiallaymiz,natijada ekranda quyidagi ko’rinish hosil bo’ladi:
yechimini hosil qilamiz:
Yuqoridagi amallarni ketma-ketlikda tartib bilan bajargan holda topshiriqda berilgan 4 7
5 2 cos( ) (
x x f + + − =
ushbu funksiyani yechimini topamiz: PDF created with pdfFactory Pro trial version www.pdffactory.com |
ma'muriyatiga murojaat qiling