برنامه 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