ثباتهای AVR - میکروکنترلرهای 8 بیتی AVR 32 ثبات 8 بیتی همه منظوره دارند یعنی r0 تا r31 .
- سه ثبات آدرس شانزده بیتی با نام مستعار X و Y و Z که هر کدام از این سه ثبات دو ثبات از همان 32 ثبات 8 بیتی هستند یعنی X(r27:r26), Y(r29:r28), Z(r31:r30) .
- یک ثبات 16 بیتی به منظور اشاره گر پشته که در آدرسهای ورودی/خروجی:
0x3e(SPH) و 0x3d(SPL) قرارگرفته اند.همچنین این آدرسها در حافظه داده با آدرسهای 0x5e و 0x5d هستند - یک ثبات 8بیتی به منظور سنجش وضعیت یا همان ثبات پرچم با نام SREG .
- I : فعال ساز و غیرفعال ساز عمومی وقفه SREG7 یا Global Interrupt Enable/Disable Flag
- T: بیت انتقالی مورد استفاده دستورالعملهای BLD وBST با نام SREG6
- H: Half Carry Flag, SREG5
- S : بیت علامت یا Signed tests Instruction Set, SREG4
- V : سرریزنما برای مکمل دو یا Two's Complement Overflow Indicator, SREG3
- N : بیت منفی یا Negative Flag, SREG2
- Z : بیت صفر یا Zero Flag, SREG1
- C : Carry Flag, SREG0
بر طبق معماری Harvard همراه با حافظه ی کد فلش و حافظه داده استاتیک یا SRAM که حجم حافظه ی کد آنها از 1k تا 128k بایت و حجم حافظه ی داده ی آنها از 32 بایت تا 4k بایت متغیر است یاد آورم شویم که این مقادیر حافظه همراه با گذشت زمان پیوسته در حال افزایش است . حافظه داده و ثباتهای AVR - 32 آدرس اول حافظه یعنی (0x0000 تا 0x001f ) متعلق به ثباتهای r0 تا r31 هستند.البته در برخی MCU (MicroController Unit) ها برای ثباتها از فضای حافظه ی داده استفاده می شود.
- آدرسهای ( 0x0020 تا 0x005f ) از حافظه ی داده در دسترس آدرسهای ورودی/خروجی (0x00 تا 0x3f ) است.
- از آدرس 0x0060 حافظه ی داده به بعد فقط شامل حافظه استاتیک است یعنی SRAM .
دو ثبات برای واحد ریاضی منطقی ALU تعداد زیادی از دستورالعملهای ALU شامل دو ثبات هستند یکی مقصد یا Destination(Rd) و یکی منبع یا Source(Rr) که نحوه کدگشایی دستورالعمل را در زیر می بینید: بیتهایی که در آن حرف i قرار گرفته دستورالعملند و حرف d بیتهای مقصد هستند و حرف r بیتهای منبع هستند ثبات منبع از بهم پیوستن بیتهای (r9 : r3 : r2 : r1 : r0) و ثبات مقصد از بهم پیوستن بیتهای (d8 : d7 : d6 : d5 : d4)مشخص می شوند همچنین بیتهای باقی مانده (i15 : i14 : i13 : i12 : i11 : i10) خود دستورالعمل را مشخص می کنند. به عنوان مثال حاصل جمع r17 و r2 که همان Add r17 , r2 است به صورت زیر کدگشایی یا Encode می شود: که در این صورت خروجی AVR-OBJDUMP از این قرار استHex : 0: 12 0d add r17, r2 توجه داشته باشید که یک کلمه ی 16 بیتی از هشت بیت کم ارزش آن در حافظه ذخیره می شود. دستورالعملهای Encode شده با قالب دو ثباتی را در جدول زیر مشاهده می کنید: 000111rdddddrrrr | adc Rd, Rr | 000111dddddddddd | rol Rd | 000011rdddddrrrr | add Rd, Rr | 000011dddddddddd | lsl Rd | 001000rdddddrrrr | and Rd, Rr | 001000dddddddddd | tst Rd | 000101rdddddrrrr | cp Rd, Rr | 000001rdddddrrrr | cpc Rd, Rr | 000100rdddddrrrr | cpse Rd, Rr | 001001rdddddrrrr | eor Rd, Rr | 001001dddddddddd | clr Rd | 001011rdddddrrrr | mov Rd, Rr | 100111rdddddrrrr | mul Rd, Rr | 001010rdddddrrrr | or Rd, Rr | 000010rdddddrrrr | sbc Rd, Rr | 000110rdddddrrrr | sub Rd, Rr |
توجه: دستور rol Rd همان دستور adc Rd , Rd است و همچنین دستور lsl Rd همان دستورالعمل add Rd , Rd و همچنین tst Rd معادل با دستور and Rd , Rd و همینطور دستور clr Rd معادل است با دستور eor Rd , Rd . دستورالعملهای منطقی و ریاضی دستورالعمل | عملیات | تاثیر روی ثبات وضعیت | ADD Rd, Rr | Rd = Rd + Rr | Z,C,N,V,H | ADC Rd, Rr | Rd = Rd + Rr + C | Z,C,N,V,H | ADIW Rdl,K | Rdh:Rdl = Rdh:Rdl + K | Z,C,N,V,S | SUB Rd, Rr | Rd = Rd - Rr | Z,C,N,V,H | SUBI Rd, K | Rd = Rd - K | Z,C,N,V,H | SBC Rd, Rr | Rd = Rd - Rr - C | Z,C,N,V,H | SBCI Rd, K | Rd = Rd - K - C | Z,C,N,V,H | SBIW Rdl,K | Rdh:Rdl = Rdh:Rdl - K | Z,C,N,V,S | AND Rd, Rr | Rd = Rd & Rr | Z,N,V | ANDI Rd, K | Rd = Rd & K | Z,N,V | OR Rd, Rr | Rd = Rd | Rr | Z,N,V | ORI Rd, K | Rd = Rd | K | Z,N,V | EOR Rd, Rr | Rd = Rd ^ Rr | Z,N,V | COM Rd | Rd = $FF - Rd | Z,C,N,V | NEG Rd | Rd = $00 - Rd | Z,C,N,V,H | SBR Rd |
|