close
دانلود فیلم
توضیحات کامل در مورد

ثبات SP

ثبات های SS و SP به پشته به صورت SS:SP به پشته اشاره می کنند. در هنگام اجرای يک برنامه EXE ثبات SS توسط سيستم عامل برابر آدرس سگمنتی که پشته را در بردارد و ثبات SP برابر آفست بالای پشته می شود. يعنی آدرس جائی از پشته که داده بايد برداشته شود.

پشته به صورت معکوس در حافظه رشد می کند(يعنی به سمت آدرس های کمتر). وقتی يک کلمه در پشته اضافه می شود در آدرس SS:SP ذخيره می شود و از SP دو واحد کم می شود. دستور push مقدار SP را کاهش و دستور pop مقدار SP را افزايش می دهد.

هنگامی که يک کلمه در پشته push شود عمليات زير توسط CPU انجام می شود:

1. دو واحد از ثبات SP کم می شود.
2. کلمه مورد نظر در آدرس SS:SP کپی می شود.

هنگامی که يک کلمه از پشته pop شود عمليات زير توسط CPU انجام می شود:

1. از آدرسSS:SP يک کلمه خوانده می شود.
2. دو واحد به ثبات SP اضافه می شود.


مثال. فرض کنيد مقدار اوليه SP برابر با 1000h است.

push word 1 ;1 stored at 0FFEh, SP = 0FFEh
push word 2 ;2 stored at 0FFCh, SP = 0FFCh
push word 3 ;3 stored at 0FFAh, SP = 0FFAh
pop AX ;AX = 3, SP = 0FFCh
pop BX ;BX = 2, SP = 0FFEh
pop CX ;CX = 1, SP = 1000h


هنگام فراخوانی زير برنامه توسط دستور call مقدار ثبات های CS و IP که به دستورالعمل بعدی اشاره می کنند در پشته ذخيره می شود. هنگامی که CPU در زير برنامه به دستور ret می رسد مقادير را از پشته حذف و به ثبات های CS و IP برمی گرداند.


مثال. شکل زير وضعيت پشته را قبل و بعد از انجام دستور Call 3C10:0720 نشان می دهد.

اسمبلی

به کانال تلگرام سایت ما بپیوندید