مقاله اصول برنامه نویسی اسمبلی
مقاله اصول برنامه نویسی اسمبلی
دسته بندی | کامپیوتر و IT |
فرمت فایل | 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 دستور ترجمه شده است.
خصوصیات و محدودیتها
یكی از دلایل انتخاب تراشه 63743، ارزان قیمت بودن آن است. قیمت این تراشه حدود چند دلار در سفارشهای محدود میباشد.
تراشه دارای 8 كیلوبایت حافظه برنامه است. با یك بهینهسازی، كدهایی كه برای پشتبانی از ارتباطات USB لازم است، میتوانند در یك كیلوبایت جای گیرند و به این ترتیب 7 كیلوبایت باقیمانده میتوانند برای كاربردهای دیگر استفاده شوند.
یك ابزار ضروری برای ارتقای این تراشه كیت ارتقا میباشد كه شامل بر ارتقا، مترجم و برنامههای اشكال زدایی است. همچنین ممكن است احتیاج به برنامهریز Lo PROM –Hi CY3649 نیز داشته باشید كه همه این ابزارها توسط سیپرس در دسترس قرار گرفته است.
63743 برای همه پروژهها مناسب نیست. این تراشه دارای سرعت پایین است كه به معنای آن است كه شما نمیتوانید به منظور انتقالهای همزمان و تودهای از آن استفاده كنید. و سریعترین زمان تأخیر ممكن دارای انتقال وقفهای، 8 بایت در هر 10 میلیثانیه میباشد. برخلاف بعضی از كنترلرهای اولیه، 63743 از انتقال وقفهای خروجی پشتیبانی میكند.
درون تراشه
CPU این تراشه یك RISC هشت بیتی است كه میتواند به حافظه برنامه، RAM، پورتهای I/O همه كاره و البته پورت USB دسترسی داشته باشد. پورت USB در حقیقت یك پورت سوئیچ خودكار است كه هر دو واسط USB و PS/2 را برای ماوس و دیگر دستگاه های نقطهیابی ممكن میسازد. این ویژگی به منظور طراحی دستگاههایی كه قابل تطبیق با هر دو باس باشند قرار گرفته است. وقفهها و ریستهای مختلفی میتوانند به CPU وقفه بدهند.
كنترل و وضعیت اندپوینت
هر كدام از اندپوینتها همچنین دارای یك رجیستر شمارنده اندپوینت هستند كه حاوی اطلاعاتی دربارة پاكت دادهای انتقال یافته یا در حال انتقال است. هر كدام از این رجیسترها دارای چهار بیت شمارنده، یك بیت زنجیره داده و بیت وجود داده، هستند. چهار بایت شمارنده، تعداد بایتهای داده ترنزكشن را نگهداری میكند. در ترنزكشن ورودی، این مقدار مشخص میكند كه چه تعداد بایت داده در ترنزكشن را نگهداری میكند. در ترنزكشن ورودی، این مقدار مشخص میكند كه چه تعداد بایت داده در ترنزكشن بعدی فرستاده میشود، این تعداد بایت شامل بایتهای CRC نمیشود. مقادیر مجاز بین صفر و هشت میباشند. در ترنزكشنهای خروجی و Setup، این مقدار تعداد بایتهایی را كه در آخرین ترنزكشن رسیده است مشخض میكند كه این مقدار شامل دو بایت CRC نیز میشود. مقادیر مجاز بین 2 تا 10 میباشد. شمارنده خروجی و Setup تا هنگامی كه برنامة تراشه رجیستر را بخواند قفل میگردد.
در ترنزكشنهای خروجی و Setup اگر مقادیر CRC رسیده صحیح نباشند، مقدار بیت وجود داده یك میگردد.
بیت Data-toggle حالت تغییر مشخصه پاكت داده را تعیین میكند. در ترنزكشنهای ورودی، برنامة تراشه این مقدار را تنظیم میكند و در ترنزكشنهای خروجی و Setup این بیت را SIE تنظیم مینماید.
كنترل وضعیت USB
رجیستر كنترل وضعیت USB دارای دو بیت برای ارتباطات USB و چهار بیت برای ارتباط PS/2 یا USB و یك بیت برای ارتباط PS/2 میباشد. SIE بیت فعالیت باس را پس از تشخیص فعالیت بر روی باس یك میكند. برنامة تراشه میتواند از این بیت برای تصمیمگیری در رفتن دستگاه به حالت بیكاری استفاده كند. اگر این بیت بیشتر از 3 میلی ثانیه صفر باقی بماند، تراشه باید وارد حالت بیكاری شود.
بیت فعال ساز VREG قادر است كه در خروجی VREG ولتاژ V 3/3 را فعال سازد. این خروجی برای مقاومت بالابر[3] USB به D- در باس است. چون VREG تحت كنترل برنامة تراشه است، كد میتواند ولتاژ خروجی را برداشته یا حفظ كند تا اتصال یا جدا شدن دستگاه از باس را تشخیص دهد. امپدانس خروجی VREG حدود 20 اهم است بنابراین مقدار مقاومت باید K 3/1 اهم باشد تا با K 5/1 مرجع خصوصیات سازگار شویم.
بیت حالت ریست USB – بیت مد وقفه فعال شدن PS/2، تعیین میكند كه وقفه USB داده شود یا اینكه فعالیت PSP داشته باشیم.
سه بیت كنترلی، برنامة تراشه را قادر میسازند كه خطوط USB یا PS/2 را در وضعیتهای خاصی تنظیم كنند، از جمله این وضعیتها میتوان از j،k و SE0 مربوط به USB نام برد. اگر قبلاً میزبان قابلیت Remote-wakup را فعال كرده باشد، برنامة كاربردی میتواند از وضعیت Force-k برای فرستادن سیگنال بازگشت كه به میزبان میگوید دستگاه میخواهد ارتباط دوباره آغاز شود استفاده كند.
بیت فعال كردن PS/2 قادر است مقاومت بالابر داخلی كه بین خطوط SDATA و SCLK است را برای استفاده ارتباط PS/2 فعال سازد.
رجیستر داده پورت 2، حالت چهار بیت فقط خواندنی را در یك پورت ورودی كمیك نگهداری میكند. دو بیت، حالت D+و D- در هنگام استفاده از USB یا حالت SCLK و SDATA در هنگام استفاده از PS/2 میباشند. دو بیت دیگر بیشتر مواقع میتوانند به عنوان دو ورودی استفاده شوند. اگر مقاومت موجود بر روی خط D- از منبع ولتاژ خارجی برای راهاندازی استفاده كند و یا اینكه دستگاه از USB پشتیبانی نكند، از پایة VREG میتوان به عنوان ورودی استفاده كرد كه در این حالت وضعیت این بیت از طریق P2.0 قابل دسترسی است.
وقتی كه ساعت داخلی فعال است، مرجع زمانی بر روی پایة XTALIN وجود نخواهد داشت و میتوان از این پایه نیز به عنوان ورودی از طریق PS.1 استفاده كرد.
آخرین رجیستر مربوط به USB رجیستر فعال ساز وقفههای اندپوینت است، كه وقفهها را برای اندپوینتهای صفر، 1 و 2 فعال میسازد. توضیحات مربوط به این رجیستر در زیر در بخش پردازش وقفه ارائه خواهد شد.