نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

شرح دستورات دیباگر



برنامه DEBUG (اشکال زدایی) وسیله ای برای تشخیص خطاها در زمانی که
کار با برنامه ای که به زبان ماشین ترجمه شده است. برنامه
DEBUG امکان گام برداشتن از طریق یک برنامه و
پیگیری آنچه اتفاق می افتد. برنامه DEBUG نیز هست
یکی ابزار نرم افزاری، به عنوان بخشی از DOS ارائه می شود. شما
آن را مانند هر برنامه دیگری دانلود کنید و در آن کار کنید
گفتگو با استفاده از صفحه کلید و صفحه نمایش. هنگامی که برنامه DEBUG
منتظر اقدامی از سوی کاربر است، سپس درخواست شما
با علامت "-" نشان داده می شود.

به جای لیست کردن تمام دستورات موجود در برنامه
DEBUG، از این دیباگر برای بررسی کار استفاده کنید
برنامه کامپایل شده نشان داده شده در شکل 5.13 و P5.14. در
شکل. 5.17 فهرست مربوطه را نشان می دهد.
V این مثالابتدا برنامه DEBUG فراخوانی می شود و
برنامه ای را که قرار است اشکال زدایی شود را نشان می دهد
در مورد ما، برنامه FIG5=13.EXE. بعد از برنامه DEBUG
بارگذاری می شود، برنامه در حال رفع اشکال را بارگیری می کند.
اکنون کنترل متعلق به دیباگر است و با کمک "-"
نشان می دهد که منتظر ورودی است. تا وارد شوید
دستورالعمل، هیچ اتفاقی برای برنامه نمی افتد.

دستور R محتویات تمام ثبات ها را در لحظه چاپ می کند
مربوط به بارگذاری برنامه FIG5=13 و انتقال کنترل به آن.
محتویات رجیسترها خود توضیحی است، مگر اینکه باشد
شاید مقادیر پرچم پرچم NV نشان دهنده غیبت است
سرریزها، پرچم UP - پرچم جهت و غیره هنگام برداشت
محتویات رجیسترها در سطر آخر به شرح زیر است
فرمان در حال اجرا سلول 04C5:0000 حاوی دستور PUSH DS است.
B>A:DEBUG FIG5_13.EXE

AX=0000 BX=0000 CX=0120 DX=0000 SP=FFF0 BP=0000 SI=0000 DI=0000
DS=2C26 ES=2C26 SS=2C26 CS=2C26 IP=0000 NV UP DI PL NZ NA PO NC
2C26:0000 1E PUSH D.S.

2C26:0000 1E فشار دادن D.S.
2C26:0001 B80000 MOV AX,0000
2C26:0004 50 فشار دادن تبر
2C26:0005FC CLD
2C26:0006 8CC8 MOV AX، CS
2C26:0008 8ED8 MOV DS، AX
2C26:000A 8D361D00 LEA S.I.
2C26:000EAC LODSB
2C26:000F A24000 MOV ، AL
2C26:0012 E82C00 زنگ زدن 0041
2C26:0015 803E40000A CMP .0A
2C26:001A 75F2 JNZ 000E
2C26:001CCB RET دور
2C26:001D 9D POPF
2C26:001E E2A0 حلقه FFC0
2C26:0020 20AFE0AE و ، CH
2C26:0024 A3E0A0 MOV ،تبر

D2C26:0

2C0E:0000 CD 20 00 A0 00 9A EE FE 1D F0 ED 04 04 1C 3C 01 . .............<.
2C0E:0010 22 1B EB 04 22 1B 04 1C 01 01 01 00 02 06 FF FF "..."
2C0E:0020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 08 2C D0 FF .............،..
2C0E:0030 04 1C 14 00 18 00 0E 2C FF FF FF FF FF 00 00 00 00 .......،.........
2C0E:0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
2C0E:0050 CD 21 CB 00 00 00 00 00 00 00 00 00 00 20 20 20 .!..........
2C0E:0060 20 20 20 20 20 20 20 20 00 00 00 00 00 00 20 20 20 .....
2C0E:0070 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 ........

RAX
AX0000
:1234

E 2C0E:21
2C0E:0021 69. 73. 20. 61.20 20.


DS=2C26 ES=2C26 SS=2C26 CS=2C26 IP=003C NV UP DI PL NZ NA PO NC
2C26:003C CD10 INT 10
-تی

AX=0E54 BX=0000 CX=003F DX=0000 SP=FFEA BP=0000 SI=001D DI=0000
DS=2C26 ES=2C26 SS=2C26 CS=F000 IP=0165 NV UP DI PL NZ NA PO NC
F000:F065 FB STI
-تی

شکل. 5.17 فهرست اشکال زدا برای شکل های 5.13 و 4.14 (شروع)
AX=0E54 BX=0000 CX=003F DX=0000 SP=FFEA BP=0000 SI=001D DI=0000
DS=2C26 ES=2C26 SS=2C26 CS=F000 IP=0166 NV UP DI PL NZ NA PE NC
F000:F066 FC CLD
-G 2C26:3E

تی
AX=0E54 BX=0000 CX=003F DX=0000 SP=FFEA BP=0000 SI=001D DI=0000
DS=2C26 ES=2C26 SS=2C26 CS=2C26 IP=013E NV UP DI PL NZ NA PO NC
2C26:003E RET
-جی

این برنامه یک تست است

برنامه به طور معمول خاتمه یافت

AX=0754 BX=0000 CX=003F DX=0000 SP=FFEA BP=0000 SI=001D DI=0000
DS=2C26 ES=2C26 SS=2C26 CS=2C26 IP=003E NV UP DI PL NZ NA PO NC
2C26:003E C3 RET

شکل. 5.17 فهرست اشکال زدا برای شکل های 5.13 و 4.14 (ادامه)

در اینجا باید کمی مکث کرد و تحلیل کرد
اطلاعاتی که در رجیسترها ثبت می شود. محتویات ثبت
مربوط به لحظه ای است که برنامه FIG5=13 کنترل را دریافت می کند
از پردازنده فرمان توجه داشته باشید که جفت رجیستر
CS:IP به اولین فرمان مشخص شده توسط عبارت END اشاره می کند
برنامه ها. رجیسترهای DS و ES پیشوند نرم افزار را نشان می دهند
بخش. در نهایت، جفت رجیستر SS:SP به بخش اشاره می کند
پشته. وضعیت توصیف شده رجیسترها بعداً با آن مقایسه خواهد شد
همان وضعیت رجیسترها برای یک فایل COM.

برای مشاهده دستورات بیشتر باید کاراکتر "U" را وارد کنید.
(جدا کردن) و حدود بیست
دستورات زیر این زمانی راحت است که شما صاحب برنامه ای هستید که هیچ برنامه ای برای آن وجود ندارد
فهرست کردن جداسازی یک برنامه به شما امکان می دهد آن را مشاهده کنید
دستورات این می تواند در زمان و کاغذ شما صرفه جویی کند
برنامه کمی اصلاح شده است. از آنجایی که فهرست شما بیشتر است
با برنامه ای که در حافظه است مطابقت ندارد
disassembly به شما امکان می دهد آدرس های صحیح را پیدا کنید
هر تیم.

با این حال، جداسازی قطعات با برنامه DEBUG انجام شده است
تعدادی از معایب در مقایسه با استفاده از فهرست. گم شده
نظرات (می تواند برای درک برنامه بسیار مهم باشد)، و
سلول های حافظه فقط با آدرس و نه با نام شناسایی می شوند
متغیر. به عنوان مثال، دستورالعمل ذخیره شده در سلول 04C5:000E دارای
همانطور که در شکل 5.13 نشان داده شده است، نمای زیر نشان داده شده است:

MOV OUTPUT_CHARACTER،AL

و به صورت جدا شده

MOV ، AL

همین تیم است. برای یک برنامه نویس که انجام می دهد
با اشکال زدایی، نام متغیر OUTPUT_CHARACTER بیشتر از آدرس می گوید
سلول ها. با این حال، برنامه DEBUG نام متغیرها را نمی داند
و او مجبور می شود با آدرس های واقعی عمل کند.

همچنین، برنامه DEBUG همان را ارائه نمی دهد
اسمبلر یادگاری که اسمبلر می پذیرد. این یعنی،
که برخی از دستورات متفاوت به نظر می رسند. فرمان از سلول
04C5:0014 به نظر می رسد

CMP B,,0A

اما همان دستور در شکل 5.13 به صورت زیر ارائه شده است:

CMP OUTPUT_CHARACTER، 10

برنامه جداسازی قطعات ورودی و خروجی
فقط با مقادیر هگزادسیمال کار می کند. این توضیح می دهد
ظاهر مقدار 0A ما قبلاً متوجه شده ایم که چرا مقدار به دست آمده است
، به جای نام OUTPUT_CHARACTER. نماد "B" چیست؟

اسمبلر بر روی متغیرهایی از نوع کاملاً تعریف شده کار می کند. این
به این معنی که در هنگام مونتاژ، نوع متغیرها می تواند داشته باشد
مقدار: بایت، کلمه یا موارد دیگر. بنابراین، زمانی که
سپس برنامه نویس دستوری را وارد می کند که حاوی ارجاع به ناحیه حافظه است
مونتاژ کننده اندازه این منطقه را می داند. برنامه DEBUG این کار را نمی کند
ایده ای در مورد طول متغیر نوشته شده در آدرس دارد
. با این حال، برنامه جداسازی قطعات با اطمینان این را می داند
این دستور دقیقا یک بایت از داده های مشخص شده را ارسال می کند
مستقیماً در دستور، در . بنابراین نماد
"B" نشان می دهد که عملیات فوری به
ارسال یک بایت برای به دست آوردن همان نتیجه با
با استفاده از اسمبلر، دستور مربوطه باید به شکل زیر باشد:

