برنامه اشکالزدا DEBUG
Debug ابزاری جهت اشکالزدایی ، اجرا و تغییر در برنامه هاست و بیشتر برای کسانی مفید است که با زبان اسمبلی کار می کنند. این برنامه دارای خصیصه هایی است که به آسانی می توان از آنها استفاده نمود. بعضی از اعمالی که برنامه debug می تواند انجام دهد عبارتند از :
1- تست برنامه ها
2- انتقال فایلها به حافظه ، مشاهده محتویات آنها و اعمال تغییرات در آنها
3- اجرای برنامه های سیستم عامل DOS
4- خواندن سکتور هایی از دیسک و یا نوشتن محتویات جدیدی در آنها
5- ایجاد و اجرای برنامه های به زبان اسمبلی
یکی از مزایایی که نوشتن برنامه های به زبان اسمبلی در debug دارد این است که مستقیما قابل اجرا بوده و نیازی به ترجمه ندارند.
چون اعداد و ارقام و همچنین انجام محاسبات در debug در مبنای 16 می باشند ، لذا آشنایی مختصری با چگونگی انجام محاسبات در مبنای 16 ضروری است که دوستان عزیز حتما تبدیلات و مبناها رو بلدند.
از برنامه debug به صورت زیر استفاده می شود [path 1] DEBUG [Path 2] [File Name] [Parametring]
Path 1 محل وجود برنامه Debug را مشخص می کند که اگر منظور نشود ، مسیر جاری و یا مسیر های اعلام شده توسط فرمان Path منظور خواهند شد.
Path2 محل وجود فایلی را مشخص می کند که برنامه Debug باید روی آن کار کند.
پارامتر ها ، اسامی آرگومانهایی هستند که باید به فایل مورد نظر ( فایلی که debug روی آن کار می کند ) منتقل شوند.
پس از اجرای برنامه debug اعمال ذیل انجام می شود .
1- ثباتهای ناحیه SS, ES,DS,CS به آدرس اولین ناحیه بعد از برنامه debug اشاره می کند.
2- ثبات اشاره گر دستورالعمل ( IP) به آدرس 100H ( اولین دستور بعد از PSP ) اشاره می کند.
3- ثبات اشاره گر پشته به آخرین ناحیه یا قسمت موقت فایل Command.Com اشاره می کند .
4- محتوی سایر ثباتهای عمومی صفر خواهد شد و ثبات وضعیت شامل محتویات زیر خواهد بود :
UP EI PL NZ NA PO NC
الف ) دستور Debug
برنامه debug دارای تعدادی فرمان مختص به خود است که در ذیل به بررسی هریک از آنها می پردازم دستورها غالبا یک کاراکتری هستند.
دستور R ( Register)
این دستور برای نمایش محتویات ثباتها مورد استفاده قرار گرفته و به صورت زیر به کار می رود :
R [ Register Name]
اسم ثبات مشخص می کند که محتویات چه ثباتی باید نمایش داده شود. اگر اسم ثبات ذکر نشود محتویات کلیه ثباتها در مبنای 16 روی صفحه نمایش ظاهر خواهد شد. پس از نمایش محتویات ثبات مذکور علامت ":" ( دو نقطه) ظاهر شده و کامپیوتر منتظر دریافت محتویات جدید ثبات خواهد بود. اسامی ثباتها می توانند در دستور ظاهر شوند عبارتند از :
AX , BX, CX , DX , SP , BP , SI , DI , DS , ES , SS , CS , IP ,F
منظور از IP همان اشاره گر دستور و منظور از F همان ثبات وضعیت است.
مثال :
C:\> Debug CHKDSK.COM
-r
AX= 0000 BX=0000 CX=243B DX=0000 SP=FFFE BP=0000
SI=0000 DI=0000 DS=40EB ES=40EB SS=40EB CS=40EB
IP=0100 NV UP EI NZ NA PO NC
40EB :0100 E9 C523 JMP 24C8
-r IP
IP 0100
:
دستور H ( Hexarithmetic)
چون در برنامه Debug کلیه اعداد و ارقام در مبنای 16 بوده و محاسبات نیز در مبنای 16 انجام می شوند که کار کردن با آن ، کمی دشوار است. دستور H برای انجام محاسبات در مبنای 16 به کار می رود و می تواند در این زمینه به استفاده کننده کمک کند. این دستور به صورت زیر به کار می رود :
H
دو مقداری که در این دستور ذکر می شوند در مبنای 16 می باشند . دستور H حاصل جمع و تفریق این دو مقدار را در مبنای 16 محاسبه کرده و روی صفحه نمایش نشان می دهد که می توانیم در آدرس دهی از آن استفاده کنیم :
مثال :
-H 12 10
0022 0002
-H FF FF
01FE 0000
-H 1A 4F
0069 FFCB
همان طور که در مثال فوق مشاهد می کنید ، حاصل جمع دو مقدار در ستون اول و تفریق آنها در ستون دوم ظاهر می شوند.
دستور N ( Name)
با این دستور دو عمل ذیل را می توانیم انجام دهیم.
1- انتخاب نام فایل جهت انتقال آن به حافظه و یا انتقال محتویات حافظه به آن
2- انتخاب پرامتر هایی برای فایلی که debug روی آن کار می کند.
این دستور به صورت زیر به کار می رود :
N [Path] [File]
N [Path] [Files Names]
Path محل وجود فایلها را مشخص می کند.
نحوه کاربرد اول برای هدف اول و نحوه کاربرد دوم برای هدف دوم مورد استفاده قرار می گیرد.
C:\> Debug
-N C:\Dos\CHKDSK.COM
-L
-G
مثال فوق ، اولین دستور ( N) فایل CHKDSK.COM را که روی درایو C و مسیر Dos قرار دارد انتخاب می کند. دستور دوم ( L) این فایل را به حافظه منتقل می کند . دستور سوم ( G) فایل برنامه chkdsk.com را اجرا می کند. ( نتیجه اجرا این فرمان را در اینجا نیاوردم).
اگر بخوام محتویات موجود در حافظه را ( که همان محتویات فایل chkdsk.com است.) در فایل chk.com بنویسم باید به طریق ذیل عمل کنم :
-N C:\DOS\CHK.COM
-W
دستور اول ، فایلی را که می خواهیم محتویات حافظه به آن منتقل شوند مشخص می کند و دستور دوم محتویات حافظه را در آن می نویسد .
-N FILE1.EXE
-L
-N FILE1.DAT FILE2.DAT
-G
در مثال فوق ، فایل file1.exe انتخاب و توسط دستور L به حافظه منتقل می شود. دستور سوم فایلهای file2.dat و file1.dat را به عنوان پارامتر های فایل file1.exe انتخاب می کند و دستور G فایل file1.exe را با پارامتر های file1.dat و file2.dat اجرا می کند.
اگر پس از دستور G دستور W را صادر کنیم این دستور موجب می شود تا محتویات فایل file1.exe در فایل file1.dat نوشته شود. برای جلوگیری از این حالت توصیه می کنم که قبل از اجرای هر دستور L و یا W نام فایل مناسب را توسط دستور N انتخاب کنید.
خیلی خوب برای این جلسه کافیه. خسته نباشید
ادامه دارد ...................



پیوند ها