Upload
riva
View
78
Download
3
Embed Size (px)
DESCRIPTION
برنامه نویسی به زبان اسمبلی. فصل چهارم: قواعد برنامه نویسی اسمبلی. تهیه وتنظیم: سید مصطفی موسوی. مقررات برنامه نویسی اسمبلی. هر برنامه اسمبلی باید بصورت یکسری سگمنت کد و داده و پشته تعریف گردد. بسته به ساده یا پیچیده بودن برنامه تعداد سگمنت ها می تواند شامل یک یا چندین سگمنت باشد. - PowerPoint PPT Presentation
Citation preview
تهیه وتنظیم: سید مصطفی موسوی
برنامه نویسی به زبان اسمبلی
فصل چهارم: قواعد برنامه نویسی اسمبلی
هر برنام!ه اس!مبلی بای!د بص!ورت یکس!ری س!گمنت ک!د و داده وپشته تعریف گردد.
بس!ته ب!ه س!اده ی!ا پیچی!ده ب!ودن برنام!ه تع!داد س!گمنت ه!ا میتواند شامل یک یا چندین سگمنت باشد.
هر برنام!ه ح!داقل ی!ک س!گمنت ک!د دارد و می ت!وان س!گمنتداده و پشته برای برنامه تعریف نکرد.
راهنمای اسمبلرجزء دستورات اصلی اسمبلی نمی باشند نک!اتی از قبی!ل ابت!دا و انته!ای س!گمنت، داده ی!ا پش!ته ب!ودن س!گمنت
و ... را مشخص می نمایند. به اس!مبلر کم!ک می کنن!د ت!ا مقص!ود برنام!ه ن!ویس را درک ک!رده و
دستورات را به کد قابل اجرا تبدیل نماید.
مقررات برنامه نویسی اسمبلی
برنام!ه ک!ه اس!ت دس!توراتی کنن!ده بی!ان ک!د سگمنت نویس اجرای آنها را مد نظر دارد.
:تعریف یک سگمنت در اسمبلی
Label SEGMENT
……
Label ENDS
تعریف سگمنت کد
:تعریف سگمنت کدCODSG SEGMENT
ASSUME CS:CODSG
……
CODSG ENDS
END
تعریف سگمنت کد
عام!ل سیس!تم ب!ه را سیس!تم کن!ترل قس!مت این بازمیگرداند و با اجرای آن برنامه پایان می یابد:
CODSG SEGMENT
ASSUME CS:CODSG
……
MOV AX, 4C00H
INT 21H
CODSG ENDS
END
تعریف سگمنت کد
مث!ال: برنام!ه ای بنویس!ید ک!ه مجم!وع دو رجیس!ترAL وBL را بدست آورده، نتیجه را در رجیسترCL .قرار دهد
CODSG SEGMENT
ASSUME CS:CODSG
ADD AL, BL
MOV CL, AL
MOV AX, 4C00H
INT 21H
CODSG ENDS
END
تعریف سگمنت کد
از ب!ایت ص!فر ک!ه محت!وای بنویس!ید ای برنام!ه مث!ال: CL اس!ت ب!ا رجیس!تر 45س!گمنت داده را ک!ه مق!دار آن
جم!ع کن!د و نتیج!ه را در ب!ایت بع!دی حافظ!ه داده ب!ا ن!ام RESULT .قرار دهد
:ابتدا سگمنت داده را تعریف می نماییم
DATASG SEGMENT
NUM DB 45
RESULT DB 0
DATASG ENDS
تعریف سگمنت داده
سگمنت داده
0
1
2
NUM
RESULT
سپس س!گمنت ک!د را می نویس!یم و رجیس!تر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
تعریف سگمنت داده
سپس کد دستورات را می نویسیم.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
تعریف سگمنت داده
ی!ا پروس!ه از یافت!ه ه!ای س!اخت برنام!ه نوش!تن برای روال استفاده می نماییم.
CODSG SEGMENT
ASSUME CS:CODSG
MAIN PROC FAR
ADD AL,BL
MOV AX,4C00H
INT 21H
MAIN ENDP
CODSG ENDS
END MAIN
(Procedure)تعریف پروسه
عب!ارتNEAR و FAR ی!ا دور ک!ردن مش!خص ب!رای نزدیک بودن پروسه می باشند.
اگ!ر در برنام!ه پروس!ه اص!لی داش!ته باش!یم، از عب!ارتFAR.برای تعریف آن استفاده می نماییم
اگ!ر از عب!ارتNEAR اس!تفاده ک!نیم ب!ه این مع!نی اس!ت ک!ه اس!ت س!گمنتی هم!ان در نظ!ر م!ورد پروس!ه ک!ه
پروسه اصلی قرار دارد. اگ!ر از عب!ارتFAR اس!تفاده ک!نیم ب!ه این مع!نی اس!ت
ک!ه پروس!ه م!ورد نظ!ر و پروس!ه اص!لی، در س!گمنت ه!ای جداگانه قرار دارند.
(Procedure)تعریف پروسه
سگمنت پش!ته ن!یز همانن!د س!ایر س!گمنت ه!ا تعری!ف میشود:
STACKSG SEGMENT
….
STACKSG ENDS
بع!د از تعری!ف س!گمنت پش!ته بای!د تع!دادی ب!ایت را ب!رای تعریف نمود.POP و PUSHاستفاده در دستورات
STACKSG SEGMENT
DB 100 DUP(?)
STACKSG ENDS
(Stack)تعریف سگمنت پشته
ب!ه ص!ورت اس!مبلی معم!وال زب!ان در شکل دس!تورات زیر می باشد:
Opcode Destination, Sourceمثال
ADD AL, 02H MOV BL, AH
بیان کلی دستورات در اسمبلی
:ام!ا ش!کل کلی دس!تورات در اس!مبلی ب!ه ص!ورت زی!ر است 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
بیان کلی دستورات در اسمبلی
Comment : از برنام!ه از خ!ط ه!ر در توض!یح نوش!تن Commentبرای
استفاده می کنیم. .در اس!مبلی ب!رای نوش!تن توض!یح از ; اس!تفاده می نم!اییم
یع!نی ه!ر ج!ا اس!مبلر این عالمت را دی!د آن!را ج!زء دس!تورات برنامه محسوب نمی کند و در نتیجه اسمبل نمی نماید.
همانند عبارت // در زبانC.است ++ انگلیس!ی )فارس!ی، زب!انی ه!ر ب!ه ت!وان می را توض!یحات
و ... ( نوشت.
بیان کلی دستورات در اسمبلی
.این قسمت حذف شده است
انواع دیگر روشهای تعریف سگمنت