CMP BYTE PTR، 10

می توانید شخصیت "B" را به عنوان مخفف BYTE PTR در نظر بگیرید.
به طور مشابه W برای WORD PTR، L برای مدت طولانی استفاده می شود
(دور) بازگشت و غیره

همراه با فرمان به شکل جدا شده، آن است
کد شی همانطور که می بینید، آدرس 04C5:001C شامل
برخی از دستورات که در شکل نشان داده نشده اند. 5.13. این ناحیه داده
حاوی رشته "This is a test" است. با این حال، تیم اجرای
جداسازی، مشخص نیست که دستورات در برنامه به کجا ختم می شوند
و داده ها آغاز می شود. بنابراین او همه چیز را چنین تفسیر می کند
دستورات (به هر حال، این توالی دستورات بود که اجرا شد
اگر در برنامه شما انتقالی به موارد در نظر گرفته شده بود انجام می شد
ناحیه داده.)

فرمان نمایش D به شما امکان می دهد روی صفحه نمایش مشاهده کنید
منطقه داده صفحه نمایش از دو بخش تشکیل شده است.
همراه با فهرستی از محتویات سلول های حافظه به صورت هگزادسیمال
نمایش کاراکترهای ASCII را نشان می دهد که
با این مقادیر مطابقت دارد. اگر نمایش دستورات مشابه باشد
راه معنی ندارد، پس به نظر می رسد منطقه داده بسیار است
روشن وقتی کار زیادی برای انجام دادن ندارید، می توانید
سعی کنید برنامه ای بنویسید که دستورات آن در کد اسکی باشد
با حروف اول نام خود مطابقت دهید با دیباگر می توانید
محتویات ثبات ها و سلول های حافظه را تغییر دهید. اگر علامت R را وارد کنید
(ثبت نام) و سپس نوع ثبت، نمایشگر را نشان می دهد
محتویات این ثبت با امکان تصحیح آن. اگر فشار دهید
کلید "بازگشت"، سپس محتویات ثبت نام ثابت باقی می ماند. آی تی
اگر مقدار جدیدی وارد شود تغییر خواهد کرد.

همچنین می توانید محتویات سلول های حافظه را تغییر دهید. ورودی
کاراکتر E (ویرایش) این امکان را به شما می دهد. که در آن
برنامه DEBUG مقادیر تک تک سلول های حافظه را نمایش می دهد،
به دنبال آن یک نماد می توانید محتوا را تغییر دهید
سلول ها را با وارد کردن یک مقدار جدید یا فشار دادن کلید فاصله به
به سلول بعدی بروید، یا - کلید "بازگشت" به
برای دستور دیباگر بعدی به حالت prompt برگردید. V
در این مثال، مقادیر در سه سلول اول باقی می مانند
سابق. سلول 04C5:0024 از 61H به
بیشتر از 20 ساعت از آنجایی که این سلول در ناحیه داده است، پس
پیام نمایش داده شده با پیامی که در آن بود متفاوت خواهد بود
برنامه پخش

در هر دستورالعملی که به سلول های حافظه دسترسی دارد، فرض می شود
که آدرس بخشی از دستور است. تیم E، مانند تیم
نمایش، محتویات سلول را همانطور که در آن مشخص شده است نمایش می دهد
آدرس او. به طور مشابه، می توانید از آدرس موجود در دستور استفاده کنید
جداسازی قطعات می توانید آدرس را به عنوان یک بخش و یک افست وارد کنید،
یا فقط جبران می شود. اگر فقط یک افست را مشخص کرده اید، پس
ثبت بخش مربوطه توسط برنامه DEBUG انتخاب می شود. V
در مورد دستور U، از ثبات CS استفاده می شود، و برای دستورالعمل های D و E،
به طور پیش فرض، بخش توسط رجیستر DS تعریف می شود.

حالا بیایید سعی کنیم این برنامه را اجرا کنیم. می تواند به سادگی باشد
بدو ببین چی میشه برای این نیست
شما به برنامه DEBUG نیاز دارید. برنامه DEBUG به شما امکان می دهد نقاط را تعیین کنید
نقاط شکست، به نام "نقاط شکست" برنامه. با تشکر از
با وارد کردن چنین نکاتی به برنامه، می توانید کنترل را برگردانید
برنامه DEBUG. این فرصت دیگری برای بررسی وضعیت می دهد
حافظه و رجیسترها به منظور کنترل پیشرفت اجرا
برنامه ها.

دستور G، (اجرا) کنترل را از برنامه DEBUG منتقل می کند
برنامه کاربر اجرای دستورات از سلول شروع می شود،
تنظیم شده توسط یک جفت ثبات CS:IP (همانند واقعی
ریزپردازنده). برنامه تحت آزمایش تا زمانی که
تا زمانی که از نقطه شکست عبور کند. در مثال ما، ما
یک نقطه شکست در آدرس 3CH تنظیم کنید. از آنجایی که ما فقط اشاره کرده ایم
افست، برنامه DEBUG استفاده می کند
محتویات رجیستر CS از فهرست نشان داده شده در شکل. 5.14،
می توان دید که افست 3CH با دستورالعمل INT 10H مطابقت دارد. V
در برنامه نمونه مورد بررسی، این مکان انتخاب شد،
زیرا این نقطه ای است که کنترل به زیربرنامه منتقل می شود
بایوس از رام تماس گرفت. در این مرحله برنامه را بررسی کنید
اطمینان حاصل می کند که من رجیسترها را قبلاً در وضعیت مناسب تنظیم کرده ام
اجرای یک روال بایوس

به محض اینکه با نقطه شکست مواجه شد، کنترل کنید
به برنامه DEBUG بازگشت. در همان زمان، همانطور که در مورد
دستور R، صفحه نمایش محتویات رجیسترها و موارد زیر را نشان می دهد
فرمان در حال اجرا از آنجایی که کنترل دوباره به برنامه منتقل می شود
DEBUG، می توانید از هر یک از دستورات اشکال زدایی استفاده کنید.

محدودیت هایی برای استفاده از نقاط شکست وجود دارد.
در واقع نقطه شکست توسط کد عملیاتی 0CCH پیاده سازی می شود.
دستورالعمل مربوط به این کد باعث ایجاد وقفه در INT 3 می شود.
این وقفه ریاضی کنترل را به برنامه برمی گرداند
اشکال زدایی. اگر برخی از دستورات کنترل را به دیباگر برگرداند، پس
نقطه شکست باید در ابتدای این دستور باشد. اگر
نقطه انفصال در جای دیگری انتخاب می شود، سپس کنترل انتخاب نمی شود
به دیباگر بازگردانده می شود و دستور اشتباه اجرا می شود
برنامه ای که در نظر گرفته شده بود مثلاً اگر داده می شد
"=G 3D"، سپس در آدرس 3CH یک دستور INT 0CCH وجود خواهد داشت و بیشتر
پیش بینی عملکرد برنامه دشوار است.

اگر نقطه شکست با دقت انتخاب شود، خیر
هیچ عارضه ای وجود نخواهد داشت دستور "G" به شما اجازه می دهد تا ده نقطه را تنظیم کنید
قطع می کند. پس از عبور از هر یک از آنها،
بازیابی مقادیر اصلی نقاط شکست. کارایی
دستورات debug "G" بدون تعیین نقاط شکست هرگز خارج نمی شوند
به هر یک از نقاط شکست از قبل تعیین شده، زیرا همه آنها
حذف شده اند. اگر برنامه را شروع کردید و متوقف شد و
او گیر کرد، این امکان وجود دارد که کنترل را برگرداند، که
به برنامه منتقل می شود، فقط با کمک کلید سیستم امکان پذیر خواهد بود
بازنشانی Ctrl=Alt=Del، یعنی. شما باید همه چیز را از نو شروع کنید.
هنگام راه اندازی یک برنامه ناآشنا، باید مراقب باشید.

اگر می خواهید یک نقطه شکست دائمی معرفی کنید،
از دستور E برای تغییر مقدار بایت اول استفاده کنید
دستور به 0CCH. این نقطه شکست برای همیشه وجود خواهد داشت
یا حداقل تا زمانی که آن را تغییر دهید. شاید
شما می خواهید از این وقفه در نقطه ورود استفاده کنید
روال رسیدگی به خطا و تجزیه و تحلیل خطاهای حاصل
با دقت بیشتری نسبت به انتقال پردازش آنها به برنامه.

یک مورد دیگر نیز به نکات مربوط می شود
وقفه هایی که باید از آنها آگاه بود. اگر سعی می کنید بپرسید
نقطه شکست در ناحیه مربوط به رام، پس هیچ
موفق شدن از آنجایی که نمی توانید محتویات رام را تغییر دهید، دستور
0CCH هرگز در آنجا نوشته نخواهد شد.

دستور دیباگر زیر، دستور T trace را در نظر بگیرید.
این دستور اجرای یک دستور از اشکال زدایی شده را آغاز می کند
برنامه ها. در مثال ما، دستور T چندین بار اجرا می شود. چگونه
می توانید تأیید کنید که چند دستور اول بایوس در حال اجرا شدن هستند،
با وقفه INT 10H فراخوانی می شود. البته زیربرنامه BIOS،
در رام هست دستور trace به شما امکان می دهد "مکث" کنید.
برنامه زمانی که در رام اجرا می شود.

