4.2. Assembler tilida operatorlarning formatlari va
ularni qo‘llash
Assembler tilida operator - unga mos mashina buyrug‘ining tuzilishini o‘zida ifodalaydi. Ammo turli xil kompyuterlar uchun ishlab chiqilgan assembler tillari, ko‘p jixatlari bilan o‘zaro o‘xshash bo‘lganliklari sababli, assembler tili haqida umumlashtirib ham gapirish mumkin. 4.5, 4.6 va 4.7- keltirilgan misollarda, Pentium 4, Motorola 680x0 va UltraSPARC protsessorlari asosida qurilgan kompyuterlar uchun assembler tilida yozilgan dasturlarning bo‘laklari keltirilgan. Barcha dasturlar N = I + J formulani hisoblashni amalga oshiradi. Barcha misollarda bo‘sh qatorgacha bo‘lgan operatorlar hisoblashlarni bajaradilar, bo‘sh qatordan pastda joylashgan operatorlar esa I, J va N o‘zgaruvchilar yozish uchun mo‘ljallangan xotirani ajratib qo‘yishni amalga oshiradilar.
4.5-rasm. Pentium 4 assemblerida N = I + J ifodani hisoblash.
4.6-rasm. Motorola 680x0 assemblerida N = I + J ifodani hisoblash.
4.7-rasm. UltraSPARC assemblerida N = I + J ifodani hisoblash.
Assembler operatorlari to‘rtta qismdan iborat yozuvlar qatori ko‘rinishida bo‘ladi: metkalar, amallar, operandalar va izohlar. Metkalar asosiy xotira adreslarini simvollarda ifodalangan nomlari sifatida ishlatiladi. Ular yordamida buyruqlar va ma’lumotlarga o‘tish amalga oshirladi, ya’ni asosiy xotiraning buyruqlar va ma’lumotlar saqlandigan joyiga (adresiga) murojaat qilish mumkin bo‘ladi. Agar operatorga ham metka qo‘yiladigan bo‘lsa, u qatorning boshlanishida yoziladi. Keltirilgan misollarning mohiyatini, ulardan birinchisi asosida ko‘rib chiqamiz. Ushbu va keyingi misollarda ham, birinchi qatorda yozilgan FORMULA, I, J va N lar – metkalar hisoblanadi. Keyingi qatorda buyruqlar - MOV, ADD va direktivalar – DD joylashgan. Uchinchi qatorda protsessorning ichki registrlari va o‘zgaruvchilarning nomlari, to‘rtinchi qatorda esa izohlar keltirilgan. Ko‘rilayotgan birinchi misolda Pentium 4 protsessorining asosiy ichki registri hisoblangan EAX registridan foydalanilgan (3.13-rasmga qaralsin). Bunda avval I o‘zgaruvchini EAX registriga yozib olish buyrug‘i – MOV EAX, I , keyin esa EAX registri qiymatiga J o‘zgaruvchini qo‘shish buyrug‘i - ADD EAX, J va EAX registrida hosil bo‘lgan natija N ning qiymatini xotiraga qaytib yozish buyruqlari - MOV N, EAX lar keltirilgan. Oxirigi uchta qatorda I, J va N lar uchun asosiy xotiradan 32-razryadli so‘z uzunligidagi joylar ajratish direktivalari keltirilgan. Direktiva deganda – assemblerning o‘zi uchun mo‘ljallangan buyruqlar tushuniladi. Quyidagi 4.1-jadvalda Pentium 4 protsessori assembleri deriktivalarining ba’zilari keltirilgan.
4.1-jadval. Pentium 4 protsessori assembleri deriktivalari.
Motorola 680x0 va UltraSPARC protsessorlari uchun yozilgan dasturlar Pentium 4 protsessori uchun yozilgan dasturdan, ulardagi belgilar va nomlarning bir oz farq qilishi bilan ajralib turadilar. Masalan Motorola 680x0 protsessorlarida ichki registlar D0, D1, D2 deb, UltraSPARC protsessorlarida esa %R1, %R2 deb belgilangan. Ko‘chirib yozish buyruqlari esa – MOVE, LD, ST qisqartmalar kabi belgilangan.
Do'stlaringiz bilan baham: |