.dseg
; ma'lumotlar segmenti (RAM
; $ 0065 da
ma'lumotlari) .org $0065 ;ccnntt11: u.bcahyutn11 bayt zahira
.cseg gramm)
;...
; dastur segmenti (xotira
LDS R10, cnt1; cnt1 ni R10 ga yuklash
Ma'lumotlarning operativ xotirasini bilvosita adreslashda operand - bu tezkor xotira yacheykasi tarkibi bo'lib, uning manzili
registr X, Y yoki Z (22-rasm). Bilvosita adreslashda qo'llaniladi
RAMdan bilvosita yuklash uchun LD (Load Indirect) ko'rsatmasi va ST yo'riqnomasi
(Store Indirect) RAMga bilvosita yuklash.
Jamoa
0
15 COP Rr/Rd
7 Ram
0
0000 dollar
o'n besh
0
Manzil
Operand manzili
X, Y yoki Z ro'yxatdan o'ting
$FFFF
Guruch. 22. Ma'lumotlar operativ xotirasining bilvosita adreslanishi
Bilvosita manzildan foydalanishga misol:
; bilvosita manzillash
.dseg crinkle
; ma'lumotlar segmenti (operatsion pa
ma'lumotlari) cnt1: .bayt ;1 cnt1 uchun 1 bayt zahira
.cseg
;...
; dastur segmenti (dastur xotirasi)
LDI R30, past (cnt1); R30 ga manzilning past baytini yuklang cnt1
LDI R31, yuqori (cnt1); cnt1 manzilining R31 yuqori baytiga yuklang;
LD R1, Z cnt1 ni R1 ga yuklang, ya'ni R1 <- (R31:R30)
Yuqoridagi misolda mos ravishda ifodaning past va yuqori baytlarini qaytaruvchi past va yuqori funksiyalardan foydalanilgan (bu holda cnt1 ramziy nomli xotira kataklarining manzillari). 3. RAM ma'lumotlariga bilvosita murojaat qilganda
ofset, ma'lumotlarning RAMdagi operand manzili Y yoki Z registrlari tarkibiga yo'riqnomada ko'rsatilgan ofsetni qo'shish orqali hisoblanadi. Ofset oltita so'z bitidan iborat
buyruqlar (23-rasm). Ofset bilvosita adreslash qo'llaniladi
bilvosita yuklashning LDD (Load Indirect with Displacement) buyrug'ida ofset operativ xotirasidan va STD (Store Indirect with Displacement) yo'riqnomasida bilvosita ofset RAMga yuklash.
Jamoa Ram
7 0
15 10 65 0
KOP n a
0000 dollar
o'n besh
+
0
Manzil
Operand manzili + a
$FFFF
Y yoki Z ni ro'yxatdan o'tkazing
Guruch. 23. Operativ xotira ma'lumotlarini ofset bilan bilvosita adreslash
Ofset bilan bilvosita manzildan foydalanishga misol:
; ofset bilan bilvosita adreslash
uchun 5 baytni zaxi;ramlan'lugmotlar segmenti (ma'lumotlar RAM) .dseg ; arr massivi arr: .bayt
5 .cseg LDI ; dastur segmenti (dastur xotirasi)
R30, past(arr) ; manzilning past baytini R30 arr LDI R31 ga yuklash, high(arr) ; R31 yuqori bayt manzil arr ga yuklang ;...
LDD R10, Z + 0; arr massivning birinchi elementini R10 LDD ga yuklash R11, Z + 1 ; R11 da arr massivning ikkinchi elementini yuklash
Bilvosita ma'lumotlar RAMga murojaat qilganda predekrement (lot. decrementum - pasayish, pasayish) buyruqni bajarishdan oldin buyruqda ko'rsatilgan X, Y registrining mazmuni.
yoki Z kamayadi (bittaga kamayadi); X, Y yoki Z registrining kamaytirilgan tarkibi operandning manzili
RAM ma'lumotlari (24-rasm). Oldindan pasaytirish bilvosita adreslash bilvosita RAM yuki LD yo'riqnomasida qo'llaniladi.
va bilvosita RAM yuk ko'rsatma ST .
; oldindan belgilab qo'yilgan bilvosita murojaat
LD R10, -Z ; Z <- Z – 1, R10 <- (Z)
o'n besh
o'n besh
Jamoa
0
KOP n
0
Ram
7
0
0000 dollar
Manzil Operand
X yoki Z ni ro'yxatdan o'tkazing
ÿ1+
1 Manzil
$FFFF
Guruch. 24. RAM ma'lumotlarini oldindan pasaytirish bilan bilvosita adreslash
Ma'lumotlar operativ xotirasini post -increment (lot. incrementum - o'sish, o'sish) manzili bilan bilvosita adreslashda.
ma'lumotlarning tezkor xotirasidagi operand - bu ko'rsatmada ko'rsatilgan X, Y yoki Z registrlarining mazmuni ; buyruqni bajargandan so'ng
X, Y yoki Z registrining mazmuni ko'paytiriladi, ya'ni bittaga oshiriladi (25-rasm). Post- increment bilan bilvosita manzillash
bilvosita RAM yuklash LD yo'riqnomasida va ST yo'riqnomasida ishlatiladi RAMga bilvosita yuklash. Masalan:
; ortishdan keyingi bilvosita manzillash
LD R10, Z+
; R10<-(Z),Z<-Z+1
o'n besh
Jamoa
KOP n
7 Ram
0
0
0000 dollar
o'n besh
0
Manzil
Operand
Manzil
bitta
X yoki Z ni ro'yxatdan o'tkazing
+
$FFFF
Guruch. 25. Post-increment bilan bilvosita ma'lumotlar RAM manzillash
Dastur xotirasiga bevosita murojaat qilinadi
vena manzillash, bilvosita adreslash, nisbiy adreslash, doimiy adreslash va ortishdan keyingi doimiy adreslash.
Dastur xotirasiga bevosita murojaat qilganda , bajaring
Dastur buyruqda ko'rsatilgan manzildan davom etadi (26-rasm; FLASHEND - oxirgi katak manzilining ramziy nomi.
dastur xotirasi). Dastur xotirasi to'g'ridan-to'g'ri adreslash
JMP va CALL ko'rsatmalarida qo'llaniladi .
31
o'n besh
Jamoa
16
KOP manzili Manzil
0
o'n besh
Dastur xotirasi
8 7
0
0000 dollar
Manzil
FLASHEND
Guruch. 26. Dastur xotirasining bevosita adreslanishi
Dastur xotirasining bilvosita adreslanishi bilan dastur bajarilishi Z registridagi manzildan davom etadi, ya'ni . Z registrining mazmuni dastur hisoblagichiga yuklanadi (27-rasm). Dastur xotirasini bilvosita manzillash IJMP va ICALL buyruqlarida qo'llaniladi.
o'n besh
Jamoa
0
KOP
o'n besh
Dastur xotirasi
8 7
0
0000 dollar
Ro'yxatdan o'tish Z
FLASHEND
Guruch. 27. Dastur xotirasini bilvosita manzillash
Nisbatan dastur xotirasini adreslash, bajarish bilan
dastur manzildan (PC + k + 1) davom etadi, bu erda shaxsiy kompyuter tarkibdir dastur hisoblagichi; k -2048 dan 2047 gacha qiymatlarni qabul qilishi mumkin bo'lgan buyruqda ko'rsatilgan nisbiy manzil (28-rasm). Ko'rsatmalarda nisbiy dastur xotirasini adreslash qo'llaniladi
RJMP va RCALL.
Jamoa
0
15 COP k
o'n besh
Dastur xotirasi
8 7
0
0000 dollar
Dastur hisoblagich (RS)
FLASHEND
Guruch. 28. Dastur xotirasining nisbiy adreslanishi: k
- nisbiy adres
Konstantaga murojaat qilishda doimiyning bayt manzili o'z ichiga oladi registr Z (29-rasm): yuqori 15 bitni dastur xotirasi yacheykasi manzili egallaydi (0 dan 32 K gacha); Eng kam ahamiyatli bit (LSB) holati eng kam ahamiyatli (LSB = 0) yoki eng muhim (LSB = 1) baytni tanlashni aniqlaydi.
maqsadli xotira hujayrasi. Dastur xotirasidagi konstantani adreslash
LPM (Dastur xotirasini yuklash) buyruqlarida qo'llaniladi , bu Z registr tomonidan manzillangan baytni buyruqda ko'rsatilgan registrga yuklaydi. Agar maqsad registr ko'rsatilmagan bo'lsa (buyruqsiz ishlatiladi
operandlar), bayt R0 registriga yuklanadi . ELPM (Extended Load Program Memory) buyrug'i doimiyni xotiradan yuklash uchun ishlatiladi
64 K so'zdan ortiq hajmdagi dasturlar. Bu Z ko'rsatkich registrini kengaytirish
uchun Z registri bilan bog'liq RAMPZ registridan foydalanadi .
Jamoa
Dastur xotirasi
0000 dollar
Manzil
FLASHEND
Guruch. 29. Dastur xotirasida doimiyni adreslash
.db (de fine bytes) direktivasi dastur xotirasiga ma'lumotlarni o'rnatish imkonini beradi . Berilgan xotira kataklari bo'lishi uchun
murojaat qilish uchun direktiva oldidan yorliq bo'lishi kerak. Direktiv parametrlar
vergul bilan ajratilgan ifodalar ketma-ketligidir; har bir ifoda -128...255 yoki oralig'idagi raqam bo'lishi kerak
hisoblash natijasida bir xil diapazonda natija beradi, aks holda raqam baytga qisqartiriladi. .db direktivasi dastur segmentida joylashgan va .org direktivasi bilan birgalikda ishlatilishi mumkin . Ma'lumotlarning dastur xotirasidagi o'rni shunday o'rnatilishi kerakki, ularni mikrokontroller buyruqlari sifatida bajarishga tasodifiy o'tish imkoniyati istisno qilinadi. Xotira proda doimiy adreslashdan foydalanishga misol
gramm:
LDI R31, yuqori(var<<1) ; registrning yuqori bayti Z LDI R30, past(var<<1) ; registrning past bayti Z; $50 raqamini R16 LPM
R16, Z ga yuklash;...
.org $0025
var: .db $50, 137
; $ 0025 da; doimiylar
$50 va 137
Machine Translated by Google
Yuqoridagi misolda << operatori ishlatilgan, men bajaraman operandni belgilangan bitlar soni bo'yicha chapga siljitish.
Dastur xotirasidagi konstantaga postinkrement bilan murojaat qilganda , konstantaning bayt manzili Z registrida bo'ladi va konstantani adreslashdagi kabi shakllanadi (29-rasm). Manzil qilingan
registr Z baytlari belgilangan registrga yuklanadi; ko'rsatma bajarilgandan so'ng
Do'stlaringiz bilan baham: |