قبل از انتقال کنترل به برنامه کاربر، دستور
trace بیت مربوطه را در ثبت پرچم تنظیم می کند
ردیابی این بیت پس از اجرا یک وقفه INT 1 را راه اندازی می کند
هر تیم. بردار وقفه INT 1 کنترل را برمی گرداند
برنامه DEBUG. وقفه INT 1 را به صورت خودکار اجرا کنید
بیت ردیابی را به حالت اولیه خود بازنشانی می کند. این به آن معناست که
برنامه DEBUG پس از اجرای هر یک از دستورات آن قطع نمی شود.
دستور trace یک راه عالی برای "شکستن" است
بخش سخت برنامه در این حالت، برنامه DEBUG خروجی به
هر دستور را به همراه محتویات رجیسترها که فقط در داخل هستند نمایش دهید
لحظه قبل از اجرای این دستور از آنجایی که در این
حالت، نقاط انفصال استفاده نمی شود، بلکه خود را قطع می کند،
سپس حتی برنامه های ROM را می توان ردیابی کرد.

بیایید به مثال خود برگردیم. دستور =G 4C5:3E فراهم می کند
اجرای کامل زیربرنامه BIOS. توجه داشته باشید که
برنامه نماد "E" را نشان می دهد. با وقفه 10H تماس گرفته می شود
زیربرنامه BIOS کاراکترها را روی نمایشگر نمایش می دهد. در این مورد، این
اولین کاراکتر پیام خروجی از الان که میتونی باشی
مطمئن شوید که برنامه ما به درستی اجرا می شود، سپس با تایپ کردن
نماد "G"، ما مطمئن خواهیم شد که برنامه تا انتها بدون نقطه اجرا می شود
قطع می کند.

در این مثال، فایلی از نوع EXE و بنابراین برای در نظر گرفته شده است
کنترل را به سیستم DOS برگردانیم، ما نتوانستیم از وقفه استفاده کنیم
INT 20H. در عوض، برنامه وضعیت رجیستر را روی پشته فشار داد.
DS و مقدار 0. کنترل در پایان به DOS بازگردانده می شود
برنامه اصلی با دستورالعمل بازگشت از نوع FAR. برنامه
DEBUG این را تشخیص می دهد و در پایان وضعیت ماشین را تایید می کند
برنامه در حال تست اگر یک فایل EXE بود، پس
وقفه INT 20H به طور مشابه کنترل را برمی گرداند
برنامه DEBUG. حالا با دادن زمان کافی به این مثال،
می توانیم از برنامه DEBUG خارج شده و با استفاده از آن به سیستم DOS بازگردیم
با استفاده از دستور پایان Q.

با استفاده از میانبر قرار داده شده بر روی دسکتاپ، روی آن کلیک راست کرده و از منوی زمینه کشویی "Properties" را انتخاب کنید. در تب "میانبر" در پنجره ای که در نتیجه این عمل باز می شود، روی قسمت "Object" کلیک کنید. سپس کلید پایان را فشار دهید تا مکان نما به انتهای خط منتقل شود، یک فاصله وارد کنید و گزینه مورد نظر (-debug) را تایپ کنید. پس از آن، روی دکمه "OK" کلیک کنید تا میانبر با تغییرات ایجاد شده ذخیره و اجرا شود بازیبه روش معمول - با دوبار کلیک کردن بر روی این نماد.

منوی اصلی را روی دکمه "شروع" گسترش دهید و "Run" را انتخاب کنید - به این ترتیب پنجره استاندارد راه اندازی برنامه را باز خواهید کرد. این عمل مربوط به فشار دادن کلید میانبر Win + R است - شما هم می توانید از آن استفاده کنید. سپس در پنجره باز شده مسیر کامل فایل اجرایی برنامه را وارد کنید. نیازی به تایپ دستی آن نیست، می‌توانید روی دکمه «مرور» کلیک کنید و فایل اجرایی بازی را در دیسک رایانه خود پیدا کنید. پس از آن، کلید -debug را که با یک فاصله از هم جدا شده است اضافه کنید و روی دکمه "OK" کلیک کنید. دفعه بعد که شروع به استفاده از این گفتگو کردید، دیگر نیازی به تایپ مسیر و کلید ندارید - رشته وارد شده در لیست کشویی ذخیره می شود، جایی که می توانید آن را انتخاب کنید.

یک فایل متنی در هر پوشه ای در رایانه خود ایجاد کنید. می توانید این کار را روی دسکتاپ انجام دهید - روی تصویر پس زمینه کلیک راست کنید، بخش "جدید" را در منوی زمینه باز شده باز کنید و "سند متن" را انتخاب کنید. در خط اول سند، مسیر کامل فایل اجرایی بازی را وارد کنید - می توانید آن را در میانبر برنامه یا در نوار آدرس اکسپلورر کپی کنید. کلید -debug را که با فاصله جدا شده است اضافه کنید و سند را با پسوند bat ذخیره کنید. اجرا کن بازیروی این فایل دوبار کلیک کنید

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

دستورالعمل

روی میانبر بازی کلیک راست کنید. در منوی کشویی، "Properties" را انتخاب کنید.

در پنجره ای که باز می شود، به تب "Compatibility" بروید.

روی OK کلیک کنید.

ویدیو های مرتبط

برنامه های تقلب برای ساده سازی یک بازی رایانه ای طراحی شده اند. با کمک کدهای تقلب، می توانید پاداش ها و توانایی های اضافی برای قهرمان رایانه خود دریافت کنید.

شما نیاز خواهید داشت

  • - برنامه "CheMax"؛

دستورالعمل

تقلب برای بازی هاقزاق ها
در استراتژی "قزاق ها"، با فشار دادن کلید "Enter"، منوی وارد کردن کدهای تقلب باز می شود.
supervizor - مه مبارزه با روشن/خاموش
پول - دوباره پر کردن
multitvar - دسترسی به همه سربازان
خدایان - کمک خدایان
هوش مصنوعی - توانایی کنترل دشمنان
منابع - همه منابع را دوباره پر کنید
سپر - سلاح فوق العاده

تقلب برای بازی هاسیمز 3
برای وارد کردن کدها در بازی Sims 3، کلید ترکیبی CTRL + SHIFT + C را فشار دهید، اگر باز نشد، بازی را Minimize کنید و با زدن این کلیدها بررسی کنید که آیا برنامه دیگری باز شده است یا خیر. آن را ببندید و بازی را گسترش دهید. دوباره کلیدها را فشار دهید.
برای کاربران سیستم عامل ویستا: از کلیدهای Ctrl+Windows+Shift+C استفاده کنید.
چند تقلب برای Sims 3:
Kaching - 1000 § به قلک خانواده اضافه می کند
Motherlode - 50000 § Simoleon به بودجه خانوار اضافه می کند
Familyfunds - به شما امکان می دهد بودجه تعیین کنید.

تقلب برای بازی ها Counter-Strike 1.6
این یکی از محبوب ترین بازی ها است. برای این بازی کامپیوتری، هکرها برنامه های تقلب زیادی را ارائه کرده اند. دانلود Bad Boy v 5.2. این یک تقلب جهانی است که شامل تمام نسخه های قبلی آن است. برنامه را در پوشه root cstrike نصب کنید. بازی را شروع کنید و کلید "Insert" را فشار دهید. منوی برنامه باز خواهد شد. از کلیدهای "Page Up" و "Page down" برای انتخاب تنظیمات مورد نیاز و پخش استفاده کنید. این تقلب به شما امکان می دهد از طریق دیوارها ببینید، سریع بدوید، دقیق شلیک کنید. اما برای این برنامه در سرورهای آنلاین آنها را مسدود می کنند.

تقلب برای بازی هاکامیون داران 2
در حین بازی هاکلید "مکث / شکست" را روی صفحه کلید فشار دهید و کد تقلب مورد نیاز خود را وارد کنید.
SLFILLUP - شما یک مخزن پر از سوخت دریافت خواهید کرد.
SLRECOVER - بدون هیچ هزینه ای به خدمات نجات.
SLREPAIR - تعمیر ماشین رایگان.

ویدیو های مرتبط

توجه داشته باشید

برای این کدهای تقلب، می توانید در سرورهای آنلاین تحریم شوید

بازی های متنی یکی از روش های مورد علاقه برای گذراندن اوقات فراغت در بین جوانانی است که به بازی های نقش آفرینی علاقه دارند. از این گذشته، برای اینکه برای شخصیت مورد علاقه خود بازی کنید، نیازی به تهیه لباس و رفتن به جنگل ندارید. انجمن بازی بازیشما می توانید آن را در خانه، محل کار یا در زمان استراحت بین زوج ها، به طور کلی، زمانی که برای شما راحت است، انجام دهید.

دستورالعمل

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

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

طرح بازی را بنویسید. به عنوان مثال، می توانید یکی از یک کتاب یا رویداد درخشان دیگری را که دوست دارید انتخاب کنید. در طرح، علاوه بر اطلاعات کلی موجود در منبع اصلی، باید مشخص کنید که طرف‌های مقابل در آن زمان چه می‌کنند، طرف‌های مقابل چه اهدافی را انجام می‌دهند، قهرمانان برای حل تعارض چه برنامه‌ای دارند.

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

