برنامه جمع 100 عدد به زبان اسمبلی
Download
Report
Transcript برنامه جمع 100 عدد به زبان اسمبلی
مهدی ایل بیگی
دانشگاه پیام نور دماوند
2
• کد دودوئی
– فرم واقعی دستورات حافظه ،که اجرا می شوند.
• کد مبنای هشت یا شانزده
– معادل کد دودوئی که به این مبناها تبدیل شده است.
• کد نمادین – برنامه نوشته شده به زبان اسمبلی
– استفاده ازنمادها جهت بخش های مختلف دستورات
– مانند :کد دستورالعمل ،آدرس و ...
– فرم نمادین دستور به فرم دودوئی آن تبدیل می شود.
• زبان های برنامه نویس ی سطح باال
3
– هر دستور به تعدادی از دستورات دودوئی ترجمه می شود.
برنامه دودوئی جمع دود عدد
برنامه مبنای شانزده جمع دو عدد
برنامه نمادین جمع دو عدد
4
برنامه اسمبلی جمع دو عدد
برنامه جمع دو عدد به زبان فرترن
5
• دستورات اسمبلی از سه بخش اصلی تشکیل می شوند:
.1برچسب
– فرم نمادین آدرس است .که می تواند تهی باشد.
– نماد خاتمه برچسب کاما می باشد.
.2دستورات
– دستورات ماشین (مثل)ADD, STA,… :
– شبه دستورات (مثل)ORG, END,… :
.3توضیحات
– توضیحات مربوط به برنامه که می تواند تهی باشد.
6
– قبل از توضیحات از نماد /استفاده می شود.
• آدرس های نمادین (برچسب ها):
– یک تا سه کاراکتر حرفی/عددی
– کاراکتر اول باید حرف باشد.
– کاراکترهای دوم و سوم می توانند حرف یا عدد باشند.
• دستورات
.1دستورات مراجعه به حافظه
))(Memory-Reference Instruction (MIR
.2دستورات ثباتی یا دستورات ورودی خروجی )(non-MRI
.3شبه دستورات ،همراه با احتماال یک عملوند
7
• ابتدا نماد 3حرفی عمل MRIمی آید.
– یک نماد معتبر از مجموعه دستوراتی که در اسالید 2آمده است.
• پس از آن آدرس نمادین می آید.
– که نشان دهنده مکان عملوند در حافظه است.
– در بخش دیگری از برنامه مانند فیلد برچسب مشخص می شود.
• در انته ا ااا در ص ا ااورت ل ا اازوم از ک ا اااراکتر ( )Iجه ا اات مش ا ااخص ک ا ااردن آدرس ی ا اار مس ا اات ی
استفاده می شود.
• مثال:
8
non-MRI
direct address MRI
indirect address MRI
CLA
ADD OPR
ADD PTR I
•
دستورات زبان ماشین نیستند.
•
اسمبلر از آن ها برای اسمبل کردن استفاده می کند.
•
مثال:
:ORG N محل ذخیره ساازی برناماه را معاین مای نمایاد .عادد مبناای شاانزده Nمکاانی از حافظاه را
مشخص می کند و معنی آن این است که دستور یا عملوندی که در خط بعد قرار گرفته است ،در
این آدرس قرار دارد.
:END انتهای برنامه نمادین را مشخص می کند.
:DEC N مشخص کننده اینست که Nعددی دهدهی است که در نهایت بایاد باه دودوئای تبادیل
شود.
:HEX N مشااخص کننااده اینساات کااه Nعااددی شااانزده شااانزدهی اساات کااه در نهایاات بایااد بااه
دودوئی تبدیل شود.
9
10
• گذر اول:
– ب ااا اس ااتفاده از دس ااتور ORGاول ااین مک ااان را ب ااورت مبن ااای 16مش ااخص م اای
کند.
– ب ااه خب ااوط بع اادی برنام ااه ک ااه ک ااد دس ااتوری در آن ه ااا ق ارار دارد ،ب ااورت مت ااوا ی
آدرس مکان تخ یص می دهد.
– جدول نماد ها (برچسب ها) را می سازد.
• گذر دوم:
– با استفاده از جدول نماد ها ،آدرس های نمادین حافظه را ترجمه می کند.
– کاد نمااادین دساتورات را بااا توجاه بااه مساات ی یاا یاار مسات ی بااودن آن هاا ،باه کااد
مبنای 16ترجمه می کند.
11
ALU
12
• برنامه نوشته شده به زبان نمادین را می خواند که به آن برنامه مبدا می گویند.
• این برنامه یک توا ی از کاراکتر های می باشد.
• هر خط از کد با ،(Carriage) CR = 0D Hexخاتمه یافته است.
• مترج برنامه معادل دودوئی به زبان ماشین را تولید می کند.
• برنامه معادل دودویی ،برنامه هدف ( ،)objectنامیده می شود.
13
14
15
• مترج باید خباهای ممکن را شناسایی و پیغام مناسب را تولید نماید.
• انواع خبا های ممکن:
– نماد لط برای دستورات.
– استفاده از آدرس نمادین تعریف نشده.
– و...
• مترج باید تمام خباهائی که امکان تشخیص آن ها وجود دارد ،به کااربر اعاالم کناد،
تا وی در کد مبدا متنی ،تصحیح های الزم را انجام دهد.
16
• حل ه = ترتیبی از دستورات که باید چندین بار اجرا شوند.
• معمواله در هر بار اجرا ،روی داده های متفاوتی عمل می شود.
• مثا ی از یک برنامه فرترن که 100عدد صحیح را با ه جمع می کند:
17
18
• باید ب ورت نرم افزاری پیاده سازی شود.
• با انجام جمع های متوا ی صورت می پذیرد.
• برای انجام X*Yمراحل زیر باید صورت پذیرد:
.1بازای هر بیت ،Yاز راست به چپ
.2اگر 1باشد
.3به X ،Sumواحد می افزائی
X .4را به صورت منب ی به چپ شیفت می دهی .
.5مراحل 1تا 4را به تعداد بیت های مضروب تکرار می نمایی .
19
20
21
• می خواهی دو عدد 32بیتی A, Bرا باه جمع کنی C = A + B :
16بیاات اای ارز Lو 16بیاات بااا ارز Hنامیااده ماای شااوند .بارای جمااع دو مرحلااه
•
نیاز است:
( CL = AL + BL .1جمع بیت های ک ارز )
( CH=(CL Carry) + AH + BH .2جماع بیات هاای باا ار و رقا ن لای
مرحله قبل)
22
•
کامپیوتر پایه ف ط سه دستور منب ی AND, CMA, CLAرا داراست.
•
تمام 16عمل منب ی ممکن می تواند توسط اعمال ANDو NOTپیاده سازی شوند.
•
مثال :
•
برنامه انجام عمل منب ی ORبا استفاده از دو عمل :AND, NOT
’)’A + B = (A’B
23
• برای عملیات شیفت چرخش ی دستورات CIL, CIRرا داری .
• شیفت منب ی و حسا ی را می توان با برنامه نویس ی انجام داد.
• شیفت منب ی:
– شیفت به راسات :ابتادا دساتور CLEبیات Eرا پاا مای کناد ( Eباه عناوان بیات
ورودی در نظاار گرفتااه ماای شااود) ،سا س بااا دسااتور CIRشاایفت بااه راساات انجااام
می شود.
– شاایفت بااه چااپ :ابتاادا دسااتور CLEبیاات Eرا پااا ماای کنااد و س ا س بااا دسااتور
CILشیفت به چپ انجام می شود.
24
:• شیفت به راست حسا ی
CLE
SPA
CME
CIR
/clear E to 0
/skip if AC positive
/since AC negative, complement E
:• شیفت به چپ حسا ی
CLE
CIL
If E and AC(15) not equal overflow occurred
25
•
26
به عنوان مثال استفاده از زیرروال انجام 4شیفت چپ ب ورت زیر می باشد.
• زیر روال زیر عمل ORمنب ی را انجام می دهد.
27
• برنامه وارد کردن یک حرف از ورودی:
• برنامه قرار دادن یک حرف در خروجی:
28
• برنامه ای که دو حرف را دریافت و در یک کلمه قرار می دهد.
29
30