مباحث آموزشی ICDL در سایت

آشنایی با شگردها و روشهای رتبه بندی سایتها به وسیله موتورهای جستجو و طراحی سایت با در نظر گرفتن این روش ها باعث افزایش رتبه و رنکینگ سایت در موتورهای جستجو می شود. توضیحات بیشتر را در بخشهای ذیربط مطالعه فرمایید.

سایتها و حتی صفحات وب سایت ها یا وبلاگهایی که دارای رتبه و رنکینگ بالایی در موتور جستجوی گوگل هستند، در زمان سرچ کاربران جزء اولین پیشنهادهای گوگل ظاهر می شوند و بنابراین تعداد بازدیدکنندگان و مراجعان این سایتها بالاتر از مراجعات به وب سایتها یا وبلاگ هایی خواهد بود که رتبه و رنکینک سایت آنها کمتر و پایین تر است.

مقالات و مباحث برگزیده سایت:

تبلیغات

ساخت و طراحی سایت

تبلیغات در سایت

فهرست های مقالات

اکثریت بازدید کنندگان سایتها از طریق موتورهای جستجو به آنها دسترسی پیدا می کنند. به همین دلیل رتبه یک سایت در نزد موتورهای جستجوگر، اهمیت زیادی در دنیای وب و اینترنت دارد.

افزایش رتبه سایت

اگر کدهای یک سایت دارای خطا باشد از دید موتورهای جستجو در اولویت و اهمیت پایین تری نسبت به سایت های مشابه قرار می گیرد.

سایر مباحث سایت

تبلیغات

بورس کالا

سایت سهام و بورس

حافظه پشته در ریزپردازنده 8088-8086

نویسنده: محمدتقی زرین

حافظه پشته در ریزپردازنده 8088-8086

در بخش مقدماتی در مورد حافظه پشته به اختصار توضیح داده شد و دیدیم حافظه پشته (Stack) در واقع بخشی از حافظه است که عملکرد آن صورت صف LIFO می باشد. در ریزپردازنده 8088/8086 حافظه پشته بخشی از حافظه اصلی سیستم است که به وسیله ثبات قطعه پشته (SS) آدرس دهی می شود. بنابراین حداکثر طول یک حافظه پشته برابر 64 کیلو بایت خواهد بود. (در نظر داشته باشید که طول یک قطعه حافظه برابر 64 کیلو بایت است) البته نکته مهم آنکه محتویات ثبات قطعه پشته را هم می توان تغییر داد یعنی تعداد پشته های سیستم محدود نبوده و در واقع ثبات SS بیانگر شروع یک قطعه حافظه به نام پشته است. ولی در هر زمان فقط یک پشته دسترس پذیر است. به همین دلیل اینجا برای ساده تر شدن بحث قرارداد می کنیم که فقط همان را به عنوان حافظه پشته در نظر بگیریم، یعنی بخشی از حافظه را که با محتویات جاری ثبات SS می توان دستیابی کرد.

در برنامه نویسی 8088/8086 به دو طریق می توان به حافظه پشته دسترسی پیدا کرد: یکی از طریق ثبات SP و دیگری از طریق آدرس دهی حافظه با ثبات BP. با استفاده از روش آدرس دهی از طریق ثبات BP ، تمام محل های حافظه پشته را می توان همانند محل های دیگر حافظه تلقی نمود و به راحتی به تک تک محل های آن دسترسی پیدا کرد، که در این بحث فعلا کاری با آن نداریم و بعدا مورد بررسی قرار خواهیم داد. (در فهرست مقالات سایت میکرو رایانه جستجو کنید) آنچه در اینجا بررسی می کنیم دستیابی به حافظه پشته از طریق SP است.