وقتی قسمت متن آماده شد، می توانید ایجاد کنید، که بازی روی آن انجام می شود. چندین سرور رایگان در اینترنت وجود دارد (مثلاً یک برد). اگر می دانید چگونه وب سایت بنویسید، می توانید یک طرح منحصر به فرد با طرح رنگ، لوگو و دکمه های خود ایجاد کنید. اگر نه، نگران نباشید، می توانید یک الگوی استاندارد انتخاب کنید. در نهایت، طراحی انجمن چیز اصلی نیست.

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

ویدیو های مرتبط

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

شما نیاز خواهید داشت

  • سیستم عامل ویندوز

دستورالعمل

در صورت نیاز به یافتن کامل از "Explorer" استفاده کنید مسیربه فایلدر سیستم عامل ویندوز برنامه را با استفاده از کلیدهای میانبر Win + E یا با انتخاب مورد "رایانه" در منوی اصلی که با کلیک بر روی دکمه "شروع" فراخوانی می شود، باز کنید. اگر چیزی در مورد مکان شی مورد نظر می دانید، از طریق درخت دایرکتوری تا حد امکان نزدیک به آن حرکت کنید - این کار محدوده جستجو و در نتیجه زمان این روش را محدود می کند.

در قسمت سمت راست نوار آدرس فایل منیجر، نام فایل را وارد کنید و منتظر بمانید تا برنامه تمام زیر شاخه ها را اسکن کند و اشیایی را پیدا کند که نام آنها حاوی چیزی مشابه است. پر شده مسیردر ستون "مسیر به پوشه" جدول با نتایج جستجو قرار می گیرد. نیازی به بازنویسی دستی آن نیست - روی این خط راست کلیک کنید، خط "Properties" را در منوی زمینه کشویی انتخاب کنید و محتویات فیلد "Location" پنجره باز شده را کپی کنید.

اگر به دلایلی باید از رابط خط فرمان استفاده کنید، از دستور DOS Where استفاده کنید. باید گزینه R داده شود تا جستجوی فایل به صورت بازگشتی انجام شود، یعنی تمام زیرپوشه ها را بررسی کند. علاوه بر آن، حتماً نام فایل مورد نظر را نیز مشخص کنید و ممکن است یک پارامتر اختیاری بخشی از مسیر دسترسی به آن باشد که می دانید. این دستور نیز جستجو می کند، بنابراین با مشخص کردن حداقل بخشی از مسیر، زمان صرف شده در آن را کاهش می دهید. به عنوان مثال، اگر می خواهید کامل را دریافت کنید مسیربه فایلبا نام RM.csv که فقط در درایو F وجود دارد، دستور باید به این صورت نوشته شود: Where /R f: RM.csv

پس از تایپ دستور و پارامترهای آن، Enter را فشار دهید و در پایان جستجو، کامل را خواهید یافت مسیردر خط بعدی رابط. متأسفانه نمی‌توانید فقط این خط را در اینجا انتخاب و کپی کنید، بنابراین در هر نقطه از پنجره کلیک راست کرده، دستور «Select All» را از منو انتخاب کنید و سپس Enter را فشار دهید. به این ترتیب، تمام محتویات رابط خط فرمان را که در هر ویرایشگر متنی می توان از خطوط اضافی پاک کرد، در کلیپ بورد قرار می دهد.

اشکال زدایی یکی از بخش های مهم فرآیند توسعه نرم افزار است. با توجه به برنامه های کاربردی، این کار با وسایلی انجام می شود که در حالت کاربر کار می کنند و اغلب در IDE ساخته می شوند. اما برای اینکه بتوانید مثلاً درایورها را اشکال زدایی کنید، باید اجرا کنید اشکال زدا هسته ها.

شما نیاز خواهید داشت

  • - حقوق مدیر در ماشین هدف.

دستورالعمل

پوسته cmd را اجرا کنید. بر روی دکمه "شروع" در نوار وظیفه کلیک کنید. در منوی ظاهر شده روی "Run..." کلیک کنید. cmd را در کادر متنی Run Program تایپ کنید و OK کنید.

از فایل boot.ini بک آپ بگیرید. مسیر نصب نسخه فعلی ویندوز خود را با دستور echo پیدا کنید: echo %SystemRoot% با وارد کردن حرف دستگاه و سپس دو نقطه به درایوی که سیستم عامل در آن نصب شده است بروید. با استفاده از دستور cd به دایرکتوری ریشه آن تغییر دهید. ویژگی های سیستم، فقط خواندنی و پنهان را از فایل boot.ini با دستور attrib حذف کنید، با دستور copy یک نسخه پشتیبان ایجاد کنید و دوباره ویژگی ها را تنظیم کنید: attrib -h -s -r boot.inicopy boot.ini boot ini.oldattrib +h +s +r boot.ini

لیست فعلی گزینه های بوت را چاپ کنید. از دستور استفاده کنید: bootcfg /query موارد موجود در لیست را بررسی کنید و مشخص کنید که کدام پیکربندی جدید با قابلیت اشکال زدایی در حالت ایجاد می شود. هسته ها. شناسه ورودی بوت را به خاطر بسپارید.

با اجرای دستور bootcfg با گزینه /copy یک ورودی جدید برای بوت ایجاد کنید. از گزینه id/ برای تعیین شناسه ورودی مورد کپی استفاده کنید. از گزینه /d برای تنظیم نام نمایش ورودی استفاده کنید. به عنوان مثال: bootcfg /copy /id 1 /d "Win XP (Debug)" دوباره گزینه های بوت را با دستور bootcfg با گزینه query / فهرست کنید و شناسه ورودی اضافه شده را پیدا کنید.

گزینه ها را برای اجرا فعال کنید اشکال زداآ هسته هابه ورودی بوت ایجاد شده در مرحله قبل. اگر اشکال زدایی در ماشین مورد نظر انجام می شود، کافی است گزینه /debug را اضافه کنید. به عنوان مثال: bootcfg /debug در /id 2 اگر قصد دارید از راه دور با رایانه مورد نظر متصل به دستگاه میزبان از طریق پورت com اشکال زدایی کنید، علاوه بر این از گزینه های /port /baud برای تعیین شماره پورت و نرخ باود به ترتیب استفاده کنید: bootcfg / اشکال زدایی در /port COM2 /baud 9600 /id 2 اگر اشکال زدایی از راه دور با اتصال IEEE 1394 (کابل FireWire) انجام می شود، برای فعال کردن حالت مناسب از گزینه /dbg1394 و برای مثال برای تعیین شماره کانال از گزینه /ch استفاده کنید. : bootcfg /dbg1394 در /ch 42 /id 2 دستور bootcfg boot records را با گزینه query / مشاهده کنید و بررسی کنید که تغییرات انجام شده است. با صدور دستور exit پنجره پوسته را ببندید.

اشکال زدایی . EXE - یک برنامه سیستمی ویژه برای ورود و اجرای گام به گام برنامه های نوشته شده به زبان ماشین یا با استفاده از دستورات اسمبلر.

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

پس از اتمام دانلود، یک خط تیره روی صفحه ظاهر می شود که نشان می دهد برنامه Debug آماده پذیرش دستورات است.

بیشترین استفاده شده دستورالعمل ها اشکال زدایی :

1. س- خروج از برنامه

2. ? - کمک گرفتن.

3. اچ(هگزاری) - حساب هگزادسیمال. اگر بعد از علامت H، 2 عدد (هر کدام بیش از 4 رقم) را که با فاصله از هم جدا شده اند شماره گیری کنیم، مجموع و تفاضل اعداد شماره گیری شده را بدست می آوریم:

4. آر [<имя регистра>] - کار با رجیسترها (از کلمه Register). دستورالعمل "R" بدون پارامتر به شما امکان می دهد محتویات همه رجیسترها و همچنین مقدار پرچم ها و دستور واقع در افست 0100 در بخش کد را مشاهده کنید. معمولاً در آفست 0100 اولین دستورالعمل برنامه است.

با این دستورالعمل می توانید مقدار جدیدی را در یک ثبات وارد کنید. برای انجام این کار، پس از دستور، باید نام رجیستر را وارد کنید:

همانطور که می بینید، زمانی که رجیسترها برای اولین بار با دستور r مشاهده شدند، رجیستر AX 0 بود، سپس محتویات رجیستر تغییر کرد.

5. U[<сегментный регистр>:]<начальный адрес>, <конечный адрес>- مشاهده سلول های RAM، با شروع از آفست مشخص شده در بخش مشخص شده توسط ثبات سگمنت. دستور U (Unassemble) دستوراتی را که در یک آدرس مشخص در حافظه هستند از هم جدا می کند.

به عنوان مثال، در مثال زیر، دستوراتی را که در رجیستر CS هستند، از آدرس 100 شروع می‌شوند و به آدرس 102 می‌رویم.

6. E [<сегментный регистр>:]<смещение>- نوشتن اطلاعات در سلول های RAM

همانطور که گفته شد، با Debug می توانید دستورات را هم به زبان ماشین و هم به زبان اسمبلی وارد کنید. از دستور Debug E (Enter) استفاده می شود وارد کردن دستورات به زبان ماشین . در اینجا Debug به عنوان یک مفسر برای کار مستقیم با ریزپردازنده استفاده می شود. می توانید دستورالعمل های ماشین را تنظیم کنید، آنها را در یک مکان خاص در RAM بنویسید، معمولاً از 0100 offset نسبت به ابتدای بخش کد شروع می شود. سپس مرحله به مرحله (یک دستور در یک زمان) یا کل برنامه را یکجا اجرا کنید.

