مقاله اصول برنامه نویسی اسمبلی

مقاله اصول برنامه نویسی اسمبلی مقاله اصول برنامه نویسی اسمبلی

دسته : -فنی و مهندسی

فرمت فایل : word

حجم فایل : 31 KB

تعداد صفحات : 46

بازدیدها : 209

برچسبها : دانلود مقاله

مبلغ : 4000 تومان

خرید این فایل

مقاله اصول برنامه نویسی اسمبلی در 46 صفحه ورد قابل ویرایش

مقاله اصول برنامه نویسی اسمبلی در 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 ، استال را

ازگرداند.

 


خرید و دانلود آنی فایل

به اشتراک بگذارید

Alternate Text

آیا سوال یا مشکلی دارید؟

از طریق این فرم با ما در تماس باشید