دستور A ( Assemble)
با استفاده از این دستور می توانیم دستورات اسمبلی 8086 ، یا 8088 ، و 80286 را تایپ نمائیم تا جهت اجرای آن دستورات ، نیازی به اسمبلر نباشد . با دستور A می توانیم براحتی برنامه های اسمبلی خود را در debug بنویسیم وسپس در فایل COM و EXE ذخیره کنیم . این دستور به صورت زیر به کار می رود :
A [Address]
Address محل شروع کار دستور A را مشخص می کند .
مثال :
C:\> debug test.com
-A 100
-40D5:0100 int 5
-40D5:0102 mov AH,0
-40D5: 0104 int 21
-40D5:0106
مثال فوق محتویات فایل test.com که از سه دستور اسمبلی تشکیل می شود را می خواهیم روی دیسک ذخیره کنیم :
-H 106 100
0206 0006
-R CX
CX 0000
:6
-W
Written 0006 bytes
در دستور اول تعداد بایتهای مصرفی توسط 3 دستور فوق را مشخص کردیم . در دستور دوم محتویات ثبات CX را 6 ( تعداد بایتهای مصرفی توسط 3 دستور اسمبلی ) قرار داده ایم و در دستور بعدی 3 دستور فوق را در فایل test.com ذخیره کرده ایم .
دستور U ( Unassemble)
این دستور موجب می شود تا بتوانیم برنامه به زبان ماشین را که در فایلهای COM و یا EXE ذخیره شده است. به برنامه زبان اسمبلی تبدیل کنیم. این دستور به صورت زیر به کار می رود :
U [ Memory Renge]
Memory Renge مشخص کننده قسمتهایی از حافظه است که دستورات زبان ماشین موجود در این بازه باید به زبان اسمبلی تبدیل شود .
مثال :
C:\> debug test.com
-U 100 , L , 6
40EB:0100 CD05 INT 05
40EB :0102 B400 MOV AH,00
40EB:0104 CD21 INT 21
اکنون براحتی می توانیم برنامه فوق را تغییر دهیم. فرض کنید می خواهیم اولین دستور برنامه به INT 18 تبدیل شود :
-A 100
40EB :0100 INT 18
40EB : 0102
-U 100,L,6
40EB:CD18 INT 18
40EB:B400 MOV AH,00
40EB:CD21 INT 21
-W
Writing 0006 bytes
-Q
C:\>
اگر این دستور را بدون محدوده حافظه ، اجرا کنیم یر روی 20H بایت عمل خواهد کرد.
دستور C ( compare)
این دستور برای مقایسه محتویات دو قسمت مختلف از حافظه به کار رفته و به صورت زیر استفاده می شود :
C < Memory Renge>
دستور C محتویات محلهایی از حافظه را که توسط Memory Renge مشخص می شود و با همان مقدار از حافظه که ازآدرس مشخص شده در این دستور شروع می شود مقایسه می کند.
مثال :
-C 100,1FF 300
دستور فوق موجب می شود تا محلهایی از حافظه که بنی آدرس های 100 و 1FF است با محلهایی از حافظه که از محل 300 به بعد قرار دارد مقایسه شود. بدیهی است که قسمتی از حافظه که از محل 300 به بعد قرار دارد و باید در مقایسه شرکت کند ، برابر با قسمتی از حافظه است که از آدرس 100 تا 1FF قرار دارد . دستور فوق معادل دستور ذیل است :
-C 100,L,100 300
دستور T ( Trace)
این دستور موجب اجرای برنامه موجود در حافظه به صورت دستور به دستور می شود . بدین معنی که پس از اجرای هر دستور محتویات جدید ثباتها را نمایش می دهد و برای اجرای دستور بعدی برنامه ، باید یک بار دیگر این دستور را صادر کرد.
این دستور به صورت زیر به کار می رود :
T [=Address][Value]
آدرس مشخص کننده محلی از حافظه است که دستورات موجود در حافظه از آن محل به بعد ( به اندازه یک دستور) باید توسط دستور T اجرا شوند.
مقدار یا Value تعداد دستوراتی را مشخص می کند که دستور T باید آنها را اجرا کند که اگر منظور نشود ، یک فرض خواهد شد .
دستور P ( Proceed)
این دستور برای اجرای زیر برنامه ، وفقه های نرم افزاری ، و دستورات داخل حلقه تکرار مورد استفاده قرار گرفته و به صورت زیر به کار می رود :
P [=Address] [Value]
آدرس مشخص کننده محل وجود دستوری است که محل وجود دستوری است که باید اجرا و اگر آدرس مشخص نشود ، دستوری که آدرس آن در ثبات IP است منظور خواهد شد.
مقدار تعداد دستوراتی را مشخص می کند که باید اجرا شوند . اگر ذکر نگردد یک ، فرض خواهد شد.
اگر اولین دستوری که باید توسط IP اجرا شوند . شروع یک حلقه تکرار ، وفقه های نرم افزاری ، دستور تکرار روی رشته ها و با فراخوانی زیر روال نباشد ، این دستور با دستور T یکسان است. دستور P محتویات ثباتها را در خاتمه کار در صفحه نمایش ، نشان می دهد.
پیامهای خطای debug
در حین کار با برنامه debug چنانچه دچار اشتباهاتی شده باشیم پیامهای خطایی صادر می شود که در ذیل مورد بحث قرا می گیرند.
خطای BF : در صورتی بروز می کند که در حین اجرای قرمان G ( go) بیشتر از 10 نقطه توقف استفاده کرده باشیم.
خطای BP : در صورتی بروز می کند که خواسته باشیم ثبات وضعیت ( falg) را مقدار بدهیم ، ولی از کاراکتر غیر مجازی استفاده کرده باشیم.
خطای BR : در صورتی بروز می کند که در حین استفاده از فرمان R ( register) به جای نام ثبات از یک نام غیر مجاز استفاده کرده باشیم.
خطا ی DF : در صورتی بروز می کند که برای یک بیت از ثبات وضعیت ( flag) دو مقدار را وارد کرده باشیم.
اجرا کردن یک برنامه ی اسمبلی با استفاده از ماکرواسمبلر 6.11
بعد از نصب کردن برنامه ی ماکرو اسمبلر 6.11 ابتدا فایلهای link.exe ، ml.exe و masm.exe و ml.err را به محلی که برنامه ی اسمبلی رو ذخیره کرده ایم کپی می کنیم فرض کنیم که نام برنامه test.asm در درایو مثلا F می باشد بدین طریق عمل می کنیم :
Start -> Run -> Cmd
بعد از وارد شدن به پنجره cmd وارد درایو F می شویم به صورت زیر عمل می کنیم :
C:\> f:
F:\> masm test.asm
با اجرای این دستور فایل test.asm ترجمه شده و سه فایل test.obj ، test.lst ، test.crf تولید می شوند.
فایل مقصد obj ( object) حاوی کدهای ماشین ابتدایی ، فایل لیست lst ( list) شامل لیست و کدهای ماشین و خطاها و فایل لرجاع متقابل crf ( cross reference) حاوی نمادهای مورد استفاده در برنامه ( اینکه کدام دستورات به کدام داده ها مراجعه می کنند) هستند.
بعد از آن باید برنامه رو لینک کنیم بدین صورت :
F:\> link test.obj
با این کار دو فایل به نام های test.map و test.exe ایجاد می شود. فایل map حاوی مکان نسبی و ادازه سگمنتها و خطاهای احتمالی لینک و فایل exe حاوی کد اجرایی برنامه شما خواهد بود.
بعد از این کار برنامه ی شما به اجرایی خواهد شد و می توانید با تایپ برنامه در CMD برنامه تان را اجرا کنید البته باید در مسیری باشید که برنامه اتان در ادنجا ذخیره شده است.
خسته نباشید ...



پیوند ها