از آنجایی که ریزپردازنده فقط اعداد باینری را می‌فهمد (که می‌توان آنها را به اختصار به صورت هگزادسیمال نوشت)، کدهای دستورالعمل ماشین نیز به صورت اعداد هگزادسیمال نوشته می‌شوند و دستورات یک، دو، سه بایت و غیره هستند.

به عنوان مثال، دستورالعمل اضافه کردن مقادیر از رجیسترهای AX و BX دو بایتی است و دارای کد ماشین 01D8 است.

دستورالعمل "E<смещение>” هنگام کار، در خط بعدی پس از ورودی، آدرس متشکل از دو عدد و مقدار قدیمی بایت را در این آدرس چاپ می کند:<содержимое CS>:<смещение><значение байта>، سپس کامپیوتر منتظر می ماند تا یک مقدار بایت جدید وارد شود.

برای وارد کردن، به عنوان مثال، یک دستورالعمل ماشین دو بایتی 01D8، باید 01 را در بخش کد با offset 100 و D8 را در offset 101 بنویسید:

7. تی(از Tracing) - راه اندازی یک برنامه واقع در RAM در آدرس 0100 در حالت گام به گام. برای فراخوانی برنامه برای اجرا، ابتدا باید مراقب باشید که رجیستر IP (مشتری دستورالعمل) دارای عدد 0100 باشد.

8. الف<смещение> – ورودی دستور اسمبلر (از مجمع). اولین دستور برنامه باید از offset 0100 وارد شود. سپس سیستم منتظر ورود متوالی دستورات اسمبلر می شود. برای پایان دادن به ورودی، بعد از یک خط خالی، Enter را فشار دهید.

مثال. ما یک برنامه به زبان اسمبلی را به RAM معرفی می کنیم که جمع دو عدد را انجام می دهد. آدرس شروع را به صورت زیر تنظیم کنید: A 0100.

دیباگر مقدار آدرس بخش کد را برمی گرداند و به صورت xxxx:0100 جبران می کند. اکنون می توانید هر دستور را وارد کنید و با کلید Enter ختم شود.

قبل از اجرای برنامه، اجازه دهید کدهای ماشین تولید شده را با دستور U بررسی کنیم، شما باید آدرس اولین و آخرین دستوری را که می خواهید به آنها نگاه کنید، در این مورد 0100 و 0106 به دیباگر بگویید. وارد کنید: U 100, 106

همانطور که می بینید، کدهای ماشین به درستی تولید می شوند.

با استفاده از دستور R، محتویات رجیسترها و اولین دستور برنامه خود را نمایش می دهیم:

با استفاده از دستورات T، تمام دستورات برنامه را به ترتیب اجرا می کنیم:

به این ترتیب برنامه های زبان اسمبلی وارد و ردیابی می شوند.

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

9. جی(از Go) - راه اندازی برنامه ای که در RAM در آدرس 0100 قرار دارد. برای فراخوانی برنامه برای اجرا، ابتدا باید مراقب باشید که رجیستر IP (شمارگر برنامه) دارای شماره 0100 باشد.

10. ن<имя.com-файла>– نام برنامه (Name) را برای نوشتن بعدی آن روی دیسک یا خواندن از دیسک تنظیم می کند. قبل از نوشتن، ابتدا باید 0 را در رجیستر BX، و اندازه برنامه (بر حسب بایت) را در ثبات CX بنویسید.

11. دبلیو(از Write) - نوشتن برنامه روی دیسک. پس از اجرای دستورالعمل "W"، یک فایل با پسوند COM بر روی دیسک در فهرست فعلی ظاهر می شود - یک کپی دقیق از برنامه وارد شده.

برنامه ها از دیسک به رم. نام برنامه با استفاده از دستور N از پیش تنظیم شده است.

بیایید به مثال جمع دو عدد برگردیم. سه مرحله برای رایت این برنامه روی دیسک وجود دارد:

1. نام برنامه را بدهید.

2. مدت زمان برنامه را مشخص کنید.

3. ضبط کنید.

1. با استفاده از دستور N به فایل آینده یک نام بدهید.

2. این برنامه از چهار دستورالعمل دو بایتی تشکیل شده است، آدرس هایی را با آفست 0100 تا 0106 اشغال می کند، یعنی طول آن 8 بایت است. اندازه برنامه Debug در یک جفت ثبات ذخیره می شود. در مورد ما، مقدار طول در یک ثبات قرار می گیرد، بنابراین ما به سادگی ثبات بالای جفت را صفر می کنیم: BX=0، CX=8.

3. برای نوشتن برنامه روی دیسک از برنامه W استفاده کنید.


توجه داشته باشید
نقاشی های این صفحه نمایش داده نمی شوند، اما می توانید آنها را در کتاب پیدا کنید.


برای نوشتن برنامه‌ای که قبلاً با استفاده از Debug می‌شناسیم، موارد زیر را انجام می‌دهیم (فرض می‌رود که شما قبلاً Debug را راه‌اندازی کرده‌اید و یک صفحه سیاه با یک خط تیره چشمک‌زن کوچک در گوشه بالا سمت چپ مشاهده کرده‌اید).

حرف "a" را وارد کنید (برای آخرین بار یادآوری می کنم - همه دستورات به زبان انگلیسی وارد می شوند) و ENTER را فشار دهید.

سپس با فشردن ENTER در انتهای هر خط وارد برنامه شوید:

0B72: 0100 MOV AH, 02 0B72: 0102 MOV DL, 41 0B72: 0104 INT 21 0B72: 0106 INT 20 0B72: 0108 1.6.

یادداشت 1
لطفاً توجه داشته باشید که تمام مقادیر عددی بدون h در پایان نوشته می شوند. این به این دلیل است که Debug فقط با اعداد هگزادسیمال کار می کند و نیازی به توضیح نیست که داده ها در چه پایگاهی وارد شده اند.

توجه 2
پس از وارد کردن دستور -a، کاراکترها ظاهر می شوند: 0B72: 0100. در مورد شما، چهار کاراکتر اول ممکن است متفاوت باشند، اما ما هنوز به آنها علاقه نداریم. به نظر شما عدد 0100 به چه معناست؟ دستورالعمل ORG 100h را به خاطر دارید (به بخش مراجعه کنید)؟ در اینجا آدرسی است که اجرای برنامه شروع می شود. یعنی اولین دستور برنامه (برای فایل های COM) با این آدرس وارد حافظه می شود. هر دستور 2 بایت طول می کشد، بنابراین آدرس بعدی 0102 خواهد بود و به همین ترتیب.

ما قبلاً خود دستورات را می دانیم (به بخش مراجعه کنید)، بنابراین آنها را در اینجا شرح نمی دهیم.

برنامه نوشته شده است - باید کار آن را بررسی کنید. دوباره ENTER را فشار دهید تا خط تیره ای روی صفحه ظاهر شود که نشان می دهد می توانید دستوری را برای Debug وارد کنید. سپس دستور g (از انگلیسی "GO") را وارد کرده و کلید ENTER را فشار دهید. در صفحه نمایش موارد زیر را مشاهده خواهیم کرد:

G A برنامه به طور معمول به پایان رسید - در اینجا A همان حرفی است که در نتیجه برنامه روی صفحه نمایش داده می شود. سپس پیامی در مورد تکمیل عادی برنامه می آید (ممکن است بسته به نسخه Debug متفاوت باشد).

و حالا اگر علاقه دارید می توانید برنامه را در حالت مرحله به مرحله بررسی کنید، یعنی نحوه اجرای دستورات را یک به یک مشاهده کنید. برای این کار باید دوباره متن برنامه را تایپ کنید (فراموش نکنید ابتدا دستور a را وارد کنید)، سپس:

دستور t را وارد کرده و کلید ENTER را فشار دهید. چیزی شبیه به این را خواهیم دید:

AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B72 ES=0B72 SS=0B72 CS=0B72 IP=0102 NV UP NAB EI PO20 B241 MOV DL,41 این چیزی نیست جز وضعیت ثبت پردازنده پس از اجرای خط اول برنامه. همانطور که مشاهده می کنید عدد 02 در رجیستر AH نوشته شده بود که در خط پایین آدرس دستور و خود دستور وجود دارد که در ادامه اجرا می شود.

AX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B72 ES=0B72 SS=0B72 CS=0B72 IP=0104 NV UP NAB EI PO20 CD21 INT 21 دستورالعمل MOV DL, 41 همانطور که باید عدد 41 را در رجیستر DL نوشت.

دوباره دستور t را تایپ کرده و کلید ENTER را فشار دهید. موارد زیر را خواهیم دید:

AX=0200 BX=0000 CX=0000 DX=0041 SP=FFE8 BP=0000 SI=0000 DI=0000 DS=0B72 ES=0B72 SS=0B72 CS=0347 IP=0225 NV2 UP EI PO4 80FC4B CMP AH,4B فرمان CMP AH,4B در برنامه ما نیست. برنامه ما کار خود را کامل کرده است. ما می توانیم دستور t را برای مدت طولانی وارد کنیم - وضعیت ثبات ها به ما داده می شود. چرا این اتفاق می افتد، ما هنوز علاقه مند نیستیم. بهتر است دستور g را تایپ کرده و کلید ENTER را فشار دهیم تا در نهایت برنامه خود را اجرا کنیم و آنچه را قبلاً دیده ایم خواهیم دید.

