Ma’ruza: Assemblerning ikkita o’tishli translyatori Reja


Umumiy vazifadagi buyruqlar


Download 98.36 Kb.
bet6/8
Sana10.02.2023
Hajmi98.36 Kb.
#1186799
1   2   3   4   5   6   7   8
Bog'liq
maruza 5 (1)

Umumiy vazifadagi buyruqlar
MOV buyrug‘i. Bu buyruq yordamida registr va xotra yacheykasi yoki ikkita registr o‘rtasida bayt yoki so‘zni uzatish mumkin. Bundan tashqari, yana to‘g‘ridan- to‘g‘ri qiymatni registr yoki xotira yacheykasiga jo‘natish mumkin. Buyruqning ko‘rinishi quyidagicha:
MOV qabul qiluvchi, uzatuvchi
Misollar:
MOV AX, TAB ; xotiradan registrga jo‘natish
MOV RESULT,AX ; registrdan xotiraga jhnatish
MOV ES: [BX], AX ; segment registrini almashtirish
MOV DS, AX ; 16 bitli registlar o‘rtasida jo‘natish
MOV BL, AL ; 8 bitli registrlar o‘rtasida jo‘natish
MOV CL, - 30 ; o‘zgarmas registrga jo‘natish
MOV DEST, 25 H ; o‘zgarmasni xotiraga jo‘natish.
Bu buyruq bilan quyidagi ishlarni bajarish mumkin emas:
1. Xotiraning bir yachekasida turgan berilganni to‘g‘ridan to‘g‘ri ikkinchi yacheykaga jo‘natish mumkin emas. Buning uchun uni avvl umumiy registrga jo‘natish, so‘ngra umumiy registrdan xotiraning kerakli joyiga jo‘natish mumkin:
YA’ni MOV AX, RES
MOV Y, AX
2. Xuddi birinchi banddagiga o‘xshab adreslanuvchi operandni segment registriga to‘g‘ridan-to‘g‘ri jo‘natish mumkin emas. Buning uchun 1-banddagiga o‘xshab ish tutish kerak.
YA’ni, MOV AX, DATA_SEG
MOV DS, AX
Odatda bu kabi buyruqlar ASSUME buyrug‘iga mos keladi va assemblerga berilganlar segmenti qaerda joylashganini ko‘rsatadi.

  1. qiymatni to‘g‘ridan-to‘g‘ri bir segment registridan ikkinchi segment registriga jo‘natish mumkin emas. Buning uchun umumiy registrdan foydalanish kerak. Masalan, DS registri xuddi ES registri ko‘rsatayotgan segmentni ko‘rsatish kerak bo‘lsa, quyidagicha ish tutiladi:

MOV AX, ES
MOV DS, AX

  1. Uzatish buyrug‘ida qabul qiluvchi sifatida CS registrini ishlatish mumkin emas.

PUSH va POP buyruqlari. Odatda bu buyruqlar programmaning ishlash jarayonida berilganlarni (registrlarda va xotira yachekasida joylashgan qiymatlarn) vaqtinchalik saqlash uchun xizmat qiladi. Masalan, faraz qilaylik, sizga ba’zi bir ishlarni bajarish paytida AX registrining qiymatini saqlab turish zarur bo‘lsin. Buning uchun quyidagi buyruqni ishlatamiz:

PUSH uzatuvchi : bizning misolimizda AX registri;


PUSH buyrug‘i yordamida registrning qiymati yoki 16 bitli so‘z ko‘rinishidagi xotira yacheykasining qiymati stek boshiga joylanadi.
POP buyrug‘i bo‘lsa, stek boshidan so‘z joyni egallovchi qiymatni olib, registr yoki xotira yachekasiga joylashadi, ya’ni POP qabul qiluvchi; bizning misolimizda AX registri.
Misollar: PUSH SI; umumiy registr yoki segment.
PUSH DS; registrni saqlash.
PUSH CS; CS ni saqlash.
PUSH DELTA; xotira yacheykasining qiymatini
PUSH TAB [BX] [DI] saqlash.

Shuni unitmaslik kerakki, programmada har bir ishlatilgan PUSH buyrug‘iga mos keluvchi POP buyrug‘i bo‘lishi kerak.


Masalan: PUSH AX ; AX ni stek boshiga yozish.


.......... ; AX ni o‘zgartiruvchi boshqa.
........... ; buyruqlar ketma-ketligi
POP AX ; stek boshidan AX ga o‘qish.
Stek boshi deb, stek ko‘rsatgichi SP da adresi saqlanayotgan stek segmentidagi yacheyka tushuniladi. Stek xotiraning kichik adreslari (0 yacheykasi) ga qarab o‘sib boradi, shuning uchun stekka birinchi joylashtirilayotgan so‘z stekning eng katta adresli yacheykasida saqlanadi (yoziladi), keyingisi undan ikki bayt kichigiga va x.k. yoziladi.

Download 98.36 Kb.

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




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