واضح آرشیو وب فارسی:سایت ریسک: stack در برنامه های اسمبلی ارام فارسی 23 آذر 1385, 08:59سلام دوستان .لطف کنید برای من توضیح بدید،وقتی در برنامه های اسمبلی یک سگمنت را به عنوان استک در برنامه در نظر میگیریم ،چه کنترل هایی روی ان صورت میگیرد.ایا روی این قسمت از حافظه داده ها با مدلlifo وارد و خارج میشوند و چه برنامه ای ناظر است بر مدل ورود و خروج اطلاعات از استک. لطف کنید هر کسی راجع به استک هر چیز دیگری هم می دونه برام بذاره. mr30 saalek110 23 آذر 1385, 13:02با سلام من اطلاعات زیادی ندارم در این مورد ولی نظرم را می گویم شاید مفید باشد. وقتی ما دستور : mov ah,al را اجرا می کنیم چگونگی اجرا برمی گردد به ساختار سخت افزاری داخل cpu . یعنی مداراتی داخل cpu ساخته شده که با ارسال کدهای mov ah,al باعث انتقال محتویات یک قسمت به یک قسمت دیگر می شود. یعنی صحبت اتصالات مدارها است. یعنی واقعا با ارتباط بین حافظه ها از داخل سیم ها اطلاعات با فورس دستور mov ah,al منتقل می شود. Cpu هر دستوری آن را وادار می کند تا کانالهایی را باز بکند تا حافظه ای به حافظه دیگر جریان پیدا کند. در مورد دستور push و pop هم این اجازه جریان اطلاعات بین حافظه های داخل cpu و داخل ram است که به داخل ram به جایی که پشته تعریف شده اطلاعات رفت و برگشت می کند. این هم به نظر من برمی گردد به سخت افزار. یعنی وقتی برنامه ای اجرا می شود در مرحله ای مسیر پشته با نگاه به مدل برنامه تعیین می شود. و در زمان اجرای برامه مسیر پشته همین باقی می ماند. و بعد اجرای برنامه حالا dos و windows چه استفاده ای از پشته می کنند دیگر بحث دیگری است و من تقریبا در این مورد فعلا هیچ نمی دانم. مسلما با اولین سرچ کلی مطلب پیدا میشه در این مورد. من بدون تحقیق جملات بالا را نوشم. saalek110 23 آذر 1385, 14:52 فکر کنم مقداری مطلب مناسب در این سایت بیابید. ====================== در این وبلاگ هم گویا نویسنده می خواسته cpu بسازد و رسیده به قسمت طراحی stack آن. مسائلی که بحث کرده فکر کنم به بحث این تاپیک کمک کند. البته شاید من سئوال را خوب متوجه نشده باشم. ارام فارسی 26 آذر 1385, 17:59خیلی متشکر از راهنمایی و توجه شما. سوال دقیقا این هست که ،توی یک برنامه ی exe وقتی که یک سگمنت را استک تعریف میکنیم،cpu برای انجام عملیاتی که اصلا ارتباطی به ما ندارد،از استک استفاده میکند و با ان push و pop میکند.تا اینجا همه چیز مرتب است.اما وقتی که یک برنامه ی com داریم وh100 خانه ی اول سگمنت داده را خالی گذاشتیم، سی پی یو برای انجام عملیات مربوط به خود چطور از همان 100h خانه حافظه سگمنت داده استفاده میکند؟ خیلی ممنون. saalek110 26 آذر 1385, 19:37با سلام. ببینید در برنامه های exe قطعه پشته در قطعه جداگانه ای است. ولی در برنامه com از انتهای همان ((تک قطعه)) استفاده میشه. در برنامه های com فرض کنید شما در یک سالن دراز دفتر کار دارید. اجناسی که فعلا نیاز ندارید را به کارگر خود می گویید برود از ته سالن بچیند و همین طور بیاید جلو. و دفتر شما در این تالار دراز ته تالار نیست بلکه این سر تالار جلوی در است . یعنی پشته در آن 100h نیست. آن 100h برای کارهای دیگری است که چیزهایی مثل دیسکریپشن فایل و ...... است که بحثی نداریم روی آن. برای تمرین دو فایل یکی exe و یکی com بسازید. داخل هر دو فایل 5 تا push بگذارید. بعد فایلها را در دیباگ ویندوز باز کنید و به sp و ss نگاه کنید. با دستور t یکی یکی دستورات push را اجرا کنید و ببینید sp چه تغییری می کند. در فایلهای com ما می بینیم که cs & ss & ds & es همه برابرند. یعنی قطعه ها یکی است. پس کارها در قسمتهای مختلف همان تک پشته انجام می شود.
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4238]