Makroslar. Dasturlarda ba’zi buyruqlar ketma-ketligi, bir-necha marta qaytarilish hollari ko‘p uchraydi. Assembler tilida bunday ketma-ketliklarni biron-bir nom bilan belgilab, ularni keyingi qaytarilish joylarida, o‘sha nom bilan yana ishlatish mumkin bo‘ladi. Ana shunday nomlangan buyruqlar ketma-ketligi - makros deb ataladi. Quyida Pentium 4 protsessori uchun yozilgan assembler dasturi keltirilgan. Unda P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, ikki marotaba almashtirish talab etiladi. Bunda buyruqlarning asosiy ketma-ketligi quyidagicha bo‘ladi:
P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, makrossiz ikki marotaba almashtirish quyidagicha amalga oshiriladi:
Ushbu ketma-ketlikni SWAP nomli makros deb belgilasak, P va Q o‘zgaruvchilar qiymatlari joylarini o‘zaro, ikki marotaba almashtirish dasturini quyidagicha yozish mumkin:
Makroslar – makrosning nomi, makros tarkibiga kirgan buyruqlar va makrosning tugash joyini bildiruvchi ENDM, direktivasidan iborat bo‘ladi. Quyidagi misollarda makroslarda ishtirok etadigan o‘zgaruvchilar har-xil bo‘lganda, qanday yo‘l tutilishi ko‘rsatilgan. Bunday makroslar parametrlarga ega makroslar deb ataladi.
Assembler tilida yozilgan dasturlarni mashina kodlariga o‘tkazish – translyasiya qilish ikki o‘tishda (rus tilida – проход) amalga oshiriladi. Birinchi o‘tishda dasturda ishtirok etadigan barcha simvollar ketma-ketliklariga – metkalar va o‘zgaruvchilarning nomlariga mos keladigan simvollar jadvali tuzib olinadi. Simvollar jadvalini tuzish jarayonida, dastur bajarilayotgan paytda metkalarga to‘g‘ri keladigan asosiy xotira adreslarini aniqlab olish amalga oshiriladi. Dastur bajarilayotgan paytda bu adreslar buyruqlar adresi sanagichiga - ILCga (Instruction Location Counter, rus tilida – счетчик адресов команд) yozib boriladi. Quyida keltirilgan misolda, izohlar yoziladigan qismining oxirigi qatorida aynan buyruqlar adresi sanagichining qiymatlari ko‘rsatilgan. Ushbu qatordan chapda joylashgan raqamlar qatori esa, har bir buyruq asosiy xotiraning nechtadan baytini egallayotganligi ko‘rsatilan.
Keltirilgan dastur uchun hosil qilingan simvolli nomlar jadvali.
Ikkinchi o‘tishda esa ob’ektli dasturni (rus tilida – объектная программа) hosil qilish va assembler protokolini bosmaga chiqarish amalga oshiriladi.
Ko‘pgina dasturlar bittadan ortiq muolajalardan (rus tilida – процедуры) iborat bo‘ladi. Alohida-alohida translyasiya qilingan dasturlarni birlashtirib, bitta butun bajariladigan ikkilik kodga aylantirish vazifasini joylashtiruvchi dastur (rus tilida – компоновщик) amalga oshiradi (4.8-rasm).
4.8-rasm. Dasturni translyasiya qilish va joylashtirish.
Do'stlaringiz bilan baham: |