Visits: 17
دیدیم که ریزپردازنده 8088/8086 حداکثر تا 2 به توان 20 حالت آدرس دهی می تواند داشته باشد (یک مگابایت حافظه خارجی را می تواند آدرس دهی نماید) که برای استفاده در برنامه نویسی به قطعات 64 کیلوبایتی تفکیک می شود و همزمان می توان به چهار قطعه دسترسی داشت که هر قطعه با یک ثبات آدرس دهی می شود و این قطعات، الزاما نواحی جدا از هم نخواهند بود. قبل از ادامه بحث ضروری است ذکر شود غیر از این تقسیم بندی، حافظه 8086 (و نه 8088) به دوقسمت با آدرس های زوج و فرد نیز تقسیم می شود که این تقسیم بندی حافظه، از نظر سخت افزاری بوده و بعدا مورد بررسی قرار خواهد گرفت (در سایر مقالات میکرو رایانه جستجو کنید) و به بحث فعلی ارتباط پیدا نمی کند.
اینک با این مقدمه به بررسی نحوه ذخیره سازی اطلاعات در حافظه 8088/8086 می پردازیم. فضاهای حافظه را در واقع می توان یک آرایه ای در نظر گرفت که در هر خانه آن 8 بیت می تواند قرار گیرد. وقتی یک محلی از حافظه آدرس دهی می شود 8 بیت داده در آن محل مستقیما دسترس پذیر است. شاید اولین سوالی که به نظر بیاید اینکه چرا هر محل حافظه در این سیستم 16 بیتی انتخاب نشده است؟ دلیل آن کاملا واضح است: چون داده های 8 بیتی نیز در سیستم می توان استفاده کرد، در این صورت با فرض استفاده از داده های 8 بیتی از فضای حافظه استفاده بهینه نخواهد شد.
حال این سوال پیش می آید که اگر داده مورد نظر 16 بیتی و یا بیشتر باشد، بقیه از کدامین آدرس دستیابی خواهند شد؟ در جواب این سوال باید گفت که داده های بعدی نیز از آدرس های بعد دستیابی خواهند شد البته شاید مطلب بدیهی به نظر می رسد ولی نکته اصلی توجه به نحوه ورود و نوشتن داده 16 بیتی به حافظه است: هشت بیت کم ارزش داده ها همواره در آدرس کوچکتر و هشت بیت پرارزش در آدرس بزرگتر قرار خواهد گرفت. بنابر این موقع خواندن از حافظه نیز باید به این قرارداد دقت کرد.
مثلا اگر بخواهیم عدد 325AH را در آدرس 10FA2H حافظه قرار دهیم، هشت بیت کم ارزش آن یعنی عدد 5AH در محل 10FA2H و هشت بیت پرارزش آن یعنی عدد 32H در آدرس 10FA3H قرار خواهد گرفت.
برای خواندن از حافظه نیز باید همین قاعده رعایت گردد. یعنی مثلا اگر بخواهیم در شکل فوق؛ از محل 10FA3H حافظه، شانزده بیت داده را خوانده و در ثبات AX ذخیره کنیم، پس از خوانده شدن حافظه محتویات AL (هشت بیت کم ارزش) برابر 32H و محتویات AH (هشت بیت پرارزش) برابر 63H خواهد بود. بدیهی است که محتویات مبدا تغییری نمی کند.
منبع: microrayaneh.com