برنامه نوشته شده و تست شده است. اما چگونه می توان آن را مستقل کرد، یعنی چگونه یک فایل COM ایجاد کرد؟ به هر حال، کاری که ما انجام داده‌ایم فقط با Debug کار می‌کند. برای ایجاد یک فایل اجرایی باید به چند سوال پاسخ دهید:

  1. فایل ما چه اندازه خواهد بود؟ اجرای برنامه از آدرس 0100h شروع می شود و آخرین خط برنامه حاوی آدرس 0108h است. این به این معنی است که اندازه فایل 8 بایت (108h - 100h = 8) خواهد بود.
  2. نام فایل خود را چگونه بگذاریم؟ اما حداقل چگونه. با این حال، توصیه می‌شود نام‌های انگلیسی به فایل‌هایی بدهید که بیش از ۸ کاراکتر ندارند (کار با DOS راحت‌تر است). به عنوان مثال، debug_1.com را صدا کنیم
حالا بیایید کارهای زیر را انجام دهیم:
  1. بیایید دوباره برنامه خود را بنویسیم (تمرین، تمرین...).
  2. اندازه فایل را در رجیستر CX بنویسید. برای این کار دستور r cx را وارد کرده و ENTER را فشار دهید. سپس اندازه فایل (8 بایت) را وارد کرده و ENTER را فشار دهید.
  3. دستور n و سپس یک فاصله و نام فایل را تایپ کنید. بیایید ENTER را فشار دهیم.
  4. و در آخر دستور w را وارد کرده و ENTER را فشار دهید.
در نتیجه همه این اقدامات، اطلاعات زیر روی صفحه ظاهر می شود (شکل 1.7 را نیز ببینید): -r cx СХ 0000:8 -n debug_1.com -w ضبط: 00008 بایت - اگر در شبیه سازی DOS کار می کنید حالت از زیر WINDOWS، سپس فایل debug_1.com در دسکتاپ یا در پوشه کاربر فعلی ذخیره می شود. بستگی به نسخه و/یا تنظیمات WINDOWS دارد. اکنون می توان آن را به عنوان یک برنامه معمولی اجرا کرد. اگر این فایل را در پوشه های مشخص شده پیدا نکردید، از طریق جستجوی فایل ها آن را پیدا کنید. خوب، اگر نمی دانید چگونه این کار را انجام دهید، به کتاب Computer for Dummies مراجعه کنید.

احساس میکنم دیگه خسته شدیم Debug با دستور q خارج می شود.

با به دست آوردن قدرت و صبر، بیایید یکی دیگر از گزینه های Debug - disassembler را بررسی کنیم. با آن، می توانید هر فایل COM را جدا کنید (یعنی عمل معکوس اسمبلی را انجام دهید - فایل اجرایی را به کد منبع در زبان اسمبلی تبدیل کنید). فرض کنید برنامه ای دارید که توسط شما نوشته نشده است - کد منبع آن را نمی دانید، اما واقعاً می خواهید آن را ببینید. جداساز برای همین است

بنابراین، برنامه Debug برای ما بسته شده است. در خط فرمان تایپ می کنیم:

debug_1.com (که در آن debug_1.com نام فایلی است که می خواهیم جدا کنیم) را اشکال زدایی کنید و ENTER را فشار دهید.

توجه داشته باشید
اگر برنامه شروع نشد، برای مثال باید مسیر کامل آن را مشخص کنید

C:\WINDOWS\COMMAND\debug debug_1.com اگر برنامه شروع شد اما خطا داد (به عنوان مثال: Error 1282 یا "File not found")، باید مسیر کامل فایل را مشخص کنید، به عنوان مثال: C: \WINDOWS\COMMAND\debug C:\MYPROG\debug_1.com اگر این کار هم جواب نداد، احتمالاً جایی در مسیر اشتباه کرده‌اید، یا مسیر الزامات DOS را برآورده نمی‌کند. در این صورت بهتر است برنامه را در روت درایو C قرار دهید، جایی که تضمین شده است که در مسیر "C:\debug_1.com" بارگذاری شود.

اگر Debug بدون پیغام خطا شروع شد، دستور u را وارد کرده و ENTER را فشار دهید. در اینجا چیزی است که خواهیم دید (تقریباً به شکل 1.8 نیز مراجعه کنید):

U 0BC6:0100 B402 MOV AH, 02 0BC6:0102 B241 MOV DL, 41 0BC6:0104 CD21 INT 21 0BC6:0106 CD20 INT 20 0BC6:0108 56 BCMOV0001:BCMOV0100:BC240C1000:BC240000 AL، AL 0BC6: 010E 741A JZ 012A 0BC6: 0110 3C3A CMP Al، 3a 0BC6: 0112 750D JNZ 0121 0BC6: 0114 2E CS: 0BC6: 0115 807C0100 CMP BYTE PTR، 00 0BC6: 0119 7506 JNZ 0121 0BC6: 011B 2E CS: 0BC6:011C C60400 MOV BYTE PTR , 00 0BC6:011F EB09 JMP 012A - به چهار خط اول نگاه کنید. آیا شما می شناسید؟ این برنامه ماست خطوط باقیمانده برای ما جالب نیستند (اینها دستورالعمل‌هایی هستند که از برنامه‌ها یا داده‌هایی باقی مانده‌اند که قبل از راه‌اندازی Debug کار می‌کردند). خوب، اگر یک فایل ناآشنا را در نظر می گیریم، چگونه بفهمیم که برنامه کجا به پایان می رسد و "آشغال" شروع می شود؟ تقریباً این را می توان با اندازه فایل (برای برنامه های بسیار کوچک) انجام داد. اندازه را می توان در ویژگی های فایل مشاهده کرد. فقط به خاطر داشته باشید که در ویژگی های فایل اندازه به صورت اعشاری داده می شود و Debug آدرس های هگزادسیمال را به ما می دهد. بنابراین، شما باید عدد اعشاری را به هگزادسیمال تبدیل کنید.

گزینه دیگری وجود دارد (که همیشه قابل قبول نیست) - یافتن خطی که حاوی دستور خروج از برنامه (INT 20) در لیست حاصل است.

اگر برنامه بزرگ باشد، لیست دستورات آن روی صفحه قرار نمی گیرد. سپس دوباره دستور u را وارد کرده و ENTER را فشار دهید. و به همین ترتیب تا پایان برنامه.

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

دیباگر DEBUG برای حل طیف وسیعی از مشکلات طراحی شده است. به عنوان مثال، اینها شامل وظایف زیر است: مطالعه محتوای فعلی RAM. جداسازی فایل های .COM و EXE؛ توسعه و اشکال زدایی برنامه های خود به زبان اسمبلی. مطالعه کار برنامه ها و اصلاح آنها؛ تست تجهیزات جانبی برای کار با پورت های ورودی/خروجی به طور مستقیم (آنلاین)؛ مطالعه سیستم فرمان پردازنده، وقفه های BIOS و MS-DOS.

دو راه برای راه اندازی دیباگر وجود دارد:

اشکال زدایی (Enter) یا اشکال زدایی نام فایل (Enter)

پس از شروع، دیباگر در RAM بارگذاری می شود و محتویات بخش ثبت کننده CS، DS، ES، SS بلافاصله پس از خود دیباگر در اولین پاراگراف رایگان بارگذاری می شود. ثبت IP روی 100 تنظیم شده است.

دیباگر DEBUG یک نشانگر آدرس داده ویژه دارد که به طور پیش فرض در بسیاری از دستورات دیباگر استفاده می شود.

پس از راه اندازی دیباگر، خط تیره [-] در سمت چپ صفحه ظاهر می شود که نشان می دهد دیباگر منتظر دستور است. همه اعداد توسط دیباگر در نماد هگزادسیمال تفسیر می شوند.

دستورات DEBUG

A دستورالعمل مونتاژ است. این دستور به شما این امکان را می دهد که برنامه ها را با استفاده از حافظه های دستوری وارد رم کنید. وارد کردن دستور دیباگر

آ<число>(وارد)

باعث می شود تا به حالت دریافت دستورات از صفحه کلید و قرار دادن متوالی آنها، از آدرسی برابر با آدرس مشخص شده در دستور، برود. دو دستورالعمل اسمبلر معروف DB و DW را می توان هنگام تایپ استفاده کرد. برای مثال:

DB 1,2,3”EXAMPLE”

DW 1000,2000 "FFFF"

دیباگر حافظه را برای تمام دستورالعمل های پردازنده و همچنین برای پردازنده کمکی 80X87 حفظ می کند. هنگام مونتاژ دستورالعمل های JMP و CALL، به طور پیش فرض، در صورت امکان، از نوع SHORT این دستورالعمل ها استفاده می شود. اما می توانید قبل از آدرس پرش NEAR یا FAR را مشخص کنید که منجر به تولید دستورات مربوطه می شود. یادآوری دستور RET مربوط به CALL FAR RETF است. استفاده از نشانگرهای WORD PTR یا BYTE PTR ممکن است و در موارد مشکوک ضروری است. هنگام ورود به برنامه، مجاز است پیشوندهای CS:, ES:, SS: را جلوتر از دستور در همان خط چاپ کنید.

مثال. برنامه ای برای پر کردن صفحه با علامت "!".

A 200 را تایپ کنید (Enter) سپس وارد برنامه شوید

در پایان برنامه، یک دستور INT 20 وجود دارد که کنترل را به مانیتور فرمان دیباگر باز می گرداند. این برنامه را با دستور اجرا کنید

ج - مقایسه این دستور دو منطقه حافظه را بایت به بایت مقایسه می کند و تمام تفاوت های بین آنها را در فرم چاپ می کند

