تالار گفتگوی کیش تک/ kishtech forum
برنامه نویسی اسمبلی برای AVR - نسخه‌ی قابل چاپ

+- تالار گفتگوی کیش تک/ kishtech forum (http://forum.kishtech.ir)
+-- انجمن: پردیس فناوری کیش (http://forum.kishtech.ir/forumdisplay.php?fid=1)
+--- انجمن: مهندسی الکترونیک و الکتروتکنیک (http://forum.kishtech.ir/forumdisplay.php?fid=169)
+--- موضوع: برنامه نویسی اسمبلی برای AVR (/showthread.php?tid=38452)



برنامه نویسی اسمبلی برای AVR - saedi1361 - 14-01-2020

معرفی چند دستور مهم زبان اسمبلی

۱-دستور INC

فرمت کلی این دستور اسمبلی به این شکل است :  INC  Rd
این دستور محتوای Rd را یک واحد افزایش می دهد.
مثال:

LDI  R16,0   ;R16=0
INC  R16     ;R16=1

۲-دستور DEC

فرمت کلی این دستور اسمبلی به این شکل است:  DEC  Rd

بعد از اجرای این دستور محتوای Rd یک واحد کاهش می یابد.
مثال:

LDI  R16,15   ;R16=15
DEC  R16      ;R16=14

لازم به ذکر است که دو دستور بالا اثری بر روی پرچم های وضعیت ندارند.


۳-دستور SUB

فرمت کلی این دستور اسمبلی به این شکل است :  SUB  Rd,Rr
این دستور مقدار Rr را از Rd کم کرده و نتیجه را در Rd می گذارد.همچنین این دستور بر روی پرچم های وضعیت اثر می گذارد.
مثال:

LDI  R16,60    ;R16=60
LDI  R17,70    ;R16=70
SUB  R17,R16   ;R17=10

۴- دستور COM

فرمت کلی این دستور اسمبلی به این شکل است:  COM  Rd

این دستور مکمل(معکوس) Rd را محاسبه کرده و نتیجه را در Rd قرار می دهد.
مثال:

LDI  R16,0xAA   ;R16=0xAA
COM  R16        ;R16=0x55

حال که با بعضی از دستورات زبان اسمبلی آشنا شدید به توضیح در مورد انواع داده در AVR و مثال هایی با دستورات گفته شده می پردازیم.

همان طور که می دانید AVR فقط داده های هشت بیتی را پشتیبانی می کند و برای پردازش داده های بیش از هشت بیت باید آنها را به اجزای ۸ بیتی خرد کنیم.داده هایی که توسط AVR استفاده می شوند می نوانند مثبت یا منفی ویا زوج و فرد باشند باشند.

اگر پرارزش ترین بیت (D7) یک باشد عدد منفی، و اگر صفر باشد عدد مثبت است.همچنین اگر کم ارزشترین بیت(D0) صفر باشد عدد زوج و اگر یک باشد عدد فرد است.

مثال: عدد مثبت و زوج ۰۱۱۱۱۰۱۰-عدد مثبت و فرد ۱۱۰۰۰۱۱۰- عدد منفی و زوج ۱۱۰۰۱۱۱۰- منفی و فرد۱۱۰۰۱۱۱۱
اعداد را به چهار فرمت دودویی، ده دهی،مبنای شانزده و اسکی می توان در برنامه نویسی اسمبلی به کار برد.به مثال زیر توجه کنید:

LDI  R16,0x30
LDI  R16,$30
LDI  R16,48
LDI  R16,0B00110000
'LDI  R16,'0

در دستور دوم علامت دلار روش دیگری برای نمایش اعداد بر مبنای ۱۶ می باشد.

در دستور سوم فرمت دهدهی  و در دستور چهارم فرمت باینری  ۰x30نوشته شده.
در دستور آخر کد اسکی عدد صفر که همان عدد ۰x30 است در ثبات R16 قرار می گیرد چون داخل علامت نقل قول قرار گرفته.پس در هر ۵ دستور یک مقدار مشابه وارد ثبات R16 می شود.