دسته : -فنی و مهندسی
فرمت فایل : word
حجم فایل : 31 KB
تعداد صفحات : 46
بازدیدها : 211
برچسبها : دانلود مقاله
مبلغ : 4000 تومان
خرید این فایلمقاله اصول برنامه نویسی اسمبلی در 46 صفحه ورد قابل ویرایش
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] بوده است یا خیر یا اینكه نتیجه صفر شده است یا نه.
تراشه از سه حالت آدرس دهی پشتیبانی میكند كه چگونگی استفاده از عملوند را برای دستور مشخص میكند. همه دستورات از هر سه حالت آدرس دهی پشتیبانی نمیكنند.
در آدرس دهی سریع، دستورات از مقدار عملوند مستقیماً استفاده میكنند. این دستور از آدرس دهی سریع برای جمع كردن h 60 با مقدار آكومولاتور استفاده میكند.
Add A/ 60h
در آدرس دهی مستقیم، دستور با عملوند شبیه به آدرس رفتار میكند و از مقداری كه در آن آدرس ذخیره شده استفاده مینماید. این دستور از آدرس دهی مستقیم برای جمع كردن مقداری كه در آدرس h60 از RAM نوشته شده با محتویات آكومولاتور استفاده میكند.
اشارهگر پشته داده
اشارهگر پشته داده (DSP) دادههایی را كه توسط دستور PUSH ذخیره میشوند، نگهداری میكند. مثلاً PUSH A محتویات آكومولاتور را در پشته داده ذخیره میكند. DSP پس از ذخیره یك بایت، یك واحد كاهش مییابد. دستور POP بایتهایی را كه قبلاً ذخیره شده است را بازیابی میكند و DSP را یك واحد افزایش میدهد.
مقدار پیش فرض DSP در هنگام ریست جایی كه باید باقی بماند نیست. غیر از تراشههایی كه اصلاً از USB استفاده نمیكنند، برنامة تراشه باید قبل از استفاده از هر دستور PUSH ابتدا DSP را به مقدار جدید تنظیم كند. در هنگام ریست DSP مقدار h00 را دارد. از اینجا، هر دستور PUSH باعث میشود كه DSP كاهش یافته و به بالای RAM (FFh) برود كه بایت 7 بافر اندپوینت صفر است. به این دلیل، قبل از هر PUSH، برنامة تراشه باید اشارهگر DSP را به E8h یا كمتر تنظیم كند.
; Store the DSP’s new beginning address
; in the accumulator.
mov A/ 70h
; Swap the contents of the accumulator with rhe DSP swap A/ dsp
ارتباطهای USB
برنامة تراشه، موتور واسط سریال (SIE) را توسط دسترسی به رجیسترها كنترل میكند. نه عدد رجیستر وجود دارند كه به صورت مستقیم با ارتباطهای USB مرتبطند:رجیستر آدرس، سه رجیستر حالت اندپوینت، سه رجیستر شمارنده اندپوینت، یك رجیستر كنترل و وضعیت و رجیستر فعالساز وقفه.
آدرس دستگاه
رجیستر آدرس دستگاه USB بیت آدرسی را كه توسط میزبان در مرحله سرشماری به دستگاه نسبت داده شده است، نگهداری میكند. سخت افزار باید خواسته
Set –Address را تشخیص داده، تأیید متقابلی در پاسخ به خواسته فرستاده و آدرس رسیده را در این رجیستر ذخیره نماید. بیت 7 باید در 1، ست شود تا موتور واسط قادر شود به ترافیكهای USB پاسخ دهد.
حالتها
رجیستر حالت اندپوینت صفر حاوی اطلاعاتی درباره آخرین پاكت داده رسیده به اندپوینت صفر است. SIE و برنامة تراشه هر دو قادرند كه محتویات این رجیستر را تغییر دهند.
سه بیت مشخصة پاكت نوع پاكت توكن را مشخص میكنند: Setup، ورودی یا خروجی. در طول فاز داده از ترنزكشن Setup، SIE بیت تنظیم را یك میكند. برای جلوگیری از دوباره نوشته شدن، برنامة تراشه در صورت یك بودن این بیت اجازه نمیدهد كه هیچ عمل نوشتنی روی بافر USB انجام شود. برنامة تراشه تا وقتی كه همه بایتهای داده دریافت نشود، نمیتواند این بیت را تغییر دهد.
بیت ACK نیز وقتی كه ترنزكشن با موفقیت كامل شود، یك میگردد.
چهار بیت حالت چگونگی پاسخ SIE به ترنزكشنهای Setup و ورودی و خروجی را مشخص میكنند. بسته به نوع ترنزكشن، برنامة تراشه میتواند از SIE بخواهد كه ACK، NAK، Stall یا پاكت دادهای با طول صفر بفرستد. در پارهای موارد، SIE پس از ACK حالت را تغییر میدهد. مثلاً وقتی كه حالت به صورت ACK خروجی است، پس از بازگرداندن ACK در پاسخ به دادههای رسیده، SIE حالت را به OUT Nak تنظیم میكند. این مسأله به سختافزار امكان میدهد كه دادههای رسیدهای را كه با ACK پاسخ داده شدهاند، بازیابی كند. پس از بازیابی این دادهها، برنامة تراشه میتواند برای امكان دریافت دادههای جدید بیتهای حالت را به OUT ACK تغییر دهد.
درك نحوه استفاده از این بیتهای حالت بسیار گیج كننده بود. سیپرس چهار صفحه در مورد چگونگی پاسخ به همه این رویدادها تهیه كرده است. خوب است این حالتها را بر اساس اینكه چه اندپوینتهایی در چه وضعیتی از آنها استفاده میكنند، گروهبندی كنیم. جدول 3-8 حالتهایی را كه توسط اندپوینت صفر استفاده میشود نشان میدهد. در هر كدام از این حالتها همانند اندپوینت كنترلی، ترنزكشنهای Setup پذیرفته میشوند.
مكمل رجیسترهای حالت اندپوینت صفر، رجیستر حالت اندپوینت یك و رجیستر حالت اندپوینت دو میباشند. این رجیسترها نیز همانند اندپوینت صفر دارای بیتهای ACK و حالتهای مشابه میباشند. این رجیسترها بیتهای مشخصة پاكت ندارند چون فقط از انتقالهای ورودی و خروجی پشتیبانی میكنند. هر كدام از این رجیسترها دارای بیتهای استال نیز هستند.
اندپوینتهای 1 و 2 از تنظیمات حالت متفاوتی با اندپوینت صفر استفاده میكنند چون این اندپوینتها احتیاج به پاسخ دادن به پاكتهای Setup ندارند در حالی كه اندپوینت صفر این وظیفه را دارا میباشد. جدول 4-8 حالتهایی را كه توسط اندپوینتهای 1 و 2 استفاده میشوند نشان میدهد. جدول همچنین چگونگی استفاده برنامة تراشه از بیت استال كه باعث میشود SIE در حالتهای ACK IN و ACK OUT ، استال را
ازگرداند.