برنامه جمع 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