قبلا دیدیم که در حالت کلی ثبات SP آدرس بالای حافظه پشته را در بر دارد و به آخرین داده ایی که در پشته وارد شده اشاره می کند. با توجه به مفهوم آدرس دهی حافظه که در 8088/8086 وجود دارد، تاکید بر این نکته ضروری است که در این ریزپردازنده SP دارای آدرس موثر بالای حافظه پشته (آخرین داده وارد شده) است و ثبات قطعه مورد استفاده در آدرس دهی ثبات SS است.

همانند بسیاری از پردازنده ها، SP با رشد منفی آدرس های حافظه، رشد می یابد. به عبارت واضح تر در این ریزپردازنده وقتی بحث از حافظه پشته به میان می آید، آدرس محل بعدی که قرار است داده ی جدیدی در آن وارد شود، دارای آدرس کمتری از محل فعلی خواهد بود. به این ترتیب حافظه پشته از آدرس بالاتر شروع شده و به ترتیب آدرس های آن کم می شود تا به حدپایینی آدرس برسد. توجه به این نکته ضروری است که کاهش آدرس در موقع نوشتن داده ها در بالای حافظه پشته اتفاق می افتد (عمل PUSH) و بدیهی است که در موقع خواندن داده ها (POP) تغییر آدرس ها معکوس و افزایشی است، البته چون در حین POP پشته رشد نیافته و از طول پشته کم می شود، به همین دلیل همچنان همان تعریف (که رشد آدرس ها منفی است) به قوت خود باقی خواهد بود.

حافظه استک در ریزپردازنده 8086-8088

بالای حافظه پشته که به اختصار TOS نامیده می شود (Top Of Stack)، در واقع محلی است که آخرین داده وارد شده به پشته در آنجا قرار دارد و به اصطلاح آن محل حافظه ی پشته، پُر است و اگر داده جدیدی بخواهد وارد پشته گردد باید ابتدا این آدرس کاهش یابد تا به محل جدید دسترسی به وجود آید و بعد داده جدید در آنجا وارد شود (PUSH). این آدرس TOS در ریزپردازنده 8088/8086 از ترکیب محتویات دو ثبات SS و SP به وجود می آید (SS:SP) که ثبات SP آدرس موثر TOP را در خود دارد. توجه داشته باشید که این محل را با حد بالای حافظه پشته؛ که مشخص کننده آخرین محلی است که داده ها در آن محل به عنوان حافظه پشته می توانند قرار گیرند و بعد از آن محل حافظه پشته وجود ندارد؛ اشتباه نکنید.

در بخش «چگونگی ذخیره داده ها در حافظه» در مورد ذخیره سازی داده های 16 بیتی در حافظه بحث کردیم و دیدیم که در حالت کلی برای ذخیره داده های 16 بیتی، هشت بیت کم ارزش داده ها در آدرس کوچکتر و هشت بیت پرارزش آنها در آدرس بزرگتر ذخیره می شود. (در فهرست مقالات سایت میکرو رایانه جستجو کنید) حال می خواهیم نحوه ذخیره سازی داده ها در حافظه پشته را مورد بررسی قرار دهیم.

چگونگی ذخیره داده ها در حافظه پشته*

همانطوریکه اشاره شد در حافظه پشته موقع ذخیره سازی داده ها (PUSH) رشد آدرس ها منفی است و مقدار SP کاهش می یابد و نیز بعدا خواهیم دید دستورالعمل هایی که به بالای حافظه پشته دسترسی دارند، فقط می توانند 16 بیت داده را جابجا نمایند. بنابراین برای هر بار ذخیره داده ها در حافظه پشته لازم است ابتدا مقدار SP دو واحد کم شده و بعد با همان قراردادی که در مورد ذخیره سازی داده ها بحث کردیم، 16 بیت داده مورد نظر در محل جدید نوشته شود.

پس به طور خلاصه برای وارد نمودن یک داده 16 بیتی می توان اعمال زیر را به ترتیب در نظر گرفت:

1- ابتدا مقدار SP دو واحد کم می شود. بنابر این ثبات SP (آدرس فیزیکی SS:SP) به محل جدید و خالی در حافظه پشته اشاره می کند.

