لینک پرداخت و دانلود در "پایین مطلب"
فرمت فایل: word (قابل ویرایش و آماده پرینت)
تعداد صفحات:47
CPU تراشه enCorRe دستور پشتیبانی میکند. همه برنامهها باید از این 37 دستور استفاده کنند. سیپرس یک مترجم مجانی ارائه میدهد که کدهای اسمبلی را که شما مینویسید به فایلهای موضوع، که به منظور برنامهریزی در EPROM تراشه تهیه میشوند، تبدیل میکند. اگر ترجیح دهید که در C برنامهنویسی کنید، سیپریس یک مفسر C نیز پیشنهاد میکند.
اگر با برنامهنویسی اسمبلی میکروکنترلر آشنایی داشته باشید، برنامهنویسی برای enCoRo نیز مشابه همان است. اما اگر با برنامهنویسی در بیسیک و C آشنا هستید، باید بدانید که در برنامهنویسی کدهای اسمبلی بسیاری از عملگرهای زبانهای سطح بالا موجود نیست در اینجا دیگر حلقههای While یا for یا انواع مختلف متغیرها وجود ندارد. اما برای تراشهای مانند enCoRo که به منظور کارهای نمایشی و کنترلی غیر پیچیده طراحی شده است، استفاده از کدهای اسمبلی عملی است. برای برنامههای کوتاه، که به سرعت اجرا میشوند احتیاجی به خرید مفسر نیست.
اصول برنامهنویسی اسمبلی
برنامهنویسی اسمبلی شامل یک مجموعه از دستورات است که هر کدام مربوط به کدهای ماشینی هستند که تراشه از آنها پشتیبانی میکند. مثلاً دستور iord، که محل io را میخواند به کد h29 مربوط است. به جای به خاطر آوردن h 29، شما میتوانید iord را بنویسید، و مترجم معادل سازی را برای شما انجام خواهد داد. دستور iord همچنین احتیاج به یک عملوند دارد که محل خواندن را مشخص کند. به عنوان مثال 01h iord پورتی با آدرس h 10 را میخواند.
زبان برنامهنویسی اسمبلی همچنین میتواند شامل دایرکتیو[1] و توضیحات باشد. دایرکتیوها دستوراتی هستند که به جای اینکه مربوط به CPU باشند، مربوط به مترجم میباشند. دایرکتیوها شما را قادر میسازند که محلی از حافظه را مشخص کنید، متغیرهایی تعریف نمایید. در کل، نقشی که مترجم در کنار اجرای دستورات مشخص شده باید ایفا کند را نشان میدهند. یک نقطه ویرگول ( : )یا ممیز دوبل ( // ) یک عبارت توصیفی را مشخص میکنند که مترجم از آنها چشمپوشی میکند.
مترجمی که توسط سیپرس ارائه میشود، cyasm.exe قابل اجرا در پنجره داس[2] میباشد. سیپرس مرجعها و راهنمای استفاده برای کاربرانی را تهیه کرده است که چگونگی استفاده از مترجم را شرح میدهد.
مترجم از دو مجموعه دستور مشابه برای CPUهای سری A و سریB پشتیبانی میکند. تراشههای enCoRo از سری B هستند. تراشههای قدیمیتر سیپرس، مانند 63001، از سری A بودند و از همة دستورات بجز بعضی از آنها پشتیبانی میکنند.
کدهای مترجم
راهنمای کاربران دارای توضیحات کاملی در مورد کد اسمبلی و دایرکتیوهاست و در اینجا برخی از جزئیات آن تکرار میشود. جدول 1-8 خلاصهای از کدها میباشد و جدول 2-8 خلاصهای از دایرکتیوها را نشان میدهد. کدهای ماشین تراشه به 37 دستور ترجمه شده است.
جدول 1-8: متجرم Cyasm از 37 دستور اسمبلی برای enCoRo پشتیبانی میکند
نوع دستور
دستور
توضیح
تابعهای منطقی و ریاضی
ADD
اضافه کردن بدون نقلی
ADC
اضافه کردن همراه با نقلی
AND
AND کردن بیتی
ASL
انتقال به چپ منطقی
ASR
انتقال به راست منطقی
CMP
مقایسه
CPL
متمم کردن آکومولاتور
DEC
کاهش
INC
افزایش
OR
OR کردن بیتی
RLC
چرخش به چپ همراه با نقلی
RRC
چرخش به راست همراه با نقلی
SUB
تفریق بدون نقلی
SBB
تفریق همراه با نقلی
XOR
OXR بیتی
پرشهای برنامه و کنترلی
GALL
فراخوانی تابع
HALT
اجرای ایست
RETI
بازگشت از وقفه
JACC
پرش آکومولاتور
JC
پرش در صورتی که نقلی یک باشد
JMP
پرش
JNC
پرش در صورتی که نقلی صفر باشد
JNZ
پرش اگر صفر نباشد
JZ
پرش اگر صفر باشد
RET
بازگشت
XPAGE
صفحه حافظه
ادامه جدول 1-8: مترجم Cyasm از 37 دستور اسمبلی برای enCoRo پشتیبانی میکند
نوع دستور
دستور
توضیح
انتقال داده
INDEX
خواندن جدول
IORD
خواندن از I/O
IOWR
نوشتن بر I/O
IOWX
مشخص کردن نوشتن I/O
MOV
انتقال
POP
انتقال داده از پشته به آکومولاتور
PUSH
انتقال داده از آکومولاتور به پشته
SWAP
SWAP
بقیه
DI
غیر فعال کردن وقفهها
EI
فعال کردن وقفهها
NOP
بدون عمل
این دستورات، تابعهای اصلی ریاضی و منطقی، پرسشهای برنامه و کپی دادهها از رجیسترها، پورتها و RAM را انجام میدهند، دو بیت پرچ نقلی[3] و صفر اطلاعات بیشتری را ارائه میدهند. مانند اینکه نتیجه دستور add دارای سرریز[4] بوده است یا خیر یا اینکه نتیجه صفر شده است یا نه.
مقاله اصول برنامهنویسی اسمبلی