1 / 40

اجرای دستورات و برنامه اسمبلی در محیط نرم افزار Debug

اجرای دستورات و برنامه اسمبلی در محیط نرم افزار Debug. استاد راهنما : آقای عبّاسی تهیه کننده: سعید رضا ولی زاده E-mail: srvalizadeh@yahoo.com. آشنایی با چند دستور اسمبلی و کاربرد آن ها. نکته اگر در دستور فقط عدد نوشته شود مانند: MOV BL,12

hetal
Download Presentation

اجرای دستورات و برنامه اسمبلی در محیط نرم افزار Debug

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. اجرای دستورات و برنامه اسمبلی در محیط نرم افزار Debug استاد راهنما : آقای عبّاسی تهیه کننده: سعید رضا ولی زاده E-mail: srvalizadeh@yahoo.com

  2. آشنایی با چند دستور اسمبلی و کاربرد آن ها • نکته اگر در دستور فقط عدد نوشته شود مانند: MOV BL,12 در این صورت عدد 12 به ثبات BL منتقل می شود. ولی اگر عدد داخل کروشه نوشته شود مثلا [0200] محتوای خانه حافظه ای که آدرس آن ، در سگمنت داده برابر 0200 است در نظر گرفته می شود. به عنوان مثال اگر نوشته شود: MOV BL,[0200] یعنی محتوای خانه حافظه ای که آدرس آن 0200 است به ثبات BL منتقل شود ، و اگر محتوای خانه حافظه آدرس مذکور ، عدد 25 باشد ، در این صورت عدد 25 به ثبات BL منتقل خواهد شد.

  3. کاربرد دستورات وقفه • دستور INT : باعث می شود که برنامه شما موقتا قطع شود ، و به برنامه های سیستم عامل ، یا برنامه های BIOS مراجعه شود ، عملیات خواسته شده را انجام دهد ، و دوباره به برنامه شما برگردد. • توجه : تمام مقادیر در مبنای hex هستند.

  4. تعدادی از سرویس های وقفه • گرفتن تاریخ سیستم از دستور INT 21H استفاده می شود، به شرطی که قبلا در ثبات AH مقدار 2AH قرار داده شده باشد. یعنی: MOV AH,2A INT 21 با اجرای این دستورات تاریخ سیستم در ثبات های زیر قرار میگیرد روزهای هفته ( 0 برای یکشنبه ، 1 جهت دوشنبه ،2...) AL= سال ( به صورت هگزا مثلا 07D0=2000 ) = CX ماه (به صورت هگزا 01 تا 0CH ) = DH روز (از 01 تا 1F به فرم هگزا) = DL • مثال

  5. دستور وقفه INT 3 2)پایان اجرای دستورات توسط دستور INT 3 CPU به محض اجرای این دستور متوقف می شود و در صورت لزوم می توان محتویات ثبات ها و خانه های حافظه را برسی کرد. • البته این دستور را می توان برای توقف اجرای دستورات برنامه نیز به کار برد ، در صورتی که از این دستور استفاده نشود ممکن است کامپیوتر قفل کند.

  6. DEBUG نرم افزار • ابزاری کمکی جهت اجرای دستورات زبان اسمبلی و برای ایجاد ، آزمایش ، اجرا ، تغییر و اشکال یابی برنامه ، به زبان اسمبلی است. • نکته : یکی از مزیت های استفاده از DEBUG ، این است که برنامه مستقیما قابل اجرا بوده ، نیازی به ترجمه ندارد

  7. مزیت های استفاده از محیط debug • مستقیما به زبان اسمبلی برنامه نوشت و آن را اجرا نمود. • برنامه آماده به زبان اسمبلی را می توان به محیط deubug انتقال داده و آن را آزمایش کرد • برنامه اسمبلی را می توان دستور به دستور اجرا کرد ، و محتوات ثبات ها ، و خانه حافظه را مشاهده و تغییرات لازم را انجام داد. • محتویات حافظه هر سگمنت را می توان دید • می توان تمام دستورات را به زبان اسمبلی و معادل آن را به زبان ماشین نشان داد.

  8. وارد شدن به محیط debug • کافیست فایل اجرایی این نرم افزار را یعنی debug.exe زا توسط سیستم عامل اجرا کنیم ، در این حالت محیط کاری شبیه به DOS باز می شود با این تفاوت که به جای خط فرمان داس (C:\>) یک علامت تیره(-) ظاهر می شود

  9. اجرای debug در windows • از start منو run را انتخاب می کنیم سپس کلمه debug را در run تایپ کرده دکمه enter را فشار می دهیم START MENU RUN DEBUG

  10. خارج شدن از محیط DEBUG • نکته: تمام دستورات debug تک حرفی هستند • جهت خارج شدن از محیط DEBUG از فرمان Q استفاده می کنیم ، که این فرمان باعث می شود به سیستم عامل برگردیم

  11. فرمان های برنامه DEBUG • فرمان A(Assemble) : این فرمان برای وارد کردن دستورات زبان اسمبلی در حافظه ، و ترجمه آن هاست. • شکل کلی این فرمان به صورت : • <آدرس شروع> A می باشد که این آدرس ، آدرس شروع خانه حافظه ای در سگمنت کد است که ما می خواهیم دستور از آن آدرس به بعد نوشته شود • (چون سیستم عامل به حافظه ای با افست آدرس 00 تا FF برای اطلاعات خود نیاز دارد ، لذا نرم افزار debug ، به عنوان پیش فرض از آدرس 100H برنامه را اجرا می کند.)

  12. پس از وارد کردن A100 دو عدد چهار رقمی ظاهر می شود که با یک علامت : از هم جدا شده اند مانند : -A 100 13BC:0100 عدد سمت چپ ، شماره سگمنت یعنی CS=13BC است و شماره سمت راست ، شماره افست خانه حافظه یعنی IP=100 می باشد. پس از دیدن این اعداد دستورات اسمبلی را وارد می کنیم. پس از هر دستور دکمه ENTER را می زنیم. • وقتی که دستورات به پایان رسید یک بار ، بدون نوشتن دستوری ، دکمه ENTER را فشار می دهیم تا کار ورود دستورات اسمبلی به پایان رسد.

  13. مثال (تایپ دستورات اسمبلی در محیط debug ) • MOV AL,6 ; (1) MOV BL,8 ; (2) ADD AL,BL ; (3) MOV DL,5 ; (4)

  14. نام گذاری برنامه • کافیست از فرمان : -N نام برنامه استفاده کنیم.مثلا در این مورد TEST.COM نام برنامه مربوطه می باشد که با فرمان زیر : -N TEST.COM این نام به برنامه اختصاص داده می شود

  15. فرمانU • دستور U (Un assemble) باعث می شود که دستوراتی که به زبان ماشین در حافظه قرار دارند ، به زبان اسمبلی برگردانده شود شکل کلی فرمان U <آدرس شروع> <آدرس پایان>

  16. مثال اگر بخواهیم از دستور 100H تا 104H را به صورت اسمبلی ببینیم U 100 104 نتیجه:

  17. اگر مقابل فرمان U شماره ای نگذاریم ، محتویات حافظه از CS:100 تا CS:120 را که 32 بایت می شود به صورت دستورات اسمبلی و معادل آن ها را به صورت دستورات زبان ماشین نشان می دهد دستورات زبان اسمبلی دستورات زبان ماشین

  18. فرمان R • R(Register) • این فرمان محتوای ثبات ها را نمایش می دهد ، علاوه بر این وضعیت بیت های پرچم را نشان می دهد R [نام ثبات] اگر نام ثبات ذکر نشود ، تمامی ثبات ها را روی مانیتور نمایش می دهد

  19. مثال -R توجه: وضعیت بیت های پرچم به صورت NV UP .. نوشته شده است.

  20. ثبات پرچم دارای وضعیت های زیر می باشد

  21. مشاهده محتویات یک ثبات خاص • کافی است بعد از فرمان R نام ثبات را تایپ کنیم به عنوان مثال: -R AX AX 000E :0000 محتویات ثبات AX را برابر 000E نشان می دهد. و در سطر بعد علامت : را می گذارد که اگر بخواهیم مقدار ثبات را عوض کنیم ، کافیست عدد مربوطه را تایپ کنیم که در این مثال بعد از علامت : عدد جدید مثلا صفر را وارد ثبات AX می کینم

  22. مشاهده محتویات ثبات پرچم • با استفاده از دستور -RF

  23. تغییر مقادیر بیت های پرچم • زمانی که دستور RF اجرا می شود ، پس از نمایش بیت های پرچم علامت – چشمک زن قرار می گیرد.در این زمان می توان مقادیر جدیدی به بیت ها اختصاص داد در اینجا مقدار NC را به CY تغییر می دهیم

  24. فرمان G • این فرمان باعث اجرای برنامه اسمبلی درون حافظه می شود • شکل کلی G <=آدرس شروع> <آدرس توقف> اولین آدرس که با علامت = شروع می شود به DEBUG می گوید که از چه آدرسی شروع به اجرای برنامه کند • اگر تنها یک عدد جلوی G نوشته شود ، دستورات تا زمانی ادامه دارد که برنامه خود به نحوی کار خود را به پایان برساند • اگر دستوری برای پایان دادن به کار وجود نداشته باشد ، اجرای برنامه متوقف نخواهد شد و کامپیوتر قفل می کند. علامت مساوی

  25. در ضمن این فرمان وضعیت ثبات ها در پایان اجرای دستورات را نیز نشان خواهد داد. • همچنین در سطر آخر ، دستور زبان اسمبلی که بعدا باید اجرا شود ، همراه با ترجمه آن به زبان ماشین را ، نیز نمایش می دهد.

  26. مثال کلی • کاربرد دستورات A,U,R,G وارد کردن برنامه در حافظه با فرمان A100 • MOV AX,1 • MOV BX,2 • MOV CX,3 • ADD AX,BX • ADD AX,CX • INT 3

  27. روند کار • نوشتن برنامه با دستور A • Unassemble کردن برنامه با فرمان U 100 10D • نشان دادن محتویات ثبات ها با فرمان R • اجرای برنامه با دستور G

  28. فرمان T • باعث اجرای خط به خط دستورات می شود T <=آدرس شروع> <تعداد دستورات> عدد اول آدرس اولین دستور شروع است و دومی تعداد دستوراتی است که باید اجرا شود. • با اجرای هر دستور ، محتویات ثبات ها و بیت های پرچم نمایش داده می شود • در صورتی که تعداد دستورات ذکر نشود تعداد دستور را یک فرض خواهد کرد.

  29. مثال • اجرای برنامه با دستور T • MOV AX,1 • MOV BX,2 • MOV CX,3 • ADD AX,BX • ADD AX,CX • INT 3

  30. فرمان E(ENTER) • جهت بررسی و تغییر محتویات یک خانه می باشد. • شکل کلی این فرمان E <آدرس> مثال E 120 اگر بخواهیم مقدار جدیدی مثلا 20 را وارد کنیم پس از ورود عدد کلید ENTER را فشار می دهیم

  31. فرمان F(FILL) • برای ذخیره داده ای در ناحیه خاصی از حافظه به کار برده می شود F <آدرس شروع> <آدرس پایان> <داده ها> مثلا اگر بخواهیم از آدرس 100تا 106را با مقدار 23 پر کنیم. F 100 106 23

  32. فرمان D(DUMP) • این فرمان باعث می شود که محتویات خانه های حافظه به صورت کد هگزادسیمال نمایش داده شود • علاوه بر این حروف و ارقامی که کد های اسکی آن ها قابل نمایش روی مانیتور هستند ، سمت راست مانیتور نمایش داده می شوند • اگر آدرس انتهای را نگذاریم محتوای 128بایت خانه حافظه نمایش داده می شود • اگر کدهای اسکی قابل نمایش نباشند در سمت راست نقطه نمایش داده خواهد شد

  33. مثال

  34. فرمان W • فرمان نوشتن بر روی دیسک • ابتدا توسط فرمان N به برنامه نامی نسبت می دهیم و سپس توسط فرمان W آن را دخیره می کنیم • فقط برنامه های با پسوند .COM را می توان به این طریق ذخیره نمود.

  35. فرمان های ورودی و خروجی • با فرمان ها ی ورودی و خروجی می توان اطلاعات را از پورت ها خواند یا در پورت ها نوشت . • فرمان I (برای خواندن یک بایت اطلاعات پورت ها ) -I <شماره پورت>

  36. مثال) پورت مربوط به وضعیت چراغ های روی صفحه کلید 417 است -I 417 که کامپیوتر عدد 20H را روی مانیتور می نویسد یعنی : شماره بیت : 7 6 5 4 3 2 1 0 مقدار بیت : 0 0 1 0 0 0 0 0 4SCROLL LOCK 5NUM LUCK 6CAPSLOCK

  37. فرمان خروجی O • برای فرستادن اطلاعات بر روی پورت O <شماره پورت> <مقدار جدید> مثال( فرمان اول باعث می شود بلند گو کامپیوتر یک سوت ممتد بکشد و فرمان دوم باعث قطع صدای بلندگو می شود -O 61 4F -O 61 4E

  38. مثال) گرفتن تاریخ از سیستم MOV AH,2AH INT 21H • با اجرای دستور فوق مقادیر تاریخ امروز در ثبات ها قرار می گیرد • شماره 1 یعنی دوشنبه AL=1 َچون به صورت هگزا است پس سال برابر 2006 می باشدCX=7D6 ماه یازدهم میلادی یعنی نوامبر DH=0B 14 هگزا به صورت دهدهی برابر 20 می شود DL=14 بنابراین تاریخ برابر دوشنبه 20 نوامبر 2006 می باشد.

  39. نتیجه AL روز هفته CX سال DH ماه DL روز

  40. مرجع : زبان ماشین و اسمبلی دکتر حسن سید رضی

More Related