اصول برنامه نویسی اسمبلی
مقاله اصول برنامه نویسی اسمبلی در 46 صفحه ورد قابل ویرایش |
![]() |
دسته بندی | فنی و مهندسی |
فرمت فایل | doc |
حجم فایل | 31 کیلو بایت |
تعداد صفحات فایل | 46 |
اصول برنامه نویسی اسمبلی
تراشه enCorRe دستور پشتیبانی میکند. همه برنامهها باید از این 37 دستور استفاده کنند. سیپرس یک مترجم مجانی ارائه میدهد که کدهای اسمبلی را که شما مینویسید به فایلهای موضوع، که به منظور برنامهریزی در EPROM تراشه تهیه میشوند، تبدیل میکند. اگر ترجیح دهید که در C برنامهنویسی کنید، سیپریس یک مفسر C نیز پیشنهاد میکند.
اگر با برنامهنویسی اسمبلی میکروکنترلر آشنایی داشته باشید، برنامهنویسی برای enCoRo نیز مشابه همان است. اما اگر با برنامهنویسی در بیسیک و C آشنا هستید، باید بدانید که در برنامهنویسی کدهای اسمبلی بسیاری از عملگرهای زبانهای سطح بالا موجود نیست در اینجا دیگر حلقههای While یا for یا انواع مختلف متغیرها وجود ندارد. اما برای تراشهای مانند enCoRo که به منظور کارهای نمایشی و کنترلی غیر پیچیده طراحی شده است، استفاده از کدهای اسمبلی عملی است. برای برنامههای کوتاه، که به سرعت اجرا میشوند احتیاجی به خرید مفسر نیست.
اصول برنامهنویسی اسمبلی
برنامهنویسی اسمبلی شامل یک مجموعه از دستورات است که هر کدام مربوط به کدهای ماشینی هستند که تراشه از آنها پشتیبانی میکند. مثلاً دستور iord، که محل io را میخواند به کد h29 مربوط است. به جای به خاطر آوردن h 29، شما میتوانید iord را بنویسید، و مترجم معادل سازی را برای شما انجام خواهد داد. دستور iord همچنین احتیاج به یک عملوند دارد که محل خواندن را مشخص کند. به عنوان مثال 01h iord پورتی با آدرس h 10 را میخواند.
زبان برنامهنویسی اسمبلی همچنین میتواند شامل دایرکتیو و توضیحات باشد. دایرکتیوها دستوراتی هستند که به جای اینکه مربوط به CPU باشند، مربوط به مترجم میباشند. دایرکتیوها شما را قادر میسازند که محلی از حافظه را مشخص کنید، متغیرهایی تعریف نمایید. در کل، نقشی که مترجم در کنار اجرای دستورات مشخص شده باید ایفا کند را نشان میدهند. یک نقطه ویرگول ( : )یا ممیز دوبل ( // ) یک عبارت توصیفی را مشخص میکنند که مترجم از آنها چشمپوشی میکند.
داده شود یا اینکه فعالیت 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 فعال میسازد. توضیحات مربوط به این رجیستر در زیر در بخش پردازش وقفه ارائه خواهد شد.
اصول راهانداز دستگاه
راهانداز دستگاه نرمافزاری است که برنامة کاربردی را قادر می سازد که به سختافزار دستگاه دسترسی یابد. بعضی از راهاندازهای دستگاهها راهانداز کلاس هستند که میتوانند با دستگاههایی که کاربرد مشابه دارند ارتباط برقرار کنند.
رها کردن برنامههای کاربردی از جزئیات
یک راهاندا دستگاه، برنامة کاربردی را از داشتن جزئیات درباره اتصالهای فیزیکی، سیگنالها، پروتکلهایی که برای ارتباط با دستگاه لازم است، بینیاز میکند. برنامة کاربردی نرمافزاری است که کاربر آن را راه میاندازد که شامل پردازش کنندههای word و دادهها تا برنامههایی با کاربرد خاص که سختافزار ویژهای را پشتیبانی میکند، میشوند.
یک راهانداز دستگاه کدهای برنامة کاربردی را قادر میسازد فقط با دانستن نام وسیلة جانبی (مثل Laserjet hp) و یا کار آن (دستة بازی) بتواند با آن ارتباط برقرار کنند. احتیاج نیست که برنامه کاربردی آدرس فیزیکی پورتی را که وسیلة جانبی له آن متصل شده بداند ( مانند آدرس h 378) یا اینکه سیگنالهای تأیید
متقابل که به وسیله جانبی نیاز دارد ( Strobe .Busy و غیره) را کنترل و نمایش دهد. برنامة کاربردی حتی نمی داند که یک دستگاه از مدار واسطه USB استفاده می کند یا مدار واسط دیگری. با توجه به اینکه جزئیات سخت افزاری در یک زبان سطح پایین تر وجود دارد.
وظیفة راه انداز دستگاه ترجمه ارتباط بین زبان سطح بالا برنامة کاربردی به کدهای ویژه سخت افزار می باشد. برنامة کاربردی از تابعهایی که سیستم عامل آنها را پشتیبانی می کند. برای ارتباط با راه انداز دستگاه استفاده می کند. کدهای ویژه سخت افزار نیز پروتکل لازم برای دسترسی به مدار وسیله جانبی را دارا هستند که شامل تشخیص حالت سیگنال های وضعیتی و استفاده از سیگنال های کنترلی در زمان لازم می باشد.
ویندوز دارای تابعهای کاربردی رابط با برنامه نویسان (API) است که برنامة کاربردی را قادر می سازد که با راه انداز دستگاه ارتباط برقرار کند. برنامه هایی که در زبانهای برنامه نویسی ویژه وال بیسیک++C/C و دلفی نوشته می شوند قادر به فراخوانی تابعهای API هستند سه تابعی که راه انداز دستگاه را قادر می سازد که از دستگاه USB بخواند و بنویسد عبارتند از DeviceIoControl. Write File, ReadFile
به منظور اینکه برنامه نویسی آسانتر و صحیح تر باشد، ویژوال بیسیک برای کارهای معمولی دارای کنترل هایی است به عنوان مثال، برنامة کاربردی می تواند با استفاده از موضوع Printer داده را به چاپگر و کنترل McComm بفرستد تا به دستگاهی که به پورت سریال RS-232 متصل است ارتباط برقرار کند. استفاده از این کنترل ها راه راحت تر و کم اشتباه تری برای تنظیم کردن پارامترها و تبادل اطلاعات می باشد. در پشت کد های کنترلی ممکن است تابعهای API وجود داشته باشند که با راه انداز از دستگاه ارتباط برقرار می کنند. اما موضوعهای کنترلی برنامه نویسان را از سرو کار داشتن با آنها راحت می کند.