تبليغاتX
UNiComp.iR | Download Direct Tutorials Video , Film | دانلودمستقیم فیلم آموزشی،کتاب،جزوه،مقاله

زبان اسمبلی - جلسه دوازدهم


دستور 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  برنامه تان را اجرا کنید البته باید در مسیری باشید که برنامه اتان در ادنجا ذخیره شده است.

 

 

خسته نباشید ...


Search Engine Submission - AddMe