16
وی س و م ی ف صط م د ی س م: ی ظ ن ت ه و ی ه ت ی ل ی م س ا$ ان ب ه ز ب ی س ی و ن ه م ا رب ب ی ل ی م س ی ا س ی و ن ه م ا رب ب واعد ق هازم:7 چ ل ص ف

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

  • Upload
    riva

  • View
    78

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

برنامه نویسی به زبان اسمبلی

فصل چهارم: قواعد برنامه نویسی اسمبلی

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

هر برنام!ه اس!مبلی بای!د بص!ورت یکس!ری س!گمنت ک!د و داده وپشته تعریف گردد.

بس!ته ب!ه س!اده ی!ا پیچی!ده ب!ودن برنام!ه تع!داد س!گمنت ه!ا میتواند شامل یک یا چندین سگمنت باشد.

هر برنام!ه ح!داقل ی!ک س!گمنت ک!د دارد و می ت!وان س!گمنتداده و پشته برای برنامه تعریف نکرد.

راهنمای اسمبلرجزء دستورات اصلی اسمبلی نمی باشند نک!اتی از قبی!ل ابت!دا و انته!ای س!گمنت، داده ی!ا پش!ته ب!ودن س!گمنت

و ... را مشخص می نمایند. به اس!مبلر کم!ک می کنن!د ت!ا مقص!ود برنام!ه ن!ویس را درک ک!رده و

دستورات را به کد قابل اجرا تبدیل نماید.

مقررات برنامه نویسی اسمبلی

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

برنام!ه ک!ه اس!ت دس!توراتی کنن!ده بی!ان ک!د سگمنت نویس اجرای آنها را مد نظر دارد.

:تعریف یک سگمنت در اسمبلی

Label SEGMENT

……

Label ENDS

تعریف سگمنت کد

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

:تعریف سگمنت کدCODSG SEGMENT

ASSUME CS:CODSG

……

CODSG ENDS

END

تعریف سگمنت کد

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

عام!ل سیس!تم ب!ه را سیس!تم کن!ترل قس!مت این بازمیگرداند و با اجرای آن برنامه پایان می یابد:

CODSG SEGMENT

ASSUME CS:CODSG

……

MOV AX, 4C00H

INT 21H

CODSG ENDS

END

تعریف سگمنت کد

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

مث!ال: برنام!ه ای بنویس!ید ک!ه مجم!وع دو رجیس!ترAL وBL را بدست آورده، نتیجه را در رجیسترCL .قرار دهد

CODSG SEGMENT

ASSUME CS:CODSG

ADD AL, BL

MOV CL, AL

MOV AX, 4C00H

INT 21H

CODSG ENDS

END

تعریف سگمنت کد

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

از ب!ایت ص!فر ک!ه محت!وای بنویس!ید ای برنام!ه مث!ال: CL اس!ت ب!ا رجیس!تر 45س!گمنت داده را ک!ه مق!دار آن

جم!ع کن!د و نتیج!ه را در ب!ایت بع!دی حافظ!ه داده ب!ا ن!ام RESULT .قرار دهد

:ابتدا سگمنت داده را تعریف می نماییم

DATASG SEGMENT

NUM DB 45

RESULT DB 0

DATASG ENDS

تعریف سگمنت داده

سگمنت داده

0

1

2

NUM

RESULT

Page 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

تعریف سگمنت داده

Page 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

تعریف سگمنت داده

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

ی!ا پروس!ه از یافت!ه ه!ای س!اخت برنام!ه نوش!تن برای روال استفاده می نماییم.

CODSG SEGMENT

ASSUME CS:CODSG

MAIN PROC FAR

ADD AL,BL

MOV AX,4C00H

INT 21H

MAIN ENDP

CODSG ENDS

END MAIN

(Procedure)تعریف پروسه

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

عب!ارتNEAR و FAR ی!ا دور ک!ردن مش!خص ب!رای نزدیک بودن پروسه می باشند.

اگ!ر در برنام!ه پروس!ه اص!لی داش!ته باش!یم، از عب!ارتFAR.برای تعریف آن استفاده می نماییم

اگ!ر از عب!ارتNEAR اس!تفاده ک!نیم ب!ه این مع!نی اس!ت ک!ه اس!ت س!گمنتی هم!ان در نظ!ر م!ورد پروس!ه ک!ه

پروسه اصلی قرار دارد. اگ!ر از عب!ارتFAR اس!تفاده ک!نیم ب!ه این مع!نی اس!ت

ک!ه پروس!ه م!ورد نظ!ر و پروس!ه اص!لی، در س!گمنت ه!ای جداگانه قرار دارند.

(Procedure)تعریف پروسه

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

سگمنت پش!ته ن!یز همانن!د س!ایر س!گمنت ه!ا تعری!ف میشود:

STACKSG SEGMENT

….

STACKSG ENDS

بع!د از تعری!ف س!گمنت پش!ته بای!د تع!دادی ب!ایت را ب!رای تعریف نمود.POP و PUSHاستفاده در دستورات

STACKSG SEGMENT

DB 100 DUP(?)

STACKSG ENDS

(Stack)تعریف سگمنت پشته

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

ب!ه ص!ورت اس!مبلی معم!وال زب!ان در شکل دس!تورات زیر می باشد:

Opcode Destination, Sourceمثال

ADD AL, 02H MOV BL, AH

بیان کلی دستورات در اسمبلی

Page 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

بیان کلی دستورات در اسمبلی

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

Comment : از برنام!ه از خ!ط ه!ر در توض!یح نوش!تن Commentبرای

استفاده می کنیم. .در اس!مبلی ب!رای نوش!تن توض!یح از ; اس!تفاده می نم!اییم

یع!نی ه!ر ج!ا اس!مبلر این عالمت را دی!د آن!را ج!زء دس!تورات برنامه محسوب نمی کند و در نتیجه اسمبل نمی نماید.

همانند عبارت // در زبانC.است ++ انگلیس!ی )فارس!ی، زب!انی ه!ر ب!ه ت!وان می را توض!یحات

و ... ( نوشت.

بیان کلی دستورات در اسمبلی

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

.این قسمت حذف شده است

انواع دیگر روشهای تعریف سگمنت