1 / 16

تهیه وتنظیم: سید مصطفی موسوی

برنامه نویسی به زبان اسمبلی. فصل چهارم: قواعد برنامه نویسی اسمبلی. تهیه وتنظیم: سید مصطفی موسوی. مقررات برنامه نویسی اسمبلی. هر برنامه اسمبلی باید بصورت یکسری سگمنت کد و داده و پشته تعریف گردد. بسته به ساده یا پیچیده بودن برنامه تعداد سگمنت ها می تواند شامل یک یا چندین سگمنت باشد.

riva
Download Presentation

تهیه وتنظیم: سید مصطفی موسوی

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. برنامه نویسی به زبان اسمبلی فصل چهارم: قواعد برنامه نویسی اسمبلی تهیه وتنظیم: سید مصطفی موسوی

  2. مقررات برنامه نویسی اسمبلی • هر برنامه اسمبلی باید بصورت یکسری سگمنت کد و داده و پشته تعریف گردد. • بسته به ساده یا پیچیده بودن برنامه تعداد سگمنت ها می تواند شامل یک یا چندین سگمنت باشد. • هر برنامه حداقل یک سگمنت کد دارد و می توان سگمنت داده و پشته برای برنامه تعریف نکرد. • راهنمای اسمبلر • جزء دستورات اصلی اسمبلی نمی باشند • نکاتی از قبیل ابتدا و انتهای سگمنت، داده یا پشته بودن سگمنت و ... را مشخص می نمایند. • به اسمبلر کمک می کنند تا مقصود برنامه نویس را درک کرده و دستورات را به کد قابل اجرا تبدیل نماید.

  3. تعریف سگمنت کد • سگمنت کد بیان کننده دستوراتی است که برنامه نویس اجرای آنها را مد نظر دارد. • تعریف یک سگمنت در اسمبلی: Label SEGMENT …… Label ENDS

  4. تعریف سگمنت کد • تعریف سگمنت کد: CODSG SEGMENT ASSUME CS:CODSG …… CODSG ENDS END

  5. تعریف سگمنت کد • این قسمت کنترل سیستم را به سیستم عامل بازمیگرداند و با اجرای آن برنامه پایان می یابد: CODSG SEGMENT ASSUME CS:CODSG …… MOV AX, 4C00H INT 21H CODSG ENDS END

  6. تعریف سگمنت کد • مثال: برنامه ای بنویسید که مجموع دو رجیستر ALو BLرا بدست آورده، نتیجه را در رجیستر CLقرار دهد. CODSG SEGMENT ASSUME CS:CODSG ADD AL, BL MOV CL, AL MOV AX, 4C00H INT 21H CODSG ENDS END

  7. تعریف سگمنت داده • مثال: برنامه ای بنویسید که محتوای بایت صفر از سگمنت داده را که مقدار آن 45 است با رجیستر CLجمع کند و نتیجه را در بایت بعدی حافظه داده با نام RESULTقرار دهد. • ابتدا سگمنت داده را تعریف می نماییم: DATASG SEGMENT NUM DB 45 RESULT DB 0 DATASG ENDS سگمنت داده 2 RESULT 1 0 NUM

  8. تعریف سگمنت داده • سپس سگمنت کد را می نویسیم و رجیستر DS را مقدار دهی می کنیم: DATASG SEGMENT NUM DB 45 RESULT DB 0 DATASG ENDS CODSG SEGMENT ASSUME CS:CODSG, DS:DATASG MOV AX, DATASG MOV DS, AX MOV AX, 4C00H INT 21H CODSG ENDS END

  9. تعریف سگمنت داده • سپس کد دستورات را می نویسیم. DATASG SEGMENT NUM DB 45 RESULT DB 0 DATASG ENDS CODSG SEGMENT ASSUME CS:CODSG MOV AX, DATASG MOV DS, AX ADD CL, NUM MOV RESULT, CL MOV AX, 4C00H INT 21H CODSG ENDS END

  10. تعریف پروسه (Procedure) • برای نوشتن برنامه های ساخت یافته از پروسه یا روال استفاده می نماییم. CODSG SEGMENT ASSUME CS:CODSG MAIN PROC FAR ADD AL,BL MOV AX,4C00H INT 21H MAIN ENDP CODSG ENDS END MAIN

  11. تعریف پروسه (Procedure) • عبارت NEAR و FAR برای مشخص کردن دور یا نزدیک بودن پروسه می باشند. • اگر در برنامه پروسه اصلی داشته باشیم، از عبارت FAR برای تعریف آن استفاده می نماییم. • اگر از عبارت NEAR استفاده کنیم به این معنی است که پروسه مورد نظر در همان سگمنتی است که پروسه اصلی قرار دارد. • اگر از عبارت FAR استفاده کنیم به این معنی است که پروسه مورد نظر و پروسه اصلی، در سگمنت های جداگانه قرار دارند.

  12. تعریف سگمنت پشته (Stack) • سگمنت پشته نیز همانند سایر سگمنت ها تعریف می شود: STACKSG SEGMENT …. STACKSG ENDS • بعد از تعریف سگمنت پشته باید تعدادی بایت را برای استفاده در دستورات PUSH و POP تعریف نمود. STACKSG SEGMENT DB 100 DUP(?) STACKSG ENDS

  13. بیان کلی دستورات در اسمبلی • شکل دستورات در زبان اسمبلی معمولا به صورت زیر می باشد: • Opcode Destination, Source • مثال • ADD AL, 02H • MOV BL, AH

  14. بیان کلی دستورات در اسمبلی • اما شکل کلی دستورات در اسمبلی به صورت زیر است: • Label: Opcode Destination, Source ;Comment • مثال: • Loop1: ADD AL, 02H ;AL = AL + 2 • NEXT: MOV BL, AH ;Copy AH to BL • Label: • برای استفاده در دستورات پرش از label استفاده می نماییم: JMP Loop1 …. Loop1: ADD AL, 02H

  15. بیان کلی دستورات در اسمبلی • Comment: • برای نوشتن توضیح در هر خط از برنامه از Comment استفاده می کنیم. • در اسمبلی برای نوشتن توضیح از ; استفاده می نماییم. یعنی هر جا اسمبلر این علامت را دید آنرا جزء دستورات برنامه محسوب نمی کند و در نتیجه اسمبل نمی نماید. • همانند عبارت // در زبان C++ است. • توضیحات را می توان به هر زبانی (فارسی، انگلیسی و ... ) نوشت.

  16. انواع دیگر روشهای تعریف سگمنت • این قسمت حذف شده است.

More Related