پوریا فایل

عرضه کننده بهترین فایل فلش های سامسونگ ،ایسر و تبلت و گوشی چینی

پوریا فایل

عرضه کننده بهترین فایل فلش های سامسونگ ،ایسر و تبلت و گوشی چینی

بایگانی
نویسندگان
طبقه بندی موضوعی
کلمات کلیدی

مبانی نظری و پیشینه پژوهش مهارت های حرکتی (فصل دوم)

حل مشکل سریال A510F IMEI NULL

مبانی نظری و پیشینه پژوهش روانشناسی

مبانی نظری فصل دوم پایان نامه روانشناسی درباره نارسایی هیجانی

فصل دوم پایان نامه با موضوع سلامت

فصل دوم پایان نامه مفهوم سلامت روان از دیدگاه مکتب های مختلف

پاورپوینت مالیه‌ی عمومی و بودجه‌ی دولتی

پاورپوینت طرح اختلاط بتن

پاورپوینت فرهنگ در معماری

پاورپوینت تحلیل و بررسی دانشگاه معماری (نمونه خارجی)

پاورپوینت 99 اسلایدی مدیریت کارخانه شهنام طاهری

پاورپوینت ضوابط پارکینگ ها در مناطق مسکونی

پاورپوینت ساندویچ پانل

پاورپوینت قوانین و ضوابط آپارتمان سازی

پاورپوینت طرح ریزی واحد های صنعتی (جیمز م اپل)

پاورپوینت مدرسه هنر سنگاپور

پاورپوینت موتور های پله ای

پاورپوینت آثار و معماری برنارد چومی

پاورپوینت آراتا ایسوزاکی- معمار ژاپنی

پاورپوینت سیستمهای دودویی

پاورپوینت گروه مطالعاتی مجامع بین الملل Ripe

پاورپوینت مادربورد (35 اسلاید)

پاورپوینت آشنایی با طاق در معماری

پاورپوینت اینترنت ماهواره ای

پاورپوینت زندگینامه و آثار آنتونی گائودی

فایل فلش فارسی MT7-TL10 (رام فارسی MT7-TL10)بیلد326

مبانی نظری و پیشینه پژوهش نقص شنوایی و ناشنوایی (فصل دوم)

مبانی نظری و پیشینه پژوهش نیاز و سلسله مراتب نیازهای مزلو (فصل دوم)

مبانی نظری و پیشینه پژوهش همدلی (فصل دوم)

مبانی نظری و پیشینه پژوهش هوش سازمانی (فصل دوم)

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

پوریا قاضی گرد | دوشنبه, ۱۸ مرداد ۱۳۹۵، ۰۹:۰۶ ب.ظ

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

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

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


تحقیق اصول برنامه نویسی اسمبلی
پروژه اصول برنامه نویسی اسمبلی
مقاله اصول برنامه نویسی اسمبلی
دانلود تحقیق اصول برنامه نویسی اسمبلی
دسته بندی فنی و مهندسی
فرمت فایل doc
حجم فایل 31 کیلو بایت
تعداد صفحات فایل 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 ، استال را

ازگرداند.

 


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

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی