Birinchi o'tish
Birinchi o'tishning asosiy maqsadi direktiv yordamida ma'lum bir yorliq yoki qiymat tayinlangan barcha ramziy nomlarning qiymatlarini o'z ichiga olgan ramziy nomlar jadvalini yaratishdir: BUFSIZE EQU 8192
Ko'rsatma yorlig'i maydonida ramziy nomga qiymat berishda assembler dasturni bajarish jarayonida ushbu ko'rsatma qanday manzilga ega bo'lishini bilishi kerak. Buning uchun assembler montaj vaqtida Instruction Location Counter (ILC) deb nomlangan maxsus o‘zgaruvchini saqlaydi. Birinchi o'tishning boshida bu o'zgaruvchi 0 ga o'rnatiladi va har bir qayta ishlangan buyruqdan keyin ushbu buyruq uzunligi bo'yicha oshiriladi. 1.6 ro'yxati x86 uchun misolni ko'rsatadi.
Ro'yxat 1.4. Buyruqlar manzili hisoblagichi buyruq manzillarini kuzatib borish imkonini beradi
MARIA: MOV EAX, I ; EAX = I 5 100
MOV EBX, J ; EBX = J 6 105
ROBERTA: MOV ECX, K ; ECX = K 6 111
IMUL EAX, EAX ; EAX = I * I 2 117
IMUL EBX, EBX ; EBX = J * J 3 119
IMUL ECX, ECX ; ECX = K * K 3 122
MARILYN: ADD EAX, EBX ; EAX = I * I + J * J 2 125
ADD EAX, ECX ; EAX = I * I + J * J + K * K 2 127
STEPHANY: JMP DONE ; переход к DONE 5 129
Birinchi o'tishda ko'pchilik assemblerlar kamida uchta jadvaldan foydalanadilar: ramziy nomlar jadvali, direktivlar jadvali va opcode jadvali. Agar kerak bo'lsa, literal jadval ham qo'llaniladi. Ramziy nomlar jadvali jadvalda ko'rsatilganidek, har bir nom uchun bitta yozuvni o'z ichiga oladi. 1.3. Ramziy nomlar yorliqlar yoki aniq belgilangan (masalan, EQU direktivasi yordamida). Ramziy nomlar jadvalining har bir elementida nomning oʻzi (yoki unga koʻrsatgich), uning son qiymati va baʼzan qoʻshimcha maʼlumotlar mavjud.
U quyidagilarni o'z ichiga olishi mumkin:
ramziy nom bilan bog'liq bo'lgan ma'lumotlar maydonining uzunligi;
xotirani qayta taqsimlash bitlari (agar dastur assembler uni yuklamoqchi bo'lgan boshqa manzilda yuklangan bo'lsa, belgining qiymati o'zgarishi yoki o'zgarishini ko'rsatadi);
ramziy nomga protseduradan tashqaridan kirish mumkinligi haqidagi ma'lumot.
Amaliyot kodlari jadvali assembler operatsiyasining har bir ramziy kodi uchun kamida bitta yozuvni taqdim etadi (1.3-jadval). Har bir yozuv ramziy operatsiya kodini, ikkita operandni, operatsiya kodining raqamli qiymatini, buyruq uzunligini va qaysi guruhga tegishli ekanligini aniqlashingiz mumkin bo'lgan tur raqamini o'z ichiga oladi (opkodlar soni va turiga qarab guruhlarga bo'linadi. operandlar).
Do'stlaringiz bilan baham: |