مقاله اصول برنامه نويسي اسمبلي
دسته بندي :
فنی و مهندسی »
کامپیوتر و IT
مقاله اصول برنامه نويسي اسمبلي در 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 فعال ميسازد. توضيحات مربوط به اين رجيستر در زير در بخش پردازش وقفه ارائه خواهد شد.