دسته بندی | کامپیوتر و IT |
فرمت فایل | doc |
حجم فایل | 37 کیلو بایت |
تعداد صفحات فایل | 46 |
آموزش اصول برنامهنویسی اسمبلی در 46 صفحه word قابل ویرایش با فرمت doc
اصول برنامهنویسی اسمبلی
برنامهنویسی در C
مزیتهای C
معماری تراشه
خصوصیات و محدودیتها
درون تراشه
حافظه
اشارهگر پشته برنامه
اشارهگر پشته داده
کنترل و وضعیت اندپوینت
کنترل وضعیت USB
اصول راهانداز دستگاه
انواع استاندارد دستگاهها
دستگاههای شخصی
راه انداز دستگاه
مدهای کابر و هسته
مدل راه انداز Win32
مدل های راه انداز در ویندوزهای مختلف
زبانهای برنامه نویسی
لایه های راه انداز USB
راه انداز کاربردی
راه اندازهای باس
CPU تراشه enCorRe دستور پشتیبانی میکند. همه برنامهها باید از این 37 دستور استفاده کنند. سیپرس یک مترجم مجانی ارائه میدهد که کدهای اسمبلی را که شما مینویسید به فایلهای موضوع، که به منظور برنامهریزی در EPROM تراشه تهیه میشوند، تبدیل میکند. اگر ترجیح دهید که در C برنامهنویسی کنید، سیپریس یک مفسر C نیز پیشنهاد میکند.
اگر با برنامهنویسی اسمبلی میکروکنترلر آشنایی داشته باشید، برنامهنویسی برای enCoRo نیز مشابه همان است. اما اگر با برنامهنویسی در بیسیک و C آشنا هستید، باید بدانید که در برنامهنویسی کدهای اسمبلی بسیاری از عملگرهای زبانهای سطح بالا موجود نیست در اینجا دیگر حلقههای While یا for یا انواع مختلف متغیرها وجود ندارد. اما برای تراشهای مانند enCoRo که به منظور کارهای نمایشی و کنترلی غیر پیچیده طراحی شده است، استفاده از کدهای اسمبلی عملی است. برای برنامههای کوتاه، که به سرعت اجرا میشوند احتیاجی به خرید مفسر نیست.
اصول برنامهنویسی اسمبلی
برنامهنویسی اسمبلی شامل یک مجموعه از دستورات است که هر کدام مربوط به کدهای ماشینی هستند که تراشه از آنها پشتیبانی میکند. مثلاً دستور iord، که محل io را میخواند به کد h29 مربوط است. به جای به خاطر آوردن h 29، شما میتوانید iord را بنویسید، و مترجم معادل سازی را برای شما انجام خواهد داد. دستور iord همچنین احتیاج به یک عملوند دارد که محل خواندن را مشخص کند. به عنوان مثال 01h iord پورتی با آدرس h 10 را میخواند.
زبان برنامهنویسی اسمبلی همچنین میتواند شامل دایرکتیو و توضیحات باشد. دایرکتیوها دستوراتی هستند که به جای اینکه مربوط به CPU باشند، مربوط به مترجم میباشند. دایرکتیوها شما را قادر میسازند که محلی از حافظه را مشخص کنید، متغیرهایی تعریف نمایید. در کل، نقشی که مترجم در کنار اجرای دستورات مشخص شده باید ایفا کند را نشان میدهند. یک نقطه ویرگول ( : )یا ممیز دوبل ( // ) یک عبارت توصیفی را مشخص میکنند که مترجم از آنها چشمپوشی میکند.
مترجمی که توسط سیپرس ارائه میشود، cyasm.exe قابل اجرا در پنجره داس میباشد. سیپرس مرجعها و راهنمای استفاده برای کاربرانی را تهیه کرده است که چگونگی استفاده از مترجم را شرح میدهد.
مترجم از دو مجموعه دستور مشابه برای CPUهای سری A و سریB پشتیبانی میکند. تراشههای enCoRo از سری B هستند. تراشههای قدیمیتر سیپرس، مانند 63001، از سری A بودند و از همة دستورات بجز بعضی از آنها پشتیبانی میکنند.
کدهای مترجم
راهنمای کاربران دارای توضیحات کاملی در مورد کد اسمبلی و دایرکتیوهاست و در اینجا برخی از جزئیات آن تکرار میشود. جدول 1-8 خلاصهای از کدها میباشد و جدول 2-8 خلاصهای از دایرکتیوها را نشان میدهد. کدهای ماشین تراشه به 37 دستور ترجمه شده است.
دسته بندی | کامپیوتر و 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 فعال میسازد. توضیحات مربوط به این رجیستر در زیر در بخش پردازش وقفه ارائه خواهد شد.