View Full Version : مقدار دهی ثبات DS در زمان اجرای برنامه
alirah84
شنبه 20 اردیبهشت 1393, 19:22 عصر
دوخط Mov AX,DTSEG و Mov DS,AX ثبات DS را در زمان اجرای برنامه مقداردهی میکنند. در صورتی که این کار باید توسط سیستم عامل انجام شود.چرا این مسئله وجود دارد و چرا این مقدار دهی برای SS و CS وجود ندارد؟
vahid-p
یک شنبه 21 اردیبهشت 1393, 00:20 صبح
از اونجایی که استک همیشه مشخصه و محدودش و همه چیز و اگر جابه جا بشه یا کدها رو خراب میککنه یا عملکردش مختل میشه، پس نمیشه تغییرش داد.
CS هم که از اول برنامه شروع میشه. یعنی مقدار دهی نمیخواد.
اما DS قضیش متفاوته. ما خیلی جاها مثلا برای دستورهای MOVSB که یک رشته ای از داده ها رو از DS:SI به ES:DI منتقل میکنه نیاز داریم تا جای DS با ES و... عوض کنیم و این مقدار دهی لازمه. اما CS:IP که کد رو اجرا میکنند از دستورات مهمی هستند که عملکرد برنامه بهشون وابستست. و شما فقط با jmp یا jmp far میتونید به آدرس های دیگری از برنامه خودتان دسترسی داشته باشید.
این دلایلی بود که من به ذهنم اومد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.