180 likes | 416 Views
برنامه نویسی به زبان اسمبلی. فصل دوم: زبان اسمبلی و مدل برنامه نویسی. تهیه وتنظیم: سید مصطفی موسوی. انواع زبان های برنامه نویسی. انواع زبان های برنامه نویسی زبان ماشین زبان اسمبلی زبان های سطح بالا. زبان ماشین. زبان ماشین عبارت از کدهایی است که برای ماشین قابل فهم است.
E N D
برنامه نویسی به زبان اسمبلی فصل دوم: زبان اسمبلی و مدل برنامه نویسی تهیه وتنظیم: سید مصطفی موسوی
انواع زبان های برنامه نویسی • انواع زبان های برنامه نویسی • زبان ماشین • زبان اسمبلی • زبان های سطح بالا
زبان ماشین • زبان ماشین عبارت از کدهایی است که برای ماشین قابل فهم است. • به صورت 0 و 1 می باشد. حافظه برنامه کد فرستادن رجیستر AL در پورت شماره 5 کد جمع کردن رجیستر AL با رجیستر BL
زبان ماشین • نوشتن برنامه به صورت 0 و 1 مشکل و حتی ناممکن است. • خطایابی مشکل است، اگر جای یک 0 و 1 عوض شود ممکن است مفهوم برنامه تغییر پیدا کند. • برای راحتی و کم کردن احتمال اشتباه از زبان های دیگر برنامه نویسی استفاده می کنیم.
زبان اسمبلی • به جای نوشتن برنامه به شکل کدهای 0 و 1، برنامه بوسیله یک عبارت بیان می شود. برنامه به زبان اسمبلی برنامه به زبان ماشین OUT 05,AL کد فرستادن رجیستر AL در پورت شماره 5 ADD AL,BL کد جمع کردن رجیستر AL با رجیستر BL
زبان اسمبلی • نوشتن برنامه به زبان اسمبلی راحت تر از زبان ماشین است. • برنامه ای که به زبان اسمبلی نوشته می شود در نهایت باید به زبان ماشین ترجمه شود تا توسط کامپیوتر قابل اجرا شود. • نرم افزاری که کدهای اسمبلی را به کد ماشین ترجمه می کند اسمبلر نامیده می شود.
زبان های سطح بالا • زبان هایی از قبیل C، Pascal، Java، C# و .... • یک دستور در یک زبان سطح بالا، معادل چندین دستور به زبان اسمبلی می باشد. • دستورات زبان سطح بالا بسیار قوی تر از زبان اسمبلی عمل می کنند. • پس از نوشتن برنامه به زبان سطح بالا باید آنرا به کدهای زبان ماشین تبدیل کرد تا قابل اجرا توسط کامپیوتر باشد. • نرم افزاری که این تبدیل را انجام می دهد کامپایلر نامیده می شود.
مقایسه زبان اسمبلی و زبانهای سطح بالا • مزایای زبان اسمبلی نسبت به زبانهای سطح بالا • برنامه کد ماشین یک برنامه به زبان اسمبلی (پس از تبدیل توسط اسمبلر) فضای کمتری نسبت به کد ماشین همان برنامه به زبان سطح بالا (پس از تبدیل توسط کامپایلر) اشغال می کند. • با توجه به کمتر بودن تعداد بایتهای کد برنامه، اجرای کد نوشته شده به زبان اسمبلی خیلی سریعتر خواهد بود. • در موارد زیر باید از زبان اسمبلی استفاده نمود • برنامه های بلادرنگ • برنامه هایی که کنترل دقیق تری بر روی سخت افزار و ورودی-خروجی ها انجام می دهند • سیستم های میکرو پروسسوری
مدل برنامه نویسی میکروپروسسور • بر خلاف زبان های سطح بالا در یک دستور زبان اسمبلی علاوه بر نوع عمل جایگاه داده نیز باید مشخص شود. • مثلا در دستور ADD باید میکروپروسسور بداند که داده هایی که باید باهم جمع شوند کجا قرار دارند. • جایگاه داده، رجیستر، حافظه یا پورت است. • بنابراین برای نوشتن برنامه باید رجیسترها و نحوه دسترسی به حافظه و پورت را بدانیم. • مدل برنامه نویسی میکروپروسسور بیان کننده رجیسترهایی است که برنامه نویس می تواند از آنها در برنامه نویسی استفاده نماید.
مدل برنامه نویسی میکروپروسسور • مثال • در دستور زیر عمل جمع بر روی داده هایی که در رجیسترهای AL و BL است، انجام می گیرد. • ADD AL,BL • در دستور زیر عمل جمع بر روی داده هایی که در رجیستر AL و مکانی از حافظه که آدرس آن توسط BX مشخص می شود، انجام می گیرد. • ADD AL,[BX]
مدل برنامه نویسی میکروپروسسور • مدل برنامه نویسی میکروپروسسور 8086 شامل 4 گروه رجیستر است: Accumulator AX Base BX Data group Count CX DX Data Stack pointer Base pointer Pointer and Index group Source index Destination Index Instruction Pointer
مدل برنامه نویسی میکروپروسسور • (ادامه…) State and control flags Extra Code Segment group Data Stack
مدل برنامه نویسی میکروپروسسور • رجیسترهای داده یا رجیسترهای همه منظوره Accumulator AX Base BX Data group Count CX DX Data
مدل برنامه نویسی میکروپروسسور • رجیسترهای داده یا رجیسترهای همه منظوره (ادامه ...) • 8 عدد هستند • می توانند به صورت ترکیبی و 16 بیتی درآیند. • کاربرد عمومی: انتقال و ذخیره اطلاعات • AL یا (AX) که Accumulator نامیده می شود، تنها رجیستری است که تمام عملیات انتقال، ریاضی، منطقی و ورودی-خروجی بر روی آن قابل اجراست. • رجیستر BX تنها رجیستر این گروه است که می تواند شبیه رجیسترهای اشاره گر در دستورات مورد استفاده قرار گیرد. • رجیستر CX برای شمارش تعداد دفعات عملیات است که در دستورات loop، شیفت و ... مورد استفاده قرار می گیرد.
مدل برنامه نویسی میکروپروسسور • رجیسترهای اشاره گر و اندیس • 16 بیتی هستند. • به عنوان اشاره گر به آدرس خانه های حافظه می باشند. • می توان از آنها برای انتقال و بعضی دستورات دیگر نیز استفاده کرد. Stack pointer Base pointer Pointer and Index group Source index Destination Index Instruction Pointer
مدل برنامه نویسی میکروپروسسور • رجیستر پرچم • شامل پرچم های کنترل و وضعیت می باشد. • صفر و یک بودن پرچم های وضعیت بیان کننده ایجاد شرایطی در برنامه است که برنامه نویس می تواند با توجه به آن تصمیم لازم را بگیرد. • مانند صفر شدن نتیجه یک عمل ریاضی • صفر و یک کردن پرچم کنترل، باعث فعال شدن یا نشدن بعضی از عملیات می شود. • مانند وقفه State and control flags
مدل برنامه نویسی میکروپروسسور • رجیستر های سگمنت Extra Code Segment group Data Stack
مدل برنامه نویسی میکروپروسسور • رجیستر های سگمنت (ادامه ...) • شامل 4 رجیستر است. • ES سگمنت اضافی • CS سگمنت کد • DS سگمنت داده • SS سگمنت پشته • برای ساختن آدرس مورد استفاده قرار می گیرند و16 بیت با ارزش آدرس را نگهداری می کنند. • با استفاده از آنها مدل سگمنت بندی در 8086 پیاده شده است.