AVR-CLASSIC MK-də əmrlərin strukturu və verilənlərin ünvanlaşdırılması
AVR-Classic tipli MK-lərdə hər bir əmr proqram yaddaşının bir oyuğunda (16 bit) yerləşir. 16 bitli RAM ünvanın birbaşa verildiyi əmrlər istisna olaraq əsas əmrlər 2 proqram oyuğunu tələb edir.Verilənlər yaddaşının müxtəlif sahələrinə müraciət üçün əmrdə operandların bilavasitə,birbaşa və dolayı ünvanlaşdırılması üsullarından istifadə edilir. Proqramdan GPR, giriş/çıxış və digər SPR registrlərinə müraciət onların verilənlər yaddaşındakı ünvanları üzrə gerçəkləşdirilir.AVR Assembler proqramlarındakı INCLUDE uzantılı fayllar vasitəsilə tanıdılmış bütün registrlərə və SPR registrlərinin bitlərinə proqramdan onların identifikatorları ilə müraciət etmək olar. Bunun üçün proqramın əvvəlində INCLUDE “DEF.INC” sətri verilməlidir.Proqramın qurulmasını sadələşdirmək üçün bəzi yaddaş oyuqları məxsusi identifikatorlarla translyatora daxil edilmişdir.Məsələn,
RAMEND- daxili RAM –nin axırıncı oyuğunun ünvanı;
XRAMEND- xarici RAM –nin axırıncı oyuğunun ünvanı;
FLASHEND – proqram yaddaşının axırıncı oyuğunun ünvanı.
AVR-Classic MK-lərinin əmrlər sisteminə daxil olan əmrlərin funksional olaraq qruplara bölünməsi,hər bir qrup üzrə əmrlərin strukturu,icra müddəti, operandların tipləri və misallar şək.6.15 .-də göstərilmişdir. Hesabi əməliyyatlar əsasən 8 bitli operandlar üzərində yerinə yetirilir.16 bitli əməliyyatlar üçün operand kimi GPR cütündən istifadə edilir.Hesabi əməliyyatlarda mənfi ədədlər tamamlayıcı kodda iştirak edir.Bitlər üzərindəki əməliyyatlar qrupuna SREG registrinin ayrı-ayrı bitlərini emal edən xüsusi əmrlər də daxil edilmişdir.Emal edilən bit və əməliyyatın tipi bu əmrlərin COP hissəsində kodlaşdırılmış olur.Verilənlər yaddaşının GPR, giriş/çıxış registrləri və SPR kimi hissələrə bölünməsinə uyğun olaraq 2 ədəd GPR,GPR və giriş/çıxış registri, GPR və RAM oyuğu arasında baytların ötürülməsi yerdəyişmə (MOV),yükləmə (LD),yadda saxlama(ST) əməliyyatları ilə gerçəkləşdirilir.Bu qrupdan olan əmrlər 1-3 ədəd ƏD(Əmr dövrü)-də icra edilir.
AVR-Classic MK-də proqram üzrə yerinə yetirilən növbəti əmrinin ünvanı PC(Proqram sayğacı) registrində saxlanılır. PC-nin məzmunu proqramın xətti hissəsində hər bir ƏD–də avtomatik olaraq inkrement edilir,budaqlanma hissəsində isə ona keçid ünvanı yüklənilir. AVR-Classic MK-də proqramın gedişini idarə edən (proqramın idarəsi) əməliyyatlar qrupuna şərti/şərtsiz keçid (JUMP/BRANCH),alt proqramların çağırışı (CALL) və onlardan qayıdış(RETURN),yoxlama-keçid(TEST-SKIP) əmrləri daxildir.Bu əmrlərın strukturu və icra edilmə xüsusiyyəti şək.6.16-da əks etdirilmişdir.MK-nin bütövlükdə işinin idarə edilməsi (sistemli idarə) üçün NOP ,WDT taymerinin reset edilməsi(WDR) və MK-nin az enerji sərf edən rejimə keçid (SLEEP) əmrlərindən istifadə edilir.
AVR-Classic MK-də verilənlərin ünvanlaşdırılmasının əsasən,birbaşa(direct) və dolayı(indirect) üsulları tətbiq olunur(şək.6.17 ). GPR, I/O registri və RAM üçün birbaşa ünvan əmrin bir,yaxud hər iki operandı kimi verilə bilər. 2 ünvanlı struktur halında 16 bitli RAM ünvanının birbaşa göstərildiyi əmrlər proqram yaddaşının iki ədəd ardıcıl oyuqlarında yerləşir.RAM oyuğunun dolayı ünvanlaşdırılması üçün 16 bitli X/Y/Z indeks registrləri əmrin kodunda operandlardan biri kimi göstərilir(şək.6.18).Sadə(simple) dolayı ünvanlaşdırma halında əmrdə göstərilən indeks registrinin məzmunu RAM oyuğunun ünvanını (0000H-FFFFH) təyin edir. RAM –nin nisbi(relative) dolayı ünvanı Y/Z registrinin məzmunu və əmrdəki K offset kodunun cəmi kimi tapılır.Öncədən dekrement edilməklə dolayı ünvanlaşdırma zamanı X/Y/Z indeks registrlərindən “1” çıxılır və nəticəvi kod RAM ünvanı hesab olunur. Sonradan inkrement edilməklə dolayı halında isə əmrdə verilən indeks registrinin məzmunu üzrə RAM-ə müraciət edildikdən sonra bu registr inkrement edilir.
AVR-Classic MK-nin əmrlər sisteminə daxil olan 118 ədəd əmrlər funksional qruplar üzrə cədvəl 6.5-də verilmişdir.AT90S1200 MK –də isə bunlardan yalnız 89 əmr dəstəklənir.
Stekin təşkli AVR-Classic MK-lər ailəsinin yüksək modellərində proqramla ,ən aşağı modeli olan AT 901200 -də isə aparatla yerinə yetirilmişdir. AT 901200 MK-də Stekin dərinliyi 3,hər bir oyuğun eni isə PC-nin eninə(9 bit) = götürülmüşdür.LIFO strukturlu stek yaddaşın məxsusi sahəsində yerləşdirilmişdir.Alt proqramlar(kəsilməyə xidmət proqramı) çağırılarkən proqramdakı RCALL(ICALL) əmrindən sonrakı əmrin ünvanı stekdə yadda saxlanılır. Alt və kəsilmə proqramlarından qayıdış zamanı stekdəki ünvan PC-ə yüklənir(şək.6.19). AT 901200 MK-də PUSH ,POP əmrləri olmadığından stekə və onun göstəricisinə proqramdan birbaşa müraciət etmək mümkün deyildir. Bir-birini kəsmiş(çoxsəviyyəli kəsilmə) vəziyyətdə olan 3 ədəd proqram üçün PC-nin məzmunu eyni zamanda stekdə saxlanıla bilir və bu halda verilənlərin stekdə yerdəyişməsi aparatla yerinə yetirilir.
AVR-Classic ailəsinin yüksək modellərində proqramla gerçəkləşdirilmiş stek verilənlər yaddaşı sahəsində yerləşir və onun dərinliyi boş sahənin həcmindən asılı olur.Verilənlər yaddaşının həcmindən asılı olaraq stek göstəricisi kimi SPL identifikatorlu bir ədəd giriş/çıxış registri,yaxud SPH:SPL registr cütü istifadə edilir. SP-lərə giriş/çıxış registrləri kimi proqramdan birbaşa müraciət mümkündür və əmrlər sistemində PUSH,POP əmrləri nəzərdə tutulmuşdur.MK-ə qida gərginliyi verildiyi anda SP=0 olduğundan proqramın başlanğıcında verilənlər yaddaşının yüksək ünvanı ona yüklənməlidir. RCALL/ ICALL əmrlərindən sonrakı əmr ünvanı stekə yüklənərkən SP-nin qiyməti 2 vahid azalır,çünki PC 16 bitlidir və onun məzmunu 2 qonşu baytda saxlanılır.Uyğun olaraq RET/IRET əmri yerinə yetirilərkən SP-nin məzmunu 2 vahid artır.