آیا میدانید درجه حرارت هسته زمين در
حدود 5700 درجه سانتيگراد است
خردمند کسي است که گفتارش را کردارش، تصديق
کند. از امام علي |
![]() |
کامپایلر قدرتمند Atmel AVR Studio 6 نسخه 6
دانلود شبیه ساز قدرتمند proteus 7.10 SP0 همراه با کرک و لایسنس و کتابخانه
آموزش گام به گام برنامه نویسی AVR به زبان C
کتابخانه شبیه ساز LCD های نوکیا برای پروتیوس
پروژه تولید سیگنال های ویدیوئی PAL با AVR به زبان اسمبلی
پروژه ارتباط AVR با RS232 و برنامه کنترلی با ویژوال بیسیک
اتصال کیبورد 4*4 به میکروکنترلر AVR و نمایش روی سون سگمنت
اینک بعد از بحث های مفصلی که در مورد ساختمان داخلی و عملکرد اجزاء آن داشتیم، می توان دوباره از دیدگاه کلی به بررسی عملکرد ریزپردازنده پرداخت و جمع بندی لازم را ارائه نمود. دیدیم که 8088/8086 از دو واحد اصلی EU و BIU تشکیل یافته است. پس از آنکه ریزپردازنده شروع به کار نمود اجرای برنامه ها از یک آدرس مشخص و از قبل تعیین شده آغاز خواهد شد. (بعدا خواهیم دید که اگر ریزپردازنده در ابتدای شروع به کار باشد، پس از عمل Reset می توان کنترل اجرای برنامه را به هر آدرسی ارجاع داد و این کار به راحتی با قرار دادن دستورالعمل پرش در ناحیه اختصاصی مربوط به Reset امکان پذیر است.)
می دانیم که محتویات ثبات IP در هر زمان به دستورالعمل بعدی که باید از حافظه واکشی شود، اشاره می کند. بنابراین در اولین مرحله محتویات ثبات IP همراه با ثبات CS یک آدس فیزیکی حافظه را به دست خواهند داد که اولین دستورالعمل از آنجا واکشی شده و در داخل صف دستورالعمل ها قرار خواهد گرفت و پس از این عمل، مقدار IP بسته به طول دستورالعملی که واکشی شده، افزایش خواهد یافت.
دو ناحیه مجزای ابتدا و انتهای حافظه ریزپردازنده 8088/8086 توسط کارخانه سازنده به اعمال خاصی اختصاص داده شده است و بایستی با توجه به این دو ناحیه، از ریزپردازنده استفاده کرد. این دو بخش عبارتند از:
بخش اول ابتدای شروع حافظه از آدرس صفر الی 3FFH است. یعنی اولین ناحیه رزرو شده 1024 بایت اول حافظه است. این ناحیه برای آدرس های وقفه تخصیص داده شده و در صورت وقوع وقفه، ریزپردازنده جهت به دست آوردن آدرس برنامه سرویس وقفه به این ناحیه از حافظه مراجعه می نماید. هر چهار بایت متوالی از این ناحیه به یک وقفه اختصاص می یابد و لازم است در موقع استفاده از حافظه سیستم به این موضوع توجه کافی صورت گیرد. در آینده در این مورد بیشتر بحث خواهیم کرد.
بخش دوم رزرو شده هم در انتهای حافظه از آدرس FFFF0H الی FFFFFH است، یعنی دومین ناحیه رزرو شده حافظه، شانزده بایت انتهایی حافظه است. این ناحیه برای RESET سیستم در نظر گرفته شده و ریزپردازنده پس از عمل RESET به این ناحیه مراجعه می نماید. در این مورد نیز بعدا توضیحات کامل داده خواهد شد.
دیدیم که ریزپردازنده 8088/8086 حداکثر تا 2 به توان 20 حالت آدرس دهی می تواند داشته باشد (یک مگابایت حافظه خارجی را می تواند آدرس دهی نماید) که برای استفاده در برنامه نویسی به قطعات 64 کیلوبایتی تفکیک می شود و همزمان می توان به چهار قطعه دسترسی داشت که هر قطعه با یک ثبات آدرس دهی می شود و این قطعات، الزاما نواحی جدا از هم نخواهند بود. قبل از ادامه بحث ضروری است ذکر شود غیر از این تقسیم بندی، حافظه 8086 (و نه 8088) به دوقسمت با آدرس های زوج و فرد نیز تقسیم می شود که این تقسیم بندی حافظه، از نظر سخت افزاری بوده و بعدا مورد بررسی قرار خواهد گرفت (در سایر مقالات میکرو رایانه جستجو کنید) و به بحث فعلی ارتباط پیدا نمی کند.
اینک با این مقدمه به بررسی نحوه ذخیره سازی اطلاعات در حافظه 8088/8086 می پردازیم. فضاهای حافظه را در واقع می توان یک آرایه ای در نظر گرفت که در هر خانه آن 8 بیت می تواند قرار گیرد. وقتی یک محلی از حافظه آدرس دهی می شود 8 بیت داده در آن محل مستقیما دسترس پذیر است. شاید اولین سوالی که به نظر بیاید اینکه چرا هر محل حافظه در این سیستم 16 بیتی انتخاب نشده است؟ دلیل آن کاملا واضح است: چون داده های 8 بیتی نیز در سیستم می توان استفاده کرد، در این صورت با فرض استفاده از داده های 8 بیتی از فضای حافظه استفاده بهینه نخواهد شد.
قطعه بندی حافظه
با توجه به اینکه برای به دست آوردن آدرس 20 بیتی همواره محتویات یک ثبات قطعه با 16 بیت آدرس موثر ترکیب می گردد، لذا عملا با استفاده از این روش همه جای حافظه یک مگابایتی را می توان آدرس دهی کرد.
همانطوریکه ذکر شد محتویات یک ثبات قطعه در واقع، شروع یک قطعه حافظه را مشخص می سازد. (در فهرست مقالات سایت میکرو رایانه جستجو کنید) به عنوان مثال اگر محتویات ثبات CS را برابر 1A54H فرض کنیم، این بدان معنی است که ثبات قطعه CS شروع یک قطعه حافظه را مشخص می سازد و اولین محل این قطعه ی حافظه از ترکیب محتویات ثبات CS با عدد صفر (آدرس موثر 0000H) به دست می آید که آدرس فیزیکی 1A540H خواهد بود و آخرین محل این قطعهء حافظه نیز آدرسی است که CS با عدد FFFFH (حداکثر مقداری که آدرس موثر می تواند انتخاب شود) ترکیب می شود که این عدد به عنوان آخرین آدرس فیزیکی این قطعه خاص، برابر 2A53FH خواهد بود:
ثبات های قطعه مشابه ثبات های آدرس در سایر پردازنده ها هستند که برای آدرس دهی حافظه به کار برده می شوند. همانطوریکه اشاره شد در ریزپردازنده 8086/8088 کاربرد ثبات های قطعه برای به دست آوردن آدرس فیزیکی حافظه است. برای به دست آوردن آدرس واقعی (یا فیزیکی) حافظه، محتویات ثبات قطعه با مقدار آدرس موثر (offset) جمع می شود. چگونگی این جمع در بخش آدرس فیزیکی ذکر شد. (در فهرست مقالات سایت میکرو رایانه جستجو کنید) پس این ثبات ها در آدرس دهی دستگاه های ورودی - خروجی هیچ نقشی ندارند.
در ریزپردازنده 8086/8088 چهار ثبات قطعه وجود دارد که بنام های CS , DS , SS و ES هستند. هر ثبات قطعه یک بلوک 64 کیلو بایتی از حافظه 8086/8088 را آدرس دهی می کند. بدیهی است که ثبات های قطعه می توانند بلوک هایی را که باهم محل های اشتراک دارند، نیز آدرس دهی نمایند. به دلیل آنکه ریزپردازنده 8086/8088 دارای چهار ثبات قطعه است، پس در هر زمان می تواند به چهار قطعه 64 کیلوبایتی از حافظه دسترسی داشته باشد (آدرس دهی نماید).
ریزپردازنده 8086/8088 دارای 20 خط آدرس است (گذرگاه آدرس 20 بیتی است) و لذا می تواند حداکثر تا 2 به توان 20 بایت یا یک مگا بایت (1048576 بایت) حافظه را آدرس دهی نماید. پس در داخل ریزپردازنده نیاز به 20 بیت اطلاعات آدرس وجود دارد. ولی دیدیم که تمام ثبات های آن؛ از جمله ثبات های اشاره گر؛ 16 بیتی است. در داخل ریزپردازنده و در برنامه نویسی، آدرس دهی 20 بیتی مورد نیاز است و باید بتوان این 20 بیت را در داخل ثبات ها جای داد.
برای به دست آوردن 20 بیت اطلاعات آدرس و قرار دادن آن روی خطوط (پایه ها) ریزپردازنده، از روش خاصی استفاده شده است، که در اینجا به شرح آن می پردازیم:
در ریزپردازنده 8086/8088 برای به دست آوردن حداکثر فضای آدرس دهی حافظه تا یک مگابایت(توضیح بیشتر: در فهرست مقالات میکرو رایانه جستجو کنید)، دو آدرس 16 بیتی باهم ترکیب می شوند. یکی از آدرس ها همواره محتویات یکی از ثبات های قطعه است و آدرس دیگر نیز یک آدرس 16 بیتی است؛ که از آن به عنوان آدرس موثر نام برده می شود و به عنوان offset با محتویات ثبات قطعه ترکیب می شود. آدرس موثر می تواند محتویات هرکدام از ثبات های اشاره گر باشد یا به روش های دیگر به دست آید.
ثبات پرچم ها در ریزپردازنده 8086/8088 نیز همانند سایر ثباتهای آن 16 بیتی است. تک تک بیت های آن به صورت مستقل تحت تاثیر عملیات محاسباتی یا منطقی قرار می گیرند که در ALU انجام می شود. البته 3 بیت پرچم کنترلی هم در آن قرار داده شده که می توان آنها را صفر و یا یک نمود و دستوراتی در ریزپردازنده وجود دارد که با توجه به مقادیر این سه بیت کارهای متفاوتی انجام می دهند.

همانطوریکه در شکل مشاهده می شود فقط 9 بیت از 16 بیت ثبات پرچم ها استفاده شده و بقیه آنها بلااستفاده است و به صورت عادی موقع خوانده شدن صفر خوانده می شود. از نظر ساختمان ثبات پرچم ها، این بیت ها طوری در نظر گرفته شده اند که 8 بیت کم ارزش آن با بیت های ثبات پرچم ها در 8085 یکسان و سازگار باشد.
| ||||||||||||||||||||||||||||||||||||||||||
رویداد ها: روز بزرگداشت ملاصدرا - روز بهره وری و بهینه سازی مصرف |