2- 16 بیت داده مورد نظر در این آدرس جدید حافظه پشته، نوشته می شود. نحوه نوشتن نیز به همان ترتیب نوشتن در حافظه در حالت کلی است یعنی هشت بیت کم ارزش در آدرس کوچکتر و هشت بیت پرارزش در آدرس بزرگتر نوشته می شود.

بعد از پایان عملیات انتقال داده به پشته، SP به آخرین داده ایی که در آنجا قرار داده شده ، اشاره خواهد کرد. (ویژگی پشته: LIFO)

مثال1) به عنوان مثال حافظه پشته شکل زیر را در نظر بگیرید:

نوشته در حافظه پشته در ریزپردازنده 8088-8086 push

در این شکل ابتدا آدرس بالای حافظه پشته برابر 1150:0006H است. اگر بخواهیم 16 بیت داده موجود در ثبات BX (یعنی عدد 6255H) را در حافظه پشته شکل (1-الف) وارد کنیم (PUSH)، شکل (1-ب) به دست می آید. همانطوریکه می بینید اول TOS جدید محاسبه شده و بعد محتویات ثبات BX به ترتیبی که ذکر آن گذشت در محل TOS جدید وارد شده است.

چگونگی خواندن داده ها از حافظه پشته*

بدیهی است که برای خواندن داده ها از حافظه پشته (عمل POP) ، عملیات خواندن برعکس عملیات نوشتن انجام گیرد. اولین و مهمترین آن رشد آدرس هاست. به این معنی که موقع خواندن داده ها از حافظه پشته، رشد آدرس ها مثبت خواهد بود (معکوس حالت قبلی). دومین نکته آن است که در هر حال SP به آخرین داده ی 16 بیتی اشاره می کند و لذا لازم است ابتدا داده ی مورد نظر خوانده شده و بعد مقدار SP تصحیح (افزایش) یابد.

بنابراین خلاصه عملیات در این حالت برای خواندن یک داده 16 بیتی به شرح زیر است:

1- ترکیب دو آدرس SS:SP ، یک آدرس فیزیکی حافظه پشته را مشخص می کند. (به توضیح آدرس فیزیکی در فهرست مقالات سایت میکرو رایانه مراجعه کنید.) بنابراین 16 بیت داده از این آدرس و طبق آنچه که قبلا دیدیم، خوانده می شود. (هشت بیت کم ارزش از آدرس کوچکتر و هشت بیت پرارزش از آدرس بزرگتر خوانده می شود.)

2- محتویات ثبات SP دو واحد افزایش می یابد و بنابراین ترکیب SS:SP به محل جدیدی اشاره خواهد کرد که TOS جدید است.

مثال 2) به عنوان مثال حافظه پشته شکل زیر را در نظر بگیرید:

خواندن دیتا از حافظه پشته ریزپردازنده 8088-8086 pop

در این شکل ابتدا آدرس بالای حافظه پشته برابر 1150:0002H است. یعنی TOS فعلی به آخرین داده اشاره می کند. پس ابتدا از این آدرس 16 بیت داده به ترتیبی که گفته شد خوانده شده و در ثبات AX وارد می شود. بعد از آن مقدار TOS دو واحد افزوده شده و مطابق شکل برابر 1150:0004H خواهد شد. توجه کنید همانطوریکه در شکل معلوم است داده خوانده شده همچنان در حافظه باقی مانده ولی دیگر از طریق TOS نمی توان به آن دسترسی داشت.
-------------------------------------
* تاکید می شود که این مطلب صرفا برای حالتی که آدرس دهی از طریق SP بوده و از طریق دستوراتی نظیر PUSH ، CALL ، INT و غیره به بالای حافظه پشته دسترسی داریم، صادق است.


تاریخ ویرایش مقاله: 21/2/1386


Valid CSS2 Valid XHTML 1.0
طراحی سایت : میکرو رایانه