<адрес> <содержимое> <содержимое> <адрес>

در این مدخل، اطلاعات مربوط به قسمت اول حافظه در سمت چپ و اطلاعات مربوط به قسمت دوم در سمت راست آورده شده است.

مثال. دو بلوک حافظه 256 بایتی را مقایسه کنید. اولی از آدرس 100 شروع می شود، دومی از آدرس 300 شروع می شود.

برای این کار باید تایپ کنید

C 100L100 300 (Enter)

این دستور می تواند برای مثال هنگام بررسی هویت دو فلاپی دیسک مفید باشد. برای انجام این کار، بلوک های مربوط به این فلاپی دیسک های مورد علاقه ما در مناطق حافظه مجاور بارگذاری می شوند، که سپس با دستور C تجزیه و تحلیل می شوند.

د - تخلیه رم. این دستور یک پرینت از ناحیه مشخص شده RAM به نمایشگر می دهد که به صورت هگزادسیمال نشان داده شده است و در سمت راست نمایش نمادین آنها را نشان می دهد. علاوه بر این، ترکیب کدهایی که نمایش نمادین در استاندارد ASCII ندارند به صورت نقطه نشان داده می شوند. رشته شانزده بایت را نمایش می دهد. در این حالت آدرس کامل بایت سمت چپ در سمت راست نشان داده می شود. بنابراین، در یک خط یک Dump هگزادسیمال و همچنین یک تخلیه ASCII از شانزده بایت RAM وجود دارد. اگر دستور D بدون پارامتر داده شود، در مجموع 128 بایت (80H) در هشت خط روی صفحه نمایش داده می شود. هر خط دارای یک کاراکتر "-" است که 16 بایت را به نصف تقسیم می کند: بین بایت های هشتم و نهم.

مثال. نشانگرهای برداری سی و دو وقفه اول را مشاهده کنید (20H).

دستور باید وارد شود

D 0:0.7F (ورود)

E - دستور تغییر محتوای بایت ها. این دستور به شما این امکان را می دهد که محتویات حافظه را بایت به بایت به جلو و عقب مشاهده کنید و در صورت لزوم محتوای بایت هایی را که مشاهده می کنید تغییر دهید.

ورودی دستور:

E<адрес>(وارد)

باعث می شود که اشکال زدا به حالت ویرایش تک بایتی تغییر کند. این محتویات بایت فعلی را به صورت هگزادسیمال و به دنبال آن یک نقطه چاپ می کند. پس از آن، می توانید مقدار محتوای جدید بایت را تایپ کنید، اما همچنین می توانید بدون تایپ چیزی، محتوای بایت را به همان صورت باقی بگذارید. سپس باید یکی از سه کاراکتر کنترل را تایپ کنید:

الف) "فضا" که به معنای انتقال به ویرایش بایت بعدی است.

ب) "ورود". با این کار از حالت ویرایش بایت به سطح فرمان دیباگر خارج می شود.

v) "-". با فشار دادن این علامت به ویرایش بایت قبلی تبدیل می شود.

مثال. مقدار شمارنده ساعت سیستم را تغییر دهید.

بیایید دستور را وارد کنیم

و چهار عدد 70 70 70 70 را که با فاصله از هم جدا شده اند و سپس carriage return 0D را تایپ کنید. سپس از دیباگر خارج شده و دستور زمان سیستم عامل را اجرا کنید.

F - دستور fill. این دستور به شما اجازه می دهد تا محتویات محدوده مشخص شده رم را با یک رشته تکراری از بایت های داده شده و مقادیر پر کنید. به طور خاص، زمانی که زنجیره از یک بایت تشکیل شده است، این دستور به شما اجازه می دهد تا ناحیه حافظه مورد نظر را در زمانی که بایت صفر است، تنظیم مجدد کنید، و همچنین یک بایت را در همه بیت ها قرار دهید و آن را با بایتی برابر با FF پر کنید.

دستور دارای نحو زیر است:

اف<диапазон_памяти> <цепочка байтов>(وارد)

مثال. ناحیه حافظه را که از آدرس DS:0100 شروع می شود، با صفر برای مجموع 16384 بایت (4000 16) پر کنید.

F 100L4000 00 (ورود کنید)

توسط تیم بررسی کنید

D 100L4000 (Enter)

G - دستور اجرای برنامه. این دستور برای اجرای برنامه برای اجرا طراحی شده است. در این حالت، اگر ناحیه ای از حافظه که در آن داده ها ذخیره می شود به عنوان یک برنامه به کنترل منتقل شود، رایانه "یخ می زند" و نیاز به راه اندازی مجدد دارد. در مواردی که برنامه دارای خطاهای جدی است (به عنوان مثال، دستور بازگشت INT 20 به سطح دستور دیباگر وجود ندارد)، تلاش برای اجرای آن با استفاده از دستور G نیز باعث یخ زدن رایانه می شود.

این عملگر معمولاً به یکی از چهار شکل زیر استفاده می شود:

اجرای این اپراتور به انتقال کنترل به آدرس CS:IP کاهش می یابد. مقادیر CS و IP را می توان با تایپ کردن دستور R (Enter) برای پاک کردن همه رجیسترهای پردازنده پیدا کرد.

ب) G=<адрес>(وارد)

در این حالت برنامه در آدرس مشخص شده راه اندازی می شود.

ج) جی<адрес>(وارد)

در این حالت برنامه از آدرس CS:IP راه اندازی می شود و با رسیدن به اپراتور با آدرس مشخص شده BREAK-stop اجرای برنامه انجام می شود. یک اشتباه رایج برای مبتدیان این است که هنگام استفاده از دستور G علامت مساوی را حذف می کنند. در این حالت آدرس مشخص شده به عنوان یک آدرس استراحت در نظر گرفته می شود و اگر CS:IP به عنوان مثال به یک ناحیه داده اشاره کند، کامپیوتر "آویزان شدن".

د) G=<адрес> <другой_адрес>(وارد)

در این حالت، برنامه از آدرسی که بعد از علامت "=" نشان داده شده است راه اندازی می شود و اگر برنامه به دستوری با مقدار آدرس نشان داده شده توسط دوم (آدرس دیگر) برسد، متوقف می شود. به این روش توقف یک برنامه، معرفی نقطه شکست می گویند. هنگامی که یک نقطه شکست مشخص می شود، بایت فرمان مربوطه در آن آدرس با دستور INT 3 که اندازه آن 1 بایت است جایگزین می شود. وقتی به نقطه بازرسی رسید، مقدار اصلی بایت بازیابی می شود.

ابتدا وارد برنامه شوید (با استفاده از دستور A 100):

MOV ,1234

DEC BX؛ نقطه شکست را در اینجا تنظیم کنید

برنامه را با دستور G=100 109 اجرا کنید (Enter) برنامه با رسیدن به آدرس 109 متوقف شد و رجیسترها را به طور کامل تخلیه کرد.

H - دستور حسابی هگزادسیمال. این دستور به شما اجازه می دهد که مجموع و تفاضل دو عدد هگزادسیمال مشخص شده در دستور را بدست آورید.

در پاسخ، 1 (جمع) و FFFF (تفاوت) دریافت می کنیم.

I - دستور ورودی از پورت. این دستور به شما امکان می دهد محتویات پورت I/O را با آدرس مشخص شده بخوانید و آن را به صورت هگزادسیمال روی صفحه چاپ کنید.

دستور دستور:

من<адрес_порта>(وارد)

در این صورت محتویات پورت B را از رابط جانبی قابل برنامه ریزی 82 دریافت خواهیم کرد.

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

L<адрес><номер_диска><начальный_сектор><число_секторов>(وارد)

در اینجا "آدرس" به معنای آدرس شروع در RAM است که محتوای بخش های بلاک به ترتیب از آن شروع می شود. متغیر "Disk number" نشان می دهد که از کدام دیسک بارگیری می شود. عدد 0 به معنای دیسک A، عدد 1 به معنای دیسک B، عدد 2 به معنای دیسک C و غیره است. دو متغیر بعدی به ترتیب نشان می‌دهند که خواندن از کدام بخش شروع می‌شود و تعداد کل بخش‌های خوانده شده.

بلوک BOOT را از فلاپی دیسک A: در RAM بارگیری کنید، از آدرس DS:1000 شروع کنید، که برای آن باید دستور را اجرا کنید.

L 1000 0 0 1 (ورود کنید)

سپس محتویات بلوک BOOT را می توان با دستور چاپ کرد

D1000L200 (Enter)

و همچنین جدا کردن

U 1000L200 (Enter)

ن<имя_файла>(وارد)

در مرحله بعد باید دستور L را بدون آرگومان اجرا کنید. در نتیجه این اقدامات، فایل (به جز فایل‌های با پسوند EXE) از آدرس CS:100 در RAM بارگذاری می‌شود. اگر فایل در حال بارگیری پسوند EXE داشته باشد، دیباگر فایل را با شروع CS:0 بارگذاری می کند. تعداد بایت های خوانده شده در جفت ثبات BX:CX پس از اجرای دستور L ذخیره می شود.

M - دستور کپی این دستور محتویات بخشی از RAM را در قسمت دیگری از RAM کپی می کند. دستور دستور به صورت زیر است:

م<диапазон> <начальный_адрес>(وارد)

در اینجا "range" ناحیه حافظه ای که باید کپی شود و "start_address" نشان دهنده آدرس اولین بایتی است که داده های کپی شده از آن قرار می گیرند. از این دستور می توان برای ذخیره موقت محتویات رم و سپس بازیابی آن استفاده کرد.

