برنامه Debug
برنامه Debug محيطی برای بررسی فايل های مقصد دودوئی و اجرائی است. برنامه امکان انجام تغييرات جزئی در يک برنامه اجرائی را فراهم می کند بدون اينکه نياز به دوباره اسمبل کردن آن باشد.
دستورات Debug
برنامه Debug ابزاری جهت اشکالزدائی، اجرا و تغيير برنامه ها می باشد. اين برنامه امکان نوشتن و اجرای برنامه های کوتاه اسمبلی، نمايش و تغيير محتوای حافظه و ثبات ها، تهيه ليست اسمبلی از يک برنامه اجرائی و دسترسی به پورت ها را می دهد
برنامه Debug جزو فرامين خارجی سيستم عامل DOS است و همراه با سيستم عامل نصب می شود. در سيستم عامل ويندوز می توانيد آنرا در شاخه WINDOWS\system32 پيدا کنيد.
به دو طريق می توان Debug را اجرا کرد. در روش اول تنها نام برنامه Debug در خط فرمان سيستم عامل وارد می شود. در روش دوم نام يک فايل اجرائی و ليست پارامترهای موردنياز آن مقابل کلمه Debug وارد می شود. در اين حالت فايل اجرائی در حافظه لود می شود و تعداد بايت های آن در ثبات های BX:CX قرار می گيرد.
دستورات Debug
با اجرای برنامه علامت آمادگی ( _ ) ظاهر می شود. کليه فرامين Debug در مقابل اين علامت بايد وارد شود. دستورات Debug همگی شامل يک حرف و تعدادی پارامتر هستند.
اگر خطائی در گرامر دستور وجود داشته باشد Debug دستور و محل خطا را نمايش می دهد. هنگام وارد کردن دستورات می توانيد از ترکيب حروف بزرگ و کوچک استفاده کنيد.
کليه فرامين Debug با کليد کنترل Control+C خنثی می شوند.
فرامين در جدول زير ليست شده است:
| دستور |
عمل |
شرح |
مثال |
| A [address] |
Assemble |
وارد کردن دستورات اسمبلی |
A CS:0100 |
| C range address |
Compare |
مقايسه بخشی ازحافظه با بخش ديگر |
C 100 L 100 300 |
| D [range] |
Dump |
نمايش محتويات حافظه |
D cs:100 110 |
| E address [list] |
Enter |
تغيير محتويات حافظه |
E 100 EB |
| F range list |
Fill |
پرکردن آدرس داده شده با مقادير معين |
F 04BA:100 L 100 42 |
| G [=address [address…]] |
Go |
اجرای برنامه موجود در حافظه |
G cs:7550 |
| H value value |
Hex |
حاصل جمع و تفريق دو عدد هگز |
H 19F 10A |
| I value |
Input |
خواندن يک بايت از پورت مشخص شده |
I 2F8 |
| L [address [drive:record record]] |
Load |
بار کردن يک فايل در حافظه |
L 04BA:100 |
| M range address |
Move |
انتقال يک بلاک حافظه |
M CS:100 110 CS:500 |
| N filename [filename] |
Name |
تنظيم نام فايل |
N file1.exe |
| O value byte |
Output |
ارسال يک بايت به پورت خرجی |
O 2F8 4F |
| Q |
Quit |
خروج از محيط Debug |
Q |
| R [register-name] |
Register |
نمايش و تغيير محتويات ثبات ها |
R AX |
| S range list |
Search |
جستجوی حافظه |
S 0FE4:100 110 41 |
| T [=address] [value] |
Trace |
اجرای خط به خط دستورات اسمبلی |
T=011A:0100 1 |
| U [range] |
Unassemble |
نمايش دستورات اسمبلی |
U 04BA:100 L 10 |
| W [address [drive:record record]] |
Write |
نوشتن فايل روی ديسک |
W CS:100 1 37 2B |
| ? |
|
نمايش ليست کليه فرامين Debug |
? |
مثال. برای ذخيره برنامه موجود در حافظه روی ديسک نام فايل و اندازه آن بايد به صورت زير مشخص شود:
_N filename.Com
_R BX:CX
_W
مثال. دستور r محتويات ثبات های CPU و دستورالعمل بعدی که بايد اجرا شود را نمايش می دهد.
در نمايش محتويات ثبات ها وضعيت فلگ ها با کدهای زير مشخص می شوند:
| Flag |
Set |
Clear |
| Overflow |
OV |
NV |
| Direction |
DN(Decrement) |
UP(Increment) |
| Interrupt |
EI(Enabled) |
DI(Disabled) |
| Sign |
NG(Negative) |
PL(Plus) |
| Zero |
ZR |
NZ |
| Auxiliary Carry |
AC |
NA |
| Parity |
PE(Even) |
PO(Odd) |
| Carry |
CY |
NC |
|