بخشی از پاورپوینت
اسلاید 1 :
معماري کامپيوتر
فصل ششم: نرم افزار کامپيوتر
اسلاید 2 :
مقدمه
برنامهها را ميتوان به زبانهاي مختلفي نوشت. ولي کامپيوتر فقط برنامههايي را اجرا مي کند که تبديل به کد باينري شدهاند.
بطور کلي برنامهها را مي توان بصورت زير دستهبندي نمود:
کد باينري: که در آن تمام دستورالعملها بصورت باينري نوشته شدهاند.
کد هگزا دسيمال: اين نوع برنامه همان کد باينري است که در پايه 16 نمايش داده شدهاست.
زبان اسمبلي (Assembly): زبان نمادي (symbolic) است که در آن هر دستور سمبوليک را ميتوان به يک کد باينري تبديل کرد.
زبانهاي رده بالا: در اين نوع زبانها، سخت افزار کامپيوتر در نظر گرفته نميشود و نيت ارايه روشهايي براي حل مسائل است. عموماً هر زبان رده بالا نياز به اجراي چندين دستور اسمبلي دارد.
کد باينري را زبان ماشين (Machine language) نيز مينامند.
مثال: کد باينري 0001010100000100
کد Hex 1 5 0 4
زبان سمبليکBUN 051
اسلاید 3 :
برنامه دودویی جمع کردن دو عدد
1. دادن محتویات آدرس به AC که مقدار 53 است.
2. جمع AC با محتویات آدرس که مقدار FFE9 است.
3. محتویات AC را به آدرس مشخص شده می دهیم که الان
دارای مقدار صفر است.
4. دستور توقف کامپیوتر
اسلاید 5 :
براي اينکه برنامهاي که به زبان اسمبلي نوشته شده است. قابل فهم براي کامپيوتر باشد از برنامة Assembler استفاده ميشود.
در زبان اسمبلي دستورات از سه جزء تشکيل شده است:
Label: نشانگر يا برچسب، با يک حرف الفبا شروع شده و تا 3 کاراکتر ميتواند باشد و به يک کاما ختم ميشود. اولین کاراکتر حرف و دو کاراکتر بعدی حرف یا عدد است. برچسب میتواند خالی یا حاوی یک آدرس سمبلیک باشد.
کد فرمان شامل يکي از موارد زير است:
دستورات مراجعه به حافظه (MRI)
دستورات مراجعه به رجيستر يا ورودي / خروجي (Non-MRI)
شبه دستورات
توضيحات را ميتوان بعد از کد فرمان نوشت.
اسلاید 6 :
کد فرمان
کد فرمان خود مشتمل بر سه جزء ميباشد:
Instruction symbolAddressAddress mode
نحوه آدرسدهي (در صورت نياز) آدرس نماد فرمان
نماد فرمان اجباري و دو قسمت ديگر غير اجباري است.
مثال:
CLA(non MRI)
ADD OPR(MRI direct)
ADD PRT I(MRI indirect)
اسلاید 8 :
شبه دستورات
شبه دستورات فقط بوسيله Assembler قابل فهم است و دستور ماشین نیستند.
ORG xx: مشخص کننده آدرس شروع برنامه
END: براي نشان دادن انتهاي برنامه اسمبلي
DEC xx: براي تعريف عددي در مبناي 10 استفاده ميشود.
HEX xx: براي تعريف عددي در مبناي 16 استفاده ميشود.
اسلاید 9 :
مثال: برنامه جمع دو عدد
برنامه را از خانه صفر شروع ميکنيم / ORG 0
عملوند را از خانهاي به نام A بدست بياور و در ACقرار بده / LDA A
عملوند را از خانهاي به نام Bبدست بياور و با ACجمع کن / ADD B
حاصل جمع را در خانه C ذخيره کن /STA C
کامپيوتر را متوقف کن/HLT
محتواي خانه A عدد 83 در مبناي 10 ميباشد/A, DEC 83
عملوند دوم عدد 23- و دسيمال نيز ميباشد/B, DEC -23
جايي که نتيجه بايد در آن ذخيره گردد، ابتدا حاوي صفر است/C, DEC 0
پايان برنامه اسمبلي/ END
اسلاید 10 :
مثال: برنامه تفریق دو عدد
اسلاید 11 :
ترجمه دودویی
اسلاید 12 :
حلقه در برنامهنویسی با مثال جمع يکصد عدد صحيح
برنامه فورتن مربوطه : خط اول به کامپایلر دستور می دهد 100 کلمه حافظه
را برای 100 عملوند رزرو کند. فرض می کنیم کامپایلر مکانهای 150 تا 1B3در
مبنای 16 را برای این 100 عملوند رزرو می کند.
تفاوت کامپایلر و اسمبلر
اسلاید 13 :
برنامهنویسی اعمال حسابی و منطقی
برخی کامپیوترها اعمال جمع، تفریق، ضرب و تقسیم را دارند. کامپیوترهای پایه فقط عمل جمع را دارند و بقیه اعمال باید برنامه نویسی شوند.
پیادهسازی سخت افزاری: اعمالی که توسط دستورالعمل ماشین پیادهسازی شدهاند.
پیادهسازی نرمافزاری: اعمالی که بوسیله مجموعهای از دستورالعملها پیادهسازی شدهاند.
اسلاید 14 :
ضرب دو عدد 8 بيتي بدون علامت
حاصل ضرب نميتواند از 16 بيت بيشتر باشد.
روش کلي براي ضرب Y و X اينست که بيتهاي Y را يک به يک تست مينماييم و بهازاي هر 1 در Y، مقدار X را با حاصل موقت جمع مينماييم و به ازاي هر بيت از Y مقدار X را يکي به چپ شيفت ميدهيم. حاصل موقت در آدرس P ذخيره ميشود.
اسلاید 16 :
تمرین
الگوریتم ضرب مطرح شده می تواند دو عدد 8 بیتی بدون علامت را در هم ضرب نماید، از آنجا که ALU کامپیوتر پایه می تواند محاسبات 16 بیتی انجام دهد، الگوریتم را بصورتی تغییر دهید که بتوان دو عدد 16 بیتی بدون علامت را در هم ضرب نمود و نتیجه در دو رجیستر 16 بیتی ذخیره گردد.
اسلاید 17 :
جمع با دقت مضاعف
اسلاید 18 :
اعمال منطقی
پیادهسازی OR
اسلاید 19 :
اعمال شیفت
شیفت منطقی به راست
شیفت منطقی به چپ
شیفت حسابی به راست
CLE
CIR
CLE
CIL
اسلاید 20 :
تمرین: برنامه شیفت حسابی به چپ را بنویسید؟