ابتدا بیایید به محتویات حافظه نگاه کنیم:

D100L100 (ورود)

سپس قسمتی از حافظه را ذخیره می کنیم و از آدرس شروع می کنیم

M 100L100 1000 (Enter)

زاپ کردن محتوای اصلی

F 100L100 0 (Enter)

بیایید صفر شدن را بررسی کنیم

D100L100 (ورود)

و در نهایت محتوای اصلی را بازیابی کنید

M 100L100 100 (Enter)

N - دستور نام. این دستور ابتدا نام فایل را تعیین می کند که سپس یا با دستور L از روی دیسک خوانده می شود یا با دستور W روی دیسک نوشته می شود. نحو این دستور به صورت زیر است:

ن<имя_файла>(وارد)

بیایید فایل AUTOEXEC.BAT را از دیسک داخل رم بخوانیم. برای این کار اجرا می کنیم

N C:\AUTOEXEC.BAT (ورود)

جفت ثبات BX:CX شامل طول فایل دانلود شده بر حسب بایت خواهد بود.

O - دستور خروجی داده به پورت. این دستور به شما امکان می دهد بایت مشخص شده را با آدرس داده شده به پورت خروجی دهید. برای تست عملکرد تجهیزات جانبی و شاسی روی مادربرد در حالت تعاملی مفید است. دستور دستور:

O<адрес_порта> <величина>(وارد)

در اینجا، به جای "address_port"، آدرس پورت مورد نیاز در محدوده 0-FFFF جایگزین می شود، و به جای "value" - مقداری که سپس در پورت بارگذاری می شود. اگر پورت 16 بیتی باشد، "مقدار" می تواند یک عدد هگزادسیمال 4 رقمی باشد که در پورت بارگذاری می شود.

موتور درایو A: برای فلاپی دیسک می توانید با دستور زیر آن را روشن کنید

درباره 3F2 10 (Enter)

R یک دستور ردیابی سطح بالا است. این دستور مانند دستور T برای ردیابی برنامه در نظر گرفته شده است. با این حال، بر خلاف ردیابی T، این ردیابی جزئیات کمتری دارد. نه زیرروال ها و وقفه های برنامه را ردیابی می کند و نه حلقه های LOOP و دستورات رشته های تکراری را ردیابی می کند. مانند T-tracing، پس از هر دستور، محتویات تمام ثبات ها و دستور اجرایی بعدی چاپ می شود. دستور دستور:

P=<адрес> <число_команд>(وارد)

می توانید یکی از دو گزینه خط فرمان را حذف کنید:<адрес>و/یا<число_команд>. پارامتر<адрес>آدرس شروعی که ردیابی از آن انجام خواهد شد و پارامتر را مشخص می کند<число_команд>تعداد کل دستوراتی که پس از فشار دادن کلید (Enter) اجرا می شود را نشان می دهد. برای اینکه آدرس را با تعداد دستوراتی که باید اجرا شود اشتباه نگیرید، هنگام تعیین آدرس باید کاراکتر "=" را وارد کنید. این نوع P-trace در مطالعه منطق کلی اجرای برنامه بسیار مفید است و خستگی جزئیات ردیابی را از بین می برد. در مطالعه اولیه برنامه، لازم است با P-tracing شروع شود.

از آدرس 100 برنامه زیر را وارد کنید

سپس P-tracing را انجام خواهیم داد. برای این کار ابتدا دستور Р=100 (Enter) و سپس پی در پی را وارد کنید

پس از آن، ما ردیابی T دقیق معمول را انجام خواهیم داد

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

R - دستور ثبت dump/correction. این دستور به شما این امکان را می‌دهد که محتویات همه رجیسترها و همچنین پرچم‌ها را به صورت همزمان مشاهده کنید یا مقادیر رجیسترهای فردی و ثبت پرچم را با قابلیت تغییر آن‌ها مشاهده کنید.

فهرستی از همه رجیسترها و همچنین دستوری که توسط CS:IP به آن اشاره شده است را ارائه می دهد.

آر<имя_регистра>(وارد)

محتویات رجیستر مشخص شده را چاپ می کند و سپس یک دونقطه را در خط بعدی چاپ می کند. سپس کاربر می تواند کلید (Enter) را فشار داده و به مانیتور فرمان دیباگر بازگردد یا قبل از فشار دادن کلید (Enter) یک مقدار ثبت جدید تنظیم کند. در حالت دوم، مقدار ثبت قدیمی با مقدار جدید جایگزین می شود. نام‌های ثبت احتمالی: AX، BX، CX، DX، SP، BP، SI، DI، DS، ES، SS، CS، IP، F (رجیستر پرچم).

هنگام استفاده از دستور

به خاطر داشته باشید که مقادیر پرچم به روشی بسیار خاص کدگذاری می شوند. جدول زیر یک جدول رمزگذاری است که در آن جفت کاراکتر در سمت چپ با مقدار 0 پرچم مربوطه و در سمت راست با مقدار برابر با 1 مطابقت دارد (پرچم تنظیم شده است):

هنگام اجرای یک دستور

مقادیر پرچم به ترتیب معکوس به ترتیب جدول در خط چاپ می شوند. بلافاصله پس از این، یک کاراکتر خط تیره روی خط چاپ می شود<->، دیباگر وارد حالت انتظار برای ورودی صفحه کلید می شود. اگر کاربر فقط کلید (Enter) را فشار دهد، پرچم ها تغییر نمی کنند و به مانیتور فرمان دیباگر باز می گردند. با این حال، قبل از آن، کاربر می تواند مقادیر جدیدی را برای برخی از پرچم ها مطابق جدول رمزگذاری تایپ کند. ترتیبی که آن را دنبال می کند مهم نیست.

S - فرمان جستجو. دستور جستجوی مجموعه ای از بایت های مرتب شده به شما امکان می دهد یک رشته مشخص از بایت ها را در یک محدوده مشخص از RAM جستجو کنید و این دستور را دارد:

اس<диапазон_памяти> <цепочка_байтов>(وارد)

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

فرض کنید باید تعیین کنیم که آیا رشته "DOS" در 32K اول RAM وجود دارد یا خیر. برای این کار دستور را وارد کنید

S 0:0L8000 44 4F 53 (Enter)

T - دستور ردیابی. این دستور به شما امکان می دهد یک یا چند دستور را در حالت ردیابی اجرا کنید، محتویات همه ثبات ها و یادداشت فرمان اجرایی رمزگشایی شده بعدی را چاپ کنید. پس از ردیابی دستورالعمل فعلی، نشانگر IP جابجا می شود تا به دستور بعدی اشاره کند. تیم

فرمان جریان واحدی را که CS:IP به آن اشاره می کند با تغییر IP مربوطه ردیابی می کند.

تی<число>(وارد)

یک اثر متوالی از چندین دستور ایجاد می کند که تعداد کل آنها در دستور مشخص شده است.

T=<адрес>(وارد)

یک دستور را به آدرس مشخص شده ردیابی می کند.

نمای کلی دستور T به شرح زیر است:

T=<адрес> <число_команд>(وارد)

دستور: T=FFFF:0 (ورود)

اولین دستوری را که در ابتدای راه اندازی کامپیوتر اجرا می شود، ردیابی می کند.

U - دستور جداسازی قطعات. این دستور به شما اجازه می دهد تا برنامه های بارگذاری شده در فضای کاری دیباگر را جدا کنید. نحو کلی این است:

U<начальный_адрес> <длина>(وارد)

U<начальный_адрес>,<конечный_адрес>(وارد)

باعث جداسازی 32 بایت می شود که از بایتی که CS:IP به آن اشاره می کند، شروع می شود و خروجی لیست به دست آمده روی صفحه نمایش داده می شود.

W - دستور نوشتن روی دیسک. این دستور به شما این امکان را می دهد که در یک دیسک (فلاپی دیسک یا هارد دیسک) در بلوک های متوالی محدوده مشخص شده رم را بنویسید و همچنین روی فایل ها بنویسید. نوشتن در بخش های دیسک توسط دستور انجام می شود

دبلیو<адрес><номер_диска><начальный_сектор><число_секторов>(وارد)

این دستور بیش از 80 سکتور بر روی دیسک نمی نویسد، تعداد سکتورها بیشتر از 80 نیست. پارامتر<адрес>به معنای آدرس حافظه اصلی است که از آنجا محتوای حافظه روی دیسک کپی می شود. پارامتر<номер диска>دیسکی را که باید روی آن نوشته شود نشان می دهد (0-disk A:, 1-disk B:, ..., 80 - hard drive C:). پارامتر<начальный сектор>تعداد بخش منطقی را مشخص می کند که از آنجا تصویر RAM بارگیری می شود. پارامتر<число секторов>تعداد کل بخش های نوشته شده روی دیسک را نشان می دهد.

بیایید محتویات ناحیه BIOS RAM را در یک فایل روی دیسک کپی کنیم. با فرض وجود PC / AT با اندازه استاندارد VIOS 64K، ابتدا رجیستر BX را ریست می کنیم و سپس آن را در ثبات CX 2000H قرار می دهیم. در مرحله بعد، با دستور، نام فایلی را که نیمه قدیمی بایوس را در آن کپی می کنیم، تنظیم کنید

N BIOS.COM (ورود)

و در نهایت دستور

W F000:E000 (Enter)

محتویات بایوس را در فایل BIOS.COM می نویسد.


برترین مقالات مرتبط