Amaliy ish № Mashina kodlarida kompyuterning ishlash tamoyillarini o'rganish


Download 102.53 Kb.
bet8/9
Sana31.01.2024
Hajmi102.53 Kb.
#1817456
1   2   3   4   5   6   7   8   9
Bog'liq
2-Amaliy ish

    Bu sahifa navigatsiya:
  • OXIRI
OXIRI;
UCHUNi:=0 TO Nid DO {nazorat qilish uchun, yorliqni ko'rsatish}
YOZISH(tab[i].sym:4, tab[i].num:4);
UCHUNi:=0 TO 7 DO {2-o'tish - ekranda kodni "generatsiya qilish"}
BOSHLANISHIk:=1; c:=kodni olish(i,k); {operatsiya kodi} CASE c OF {tanlash buyruqlari yoki DN} 0..7: BEGIN WRITE(c); {WHILEk<=LENGTH(prg[i]) QILISH {3 ta manzil}
YOZING(' ', get_code(i,k))

OXIRI


OXIRI;
8:{DN}BEGIN {10-raqamni belgilang va uni 8 s/s tezlikda torting}
VAL(COPY(prg[i],k,255),k,e); WRITE(' '); e:=512; REPEAT WRITE (k DIV e);
k:=k MOD e; e:=e DIV 8;
QAYTAe=0

END END;


YOZISH{buyruqning oxiri}
OXIRI;

Dastur ishlaydi Keyingisi yo'l. Yadro uni ma'lumotlar xizmat qiladi stol



identifikatorlar, ular sim maydonida ularning nomlarini va bu nomlar o'rniga dasturda almashtirilishi kerak bo'lgan kodlarni o'z ichiga oladi (son maydoni). Misol uchun, QO'SHISH operatsiyasi 1-kodga ega (4-jadvalga qarang), shuning uchun tab[1].sym='Qo'shish' va tab[1].num=1. Assemblerning asosiy g'oyasi jadval yordamida har bir ramziy nomni tegishli raqamli kod bilan almashtirish ekanligi ayon bo'ladi.
"Crumbs" buyruqlarining mnemonikasini 0 dan 7 gacha raqamlar bilan jadval qatorlariga kiritgandan so'ng, biz doimiy DNni va foydalanuvchi matnga kiritgan dasturda topilgan barcha teglarni aniqlash uchun operatorni qo'shamiz. Foydalanuvchi teglari ulardan keyin ikki nuqta mavjudligi bilan tan olinadi; qayta ishlangan belgilar kelajakda assemblerga xalaqit bermasligi uchun dastur ularni shunchaki o'chiradi. Adabiyotda yorliqlarni qayta ishlash birinchi o'tish deb ataladi, chunki siz avval butun dasturni "o'tishingiz" va identifikatorlarning to'liq jadvalini tayyorlashingiz kerak va shundan keyingina matnni qayta ko'rib chiqing (ikkinchi o'tish), barchasini almashtirish uchun jadvaldan foydalaning. ularning kodlari bilan identifikatorlar.
Ikkinchi o'tishni amalga oshirayotganda, bizning assemblerimiz dastur matnidan keyingi identifikatorni chiqaradigan "kuchli" get_code funktsiyasiga tayanadi. Murakkab ko'rinishiga qaramay, funktsiya g'oyasi juda oddiy: berilgan satrda ma'lum bir pozitsiyadan boshlab, u bo'shliqlarni o'tkazib yuboradi va aksincha, bo'sh joydan tashqari barcha belgilarni "yig'adi" va shu bilan hosil qiladi. keyingi identifikatorning nomi. Nom ajratib ko'rsatilganda, u jadvalda qidiriladi va natija sifatida uning kodi qaytariladi (yoki ism jadvalda bo'lmasa 255).
Eslatma. Ayniqsa, funktsiya algoritmi ushbu qatordagi keyingi identifikatorni ajratish uchun k o'zgaruvchining qiymatini yangi chaqiruv uchun avtomatik ravishda tayyorlashga mo'ljallanganligini alohida ta'kidlaymiz.
Ta'riflangan funktsiyadan foydalanib, assembler dasturning joriy qatorining birinchi identifikatorini chiqaradi va uning kodini aniqlaydi. Agar u 0 dan 7 gacha bo'lgan oraliqda bo'lsa, bu mashina buyrug'i va jadval yordamida unda quyidagi 3 ta o'zgaruvchi teg (3 ta manzil) kodlangan. Agar kod 8 ekanligi aniqlansa, bu raqamning ta'rifi. Ikkinchisi satrdan chiqariladi va sakkizlik sanoq tizimiga o'tkaziladi. Boshqa barcha holatlar xatodir va ularni assemblerimiz e'tiborsiz qoldiradi.
E'tibor bering, dasturning oxirgi sakkizlik kodi oddiygina displey ekranida ko'rsatiladi va hech qanday joyda saqlanmaydi.
Demo assemblerni sinab ko'rish uchun an'anaviy vazifa amalga oshiriladi - hisoblash

n omili. Faktorial uchun joriy ko'paytuvchi bo'lgan va 1 dan n gacha o'zgarib turadigan ishchi o'zgaruvchini k bilan belgilaymiz. Keyin yakuniy dastur jadvalda ko'rsatilgan shaklni oladi. 5.
5-jadval


Download 102.53 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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