View Full Version : سوال: بزرگ شدن صفحه ی خروجی بعد از باز کردن فایل اجرایی
فاطمه_14
دوشنبه 26 دی 1390, 15:44 عصر
سلام
من به صورت 16 بیتی کار می کنم
فایلی رو که تو notepad ایجاد کردم بعد از کامپایل و ایجاد فایل اجرایی در محیط cmd.می خوام فایل اجرایی رو وقتی باز میکنم صفحه ی خروجی خودبه خود بزرگ بشه
وقتی با وقفه برنامه رو به محیط گرافیکی می بریم هنگام باز کردن فایل اجرایی صفحه ی خروجی بزرگ می شه چرا؟
shahmohammadi
دوشنبه 26 دی 1390, 16:48 عصر
سلام.
وقفه ها یه چیزی مستقل از ویندوز و سیستم عامل های دیگه هست، و نمی دونند که پنجره ای که ویندوز برای برنامه باز کرده یعنی چی و از کجا به کجاست. حالت گرافیکی هم همینطور. اینها رو کارخانه سازنده کامپیوتر تعریف کرده.
بنا بر این اصلا نمی شه که توی پنجره کوچک این برنامه رو نوشت.
IamOverlord
دوشنبه 26 دی 1390, 18:38 عصر
شما باید Win32 Assembly کار کنی : win32assembly.online.fr/tutorials.html. این جور کارا در محیط 16 نمی شه چون نمی تونی با Windows تعامل داشته باشی.
kamran_14
دوشنبه 26 دی 1390, 18:56 عصر
سلام.
وقفه ها یه چیزی مستقل از ویندوز و سیستم عامل های دیگه هست، و نمی دونند که پنجره ای که ویندوز برای برنامه باز کرده یعنی چی و از کجا به کجاست. حالت گرافیکی هم همینطور. اینها رو کارخانه سازنده کامپیوتر تعریف کرده
می شه واضح تر توضیح بدید؟
IamOverlord
دوشنبه 26 دی 1390, 21:01 عصر
سلام.
می شه واضح تر توضیح بدید؟
برنامه های 16 بیتی Assembly که می نویسیم مثلا با TASM، در محیط Windows شبیه سازی می شوند. برای اجرای واقعی اونا باید در سخت افزار اجرا بشن. اما Windows اونا رو شبیه سازی می کنه و به همین دلیل هست که چند تا برنامه ی 16 بیتی، مختلف هم زمان اجرا می شن بدون این که با هم تداخلی داشته باشن؛ که این بر خلاف فلسفه ی Real Mode (http://en.wikipedia.org/wiki/Real_mode) هست. چون در Real Mode، برنامه نویس از Multitasking محروم هست، اما در Protected Mode (http://www.internals.com/articles/protmode/introduction.htm) نه، و Windows هم در Protected Mode اجرا می شه، پس می تونه چند تا برنامه ی Real Mode رو شبیه سازی کنه و به طور Multitask اجرا کنه. اما اگر بحث شبیه سازی اجرای برنامه های قدیمی نباشه، بحث API های Windows می آد وسط، که این ها زیربرنامه هایی هستند که دقیقا اجرا می شن و بحث شبیه سازی مطرح نیست. در این جاست که شما می تونی با Windows تعامل داشته باشی، اما نه با Assembly که 16 بیتی باشه، مثلا با MASM می شه این جور برنامه های Assembly نوشت. یعنی برنامه های Assembly که برای خودشون پنجره باز کنن و به هر اندازه ای که می خوان در بیارن، حتی قابلیتی هست که پنجره ی Console هم باز کنی در محیطی کاملا جدید، یعنی پنجره های Console ات ظاهرا قدیمی اند، در صورتی که با توابع API پیاده سازی می شن و با اون بحث شبیه سازی که گفتم فرق داره. در این حالت شما می تونی پنجره ی خودت و حتی پنجره های دیگه رو دست کاری کنی، و و و ... .
xman_1365_x
سه شنبه 27 دی 1390, 01:57 صبح
سلام
من به صورت 16 بیتی کار می کنم
فایلی رو که تو notepad ایجاد کردم بعد از کامپایل و ایجاد فایل اجرایی در محیط cmd.می خوام فایل اجرایی رو وقتی باز میکنم صفحه ی خروجی خودبه خود بزرگ بشه
وقتی با وقفه برنامه رو به محیط گرافیکی می بریم هنگام باز کردن فایل اجرایی صفحه ی خروجی بزرگ می شه چرا؟
چون در ويندوز اجرا ميكنيد شبيه ساز براي وقفه گرافيك مد رو تمام صفحه ميكنه براي اين كار رزولوشن رو تغيير ميده اما براي تكست نه
براي مد تكست هم در xp ميتونيد بعد اجراي خط فرمان با كليك راست و انتخاب peroperties از تب fullscreen , option را انتخاب كنيد
و در داس كه تمام صفحه هست فقط رزولوشن متغير!
موفق باشي
kamran_14
سه شنبه 27 دی 1390, 18:40 عصر
چون در ويندوز اجرا ميكنيد شبيه ساز براي وقفه گرافيك مد رو تمام صفحه ميكنه براي اين كار رزولوشن رو تغيير ميده اما براي تكست نه
براي مد تكست هم در xp ميتونيد بعد اجراي خط فرمان با كليك راست و انتخاب peroperties از تب fullscreen , option را انتخاب كنيد
و در داس كه تمام صفحه هست فقط رزولوشن متغير!
سلام دوستان
منظور از شبیه ساز چیه؟
IamOverlord
سه شنبه 27 دی 1390, 19:46 عصر
منظور از شبیه سازی کاریه که سیستم عامل برای اجرای فایل های COM یا بعضی فایل های Exe انجام می ده. اگه توجه کرده باشی در Windows 7 یه Process ای به نام NTVDM.EXE برای این کار هست. دلیل شبیه سازیشون هم این هست که Windows خودش داره رو سخت افزار اجرا می شه و اگه واقعا اون فایل ها بخوان اجرا بشن، سیستم عامل باید بره کنار و کنترل رو بده به اونا، مثل سیستم عامل DOS. اما Windows اونا رو داخل خودش شبیه سازی می کنه و ... اما برنامه هایی که شبی سازی نمی شن، مثل برنامه های عادی Windows، اینا در Ring های مختلف CPU اجرا می شن. البته Application ها در Ring 3 هستند.
یه شبیه سازی دیگه هم هست که برای اجرای سیستم عامل ها به طور مجازی هست که اون قضیه اش با این فرق داره.
xman_1365_x
چهارشنبه 28 دی 1390, 07:10 صبح
منظور از شبیه ساز چیه؟ شبيه سازي دستورات در ويندوز كه در مد حفاظت شده هست و حافظه به صورت فلت و دستورات به صورت 32 بيتي هستند
مالتي ترد و مولتي تسك و پارتيشن هاي fat32 , ntfs و ... حالا براي اجرا در اين سيستم متفاوت بايد همه مزيت ها 16 بيتي 8086 و 80286
در پردازنده هاي 80386 به بعد شبيه سازي بشه حتي براي سيستم عامل 64 بيتي بايد 32 بيتي ها شبيه سازي بشه كه در ويندوز wow64 اين كارو ميكنه
(اين شبيه سازي به دليل پردازنده كه بكوارد كامپتيبل هست امكان پذير ميشه)
اطلاعات بيشتر:
Windows on Windows (http://en.wikipedia.org/wiki/Windows_on_Windows)
Virtual DOS machine (http://en.wikipedia.org/wiki/Virtual_DOS_machine)
MS-DOS (http://en.wikipedia.org/wiki/MS-DOS)
What is the difference between MS-DOS and Windows? (http://wiki.answers.com/Q/What_is_the_difference_between_MS-DOS_and_Windows)
WoW64 (http://en.wikipedia.org/wiki/WoW64)
Running 32-bit Applications (http://msdn.microsoft.com/en-us/library/aa384249%28v=vs.85%29.aspx)
موفق باشيد.
shahmohammadi
چهارشنبه 28 دی 1390, 12:19 عصر
خوب حالا وقتی توی ویندوز وقفه ها رو فراخوانی می کنیم، دقیقا اون وقفه اجرا می شه یا یه دستورات دیگه. یعنی دقیقا سی پی یو از بایوس می خاد که این دستورات رو اجرا کنه یا اینکه یه مجموعه دستوراتی که در ویندوز هست اجرا میشه.
یه سوال دیگه هم در مورد نحوه خوندن از هارد دیسک توی ویندوز داشتم که به همین موضوع مربوط می شه. من تمام دستورات اسمبلی رو نگاه کردم هیچ دستوری نیست که سی پی یو بتونه از هارد اطلاعات رو بگیره. تنها راه استفاده از وقفه هاست (یعنی کمک گرفتن از یه coprocessor). حالا با توجه بر این که در حالت محافظت شده نمی شه از وقفه ها استفاده کرد پس ویندوز چطوری میاد از هارد اطلاعات رو می خونه و API هایی رو که از هارد اطلاعات رو می خونند چطوری نوشته شدند.
IamOverlord
چهارشنبه 28 دی 1390, 12:49 عصر
خوب حالا وقتی توی ویندوز وقفه ها رو فراخوانی می کنیم، دقیقا اون وقفه اجرا می شه یا یه دستورات دیگه. یعنی دقیقا سی پی یو از بایوس می خاد که این دستورات رو اجرا کنه یا اینکه یه مجموعه دستوراتی که در ویندوز هست اجرا میشه.
یه سوال دیگه هم در مورد نحوه خوندن از هارد دیسک توی ویندوز داشتم که به همین موضوع مربوط می شه. من تمام دستورات اسمبلی رو نگاه کردم هیچ دستوری نیست که سی پی یو بتونه از هارد اطلاعات رو بگیره. تنها راه استفاده از وقفه هاست (یعنی کمک گرفتن از یه coprocessor). حالا با توجه بر این که در حالت محافظت شده نمی شه از وقفه ها استفاده کرد پس ویندوز چطوری میاد از هارد اطلاعات رو می خونه و API هایی رو که از هارد اطلاعات رو می خونند چطوری نوشته شدند.
واقعا CPU از BIOS نمی خواد، به خاطر همین شبیه سازیه.
در برنامه نویسی Windows بدون استفاده از وقفه ها همه کار می شه کرد. (البته کار های شدنی :بامزه:)
اگر صرفا می خواید برای Windows برنامه نویسی کنید، باید وقفه ها رو بذارید کنار و از توابع API استفاده کنید.
MSDN : ReadFile function (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365467(v=vs.85).aspx)
یکی از بهترین منابع برای برنامه نویسی Windows همرا با مثال: Iczelion's Win32 Assembly (http://win32assembly.online.fr/)
shahmohammadi
چهارشنبه 28 دی 1390, 16:48 عصر
جواب سوال اولم رو فهمیدم. ولی در مورد سوال دوم هدف من این نبود.
اگر صرفا می خواید برای Windows برنامه نویسی کنید، باید وقفه ها رو بذارید کنار و از توابع API استفاده کنید.
قصد من این نیست. سوال من در مورد استفاده از این توابع نیست، در مورد نحوه پیاده سازی این توابع هست. می خواهم بدونم که در حالت محافظت شده چطور API ها رو نوشتند. آیا این API ها از بایوس استفاده کرده اند یا نه. مثالش هم همون خوندن از هارد هست، که این طور که من می دونم خود سی پی یو فقط با کمک گرفتن از Coprocessr هایی مثل بایوس می تونه این کارو بکنه.
برای پیدا کردن جواب این سوال خیلی جا هارو هم مطالعه کردم ولی به نتیجه این نرسیدم.
IamOverlord
چهارشنبه 28 دی 1390, 16:55 عصر
در Assembly اگه از وقفه ها استفاده نکنید (وقفه ها هم خودشون با Assembly قابل پیاده سازی هستند)، با دو دستور IN و OUT همه کار می تونید بکنید. یعنی با دو دستور IN و OUT و بدون استفاده از وقفه های جورواجور می تونید با سخت افزار صحبت کنید.
وقتی سیستم عامل وارد حالت Protected Mode می خواد بشه، قبلش وقفه ها رو غیر فعال می کنه؛ عدم استفاده از وقفه ها و برنامه نویسی ممکنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.