3.45k likes | 3.74k Views
زبانهای ماشين و برنامه سازی سيستم. اصول اساسی برنامه نويسی به زبان اسمبلی. مو لف : Richard C. Detmer. مترجمين : هاشمی اصل - مشحون. ارايه دهنده : حسن عسكرزاده. فهرست مطالب. فصل اول : نمایش داده ها در کامپیوتر فصل دوم : قسمت های یک سیستم کامپیوتری فصل سوم : استفاده از اسمبلر
E N D
زبانهای ماشين و برنامه سازی سيستم اصول اساسی برنامه نويسی به زبان اسمبلی مو لف :Richard C. Detmer مترجمين:هاشمی اصل - مشحون ارايه دهنده : حسن عسكرزاده
فهرست مطالب • فصل اول :نمایش داده ها در کامپیوتر • فصل دوم :قسمت های یک سیستم کامپیوتری • فصل سوم :استفاده از اسمبلر • فصل چهارم : دستورالعملهای اساسی • فصل پنجم : انشعاب و حلقه • فصل ششم : روال ها • فصل هفتم : عملیات رشته ها • فصل هشتم : سایر حالت های آدرس دهی • فصل نهم : دستکاری بیت ها • فصل دهم : وقفه و ورودی / خروجی • فصل یازدهم : پردازش اسمبلی • فصل دوازدهم : ماکرو ها و اسمبلی شرطی • فصل سیزدهم : مثال نمونه
فصل اول نمايش داده ها در كامپيوتر
فصل اول نمايش داده ها در کامپيوتر • اعداد دودویی و شانزده شانزدهی • کد های کارکتری • نمایش مکمل 2 برای اعداد صحیح علامت دار • جمع و تفريق اعداد مكمل 2 • سيستم هاي ديگر براي نمايش اعداد
چگونگي نمايش دادهها در زبان اسمبلي: • اعداد دودويي و شانزدهشانزدهي • کدهاي کاراکتري • نمايش مکمل 2 براي اعداد صحيح علامتدار • سيستمهاي ديگر براي نمايش اعداد • مکمل يک • BCD • مميز شناور
اعداد دودويي و شانزده شانزدهي • بيت كوچكترين واحد قابل ثبت در كامپيوتر است • ارزش مكاني اعداد در مبناي 2 مانند اعداد در مبناي 10 است 123 در مبناي 10 برابر است با (3*1) + (2*10) + (1*100) 1010 در مبناي 2 برابر است با (0*1)+(1*2)+(0*4)+(1*8)
نمادها در نمايش اعداد در مبناها • مبناي 2 • 0, 1 • مبناي 10 • 0,1,2,3,4,5,6,7,8,9 • مبناي شانزده • 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F • A=10 ,B=11, C=12, D=13, E=14, F=15
سيستم ارزش مکاني مبناي دو: يگاندوگانچهارگانهشتگان و ... اعداد دودويي به قدري طولاني هستند که خواندن و نوشتن آنها مشکل است.
سيستم شانزدهشانزدهي ميتواند اعداد را فقط با استفاده از يک چهارم ارقام سيستم دودويي نمايش دهد. به علت تبديل ساده بين سيستم دودويي و شانزده شانزدهي، مبناي 16 بعنوان شکل کوتاه شده دودويي تلقي شود. در سيستم شانزدهشانزدهي رقمهاي 0 تا 9 مورد استفاده قرار ميگيرند؛ که علاوه بر اين، به جاي اعداد دهدهي 10 تا 15 حروف A تا F جايگزين ميگردند. سيستم ارزش مکاني مبناي شانزده: يگانشانزدهگاندويستوپنجاهوششگان و...
جدول مقايسه اعداد در مبناهاي متفاوت
تبديل مبناي 16 به مبناي 2: يک عدد شانزدهشانزدهي ميتواند به سادگي با جايگزيني چهار بيت براي هر رقم شانزدهشانزدهي به عدد معادل دودويي تبديل شود.
تبديل مبناي 2 به مبناي 16: ابتدا از سمت راست، عدد را به دستههاي چهاربيتي تقسيم ميکنيم و سپس هر دسته را با رقم معادل شانزده شانزدهي آن جايگزين مينماييم.
روش تبديل عدد دهدهي به شانزده شانزدهي با تقسيم متوالي عدد بر 16 و قراردادن باقيمانده هادر كنار يكديگر مثال عدد 5876 در مبناي 16 به روش زير محاسبه ميشود 5876 ÷16 باقيمانده 4 376 = 367÷ باقيمانده 1522 = 16 22÷ باقيمانده 6 1 = 16 1 ÷ باقيمانده 1 0 = 16 16F4
طول كلمات • بايت 8 بيت يا 1 بايت • كلمه يا WORD 16 بيت يا 2 بايت • كلمه مضاعف يا double word 32 بيت يا 4 بايت در يك عدد مثبت بايد بيت منتها اليه سمت چپ صفر باشد
تبديل مبناي 2 به 10: براي تبديل يک عدد دودويي به معادل دهدهي آن، به جاي تبديل مستقيم و طولاني، سريعتر خواهد بود که آن را به مبناي 16 و سپس به مبناي 10 ببريم.
2) کدهاي کاراکتري در کامپيوتر به حروف، اعداد، علامتها و کاراکترهاي ديگر، يک عدد نسبت داده ميشود. سيستمي که به طور عمومي در ريز کامپيوترها مورد استفاده قرار گرفته است کد استاندارد امريکايي براي تبادل اطلاعات است (که به صورت مخفف ASCII(American Standard Code for Information Interchange) ناميده ميشود.)
در سيستم اسکي از هفت بيت براي نمايش دادن کاراکترها استفاده ميشود. به اين ترتيب ميتوان 128 کد مختلف اسکي را نمايش داد. کدهاي اسکي معمولاً به صورت اعداد در مبناي شانزده 00 تا 7F و دهدهي 0 تا 127 نمايش داده ميشوند.
بين کد هر حرف بزرگ و کد کوچک همان حرف، در يک بيت تفاوت وجود دارد در حروف بزرگ بيت 5، صفر است و در حروف کوچک، يک، ولي بيتهاي ديگر مشابه هستند
کاراکترهاي 0016 تا 1F16 بعنوان کدهاي کنترلي شناخته ميشوند. 0D16 و 0A16 به ترتيب کدهاي برگشت به اول سطر (CR) و خط خور (LF) هستند. در صفحه کليدهاي اسکي وقتي کليد Enter يا Return فشار داده شود کد 0D16توليد ميگردد. وقتي اين کد به يک صفحه نمايش اسکي فرستاده شود، باعث ميشود که مکاننما به ابتداي خط جاري ( و نه خط بعدي) برود. کد 0A16 مکان نما را يک خط به طرف پائين حرکت ميدهد. در اين صورت مکاننما به ابتداي خط نخواهد رفت.
3)نمايش مکمل 2 براي اعداد صحيح علامتدار سيستم مکمل 2 يک روش خيلي خوب براي ذخيره کردن اعداد علامتدار صحيح به صورت دودويي است. وقتي يک عدد به شکل مکمل دو نشان داده ميشود، تعداد بيتهاي مورد استفاده بايد از قبل مشخص گردد. براي نمايش يک عدد صحيح مثبت به شکل مکمل دو، ابتدا بايد آن را به صورت دودويي با صفرهاي اضافي نوشت تا طول موردنظر به دست آيد.
در يک عدد مثبت بايد بيت منتهياليه سمت چپ يا با ارزشترين بيت، صفر باشد. وجود «يک» در اين بيت مشخصکننده آن است که عدد منفي است. بقيه بيتهاي عدد منفي همانند بيتهاي عدد بدون علامت متناظر آن نيست.
مکمل دو يک عدد منفي: ابتدا آن را به صورت عدد بدون علامت در مبناي شانزده بيان کرده و سپس براي نمايش آن به شکل کلمه، آن را از100 0016 تفريق ميکنيم. و براي نمايش آن به شکل مضاعف، آن را از 100 00 00 0016تفريق ميکنيم.
عددي که بايد عدد اصلي را از آن تفريق کردعبارت از يک عدد يک (1) است و به دنبال آن بايد همان تعداد رقم که در عدد موجود است صفر قرار داد.
گرفتن مکمل دو يا مکمل گيري: عمل تفريق کردن عدد از يک عدد «يک» که به دنبال آن تعداد صفرهاي لازم قرار گرفتهاند، را گويند. در نمايش مکمل دو، تعداد ارقام معين است در نتيجه مشخصاً ميتوان بزرگترين عددي را که در آن قابل نمايش است، تعيين نمود. در نمايش به صورت کلمه، بزرگترين عدد مثبت 7F FF است. زيرا اين بزرگترين عدد 16 بيتي در نمايش به صورت دودويي است که با ارزشترين بيت آن صفر است. اعداد مثبت که به صورت مبناي 16 نوشته ميشوند ميتوانند در سمت چپ خود يکي از ارقام صفر تا 7 را داشته باشند.
اگر مکمل دو عددي را بگيريم و سپس از حاصل مجدداً مکمل دو بگيريم به عدد اصلي برميگرديم.
اگر عمل را بر روي يک عدد منفي آغاز کنيد، نتيجه عمل گرفتن مکمل دو به يافتن عدد بدون علامت متناظر به آن ختم خواهد شد.
جمع و تفريق اعداد مکمل دو: يک دليل استفاده از روش مکمل دو براي ذخيره کردن اعداد صحيح علامتدار آن است که عمليات جمع و تفريق ميتوانند به سادگي و به طور کارآمد در سختافزار کامپيوتر پيادهسازي شوند.
يک رقم را از باارزشترين مکان به مکان بعدي به طرف چپ انتقال ميدهد و يک رقم «اضافي» ايجاد ميکند. سختافزار کامپيوتر در زمان عمل جمع ميتواند سرريز را تشخيص دهد. کامپيوتر در واقع جمع را به صورت دودويي انجام ميدهد و بر روي جفت بيتها از سمت راست به چپ عمل ميکند.
سرريزي زماني رخ ميدهد که رقم نقلي به داخل بيت علامت با رقم نقلي از بيت علامت متفاوت باشد.
تفريق اعداد به صورت مکمل دو، در صورت امکان همانند تفريق اعداد بدون علامت است. • اگر عدد دوم بزرگتر از عدد اول باشد، در سمت چپ عدد اول يک عدد 1 اضافه ميکنيم.
سرريزي نيز براي تفريق تعريف ميشود. چنانچه در يک تفريق، حاصل تفريق خارج از محدوده -32768 تا 32768 باشد مشاهده خواهد شد که سرريزي رخ ميدهد و پاسخ نادرست ايجاد ميگردد. براي تشخيص سرريزي، همانند کامپيوتر، بايد تفريق را به جمع تبديل کرد، براي اينکار لازم است مکمل عدد دوم گرفته شود و يک واحد به آن افزوده گردد. حال اگر دراين عمل جمع سرريزي رخ دهد در تفريق اصلي نيز رخ خواهد داد.
سيستمهاي ديگر براي نمايش اعداد • مکمل يک • دهدهي دودويي شده(BCD) • مميز شناور
گرفتن مکمل يک: براي به دست آوردن عدد منفي کافيست که تمام بيتها را معکوس کنيم، تمام صفرها را به يک و تمام يکها را به صفر تبديل نماييم گاهي اوقات اين عمل، گرفتن مکمل يک ناميده ميشود.
مکمل يک داراي معايب زيادي است و عمدهترين آنها اين است که طراحي مدار براي انجام جمع يا تفريق در اين اعداد مشکلتر است و براي عدد صفر دو گونه نمايش وجود دارد. محدوده اين اعداد تا حدي کوچکتر ميشود. چنانچه مکمل يک عددي را بگيريد و يک واحد به آن بيافزائيد، مکمل دو آن عدد به دست ميآيد.
اغلب اعداد BCD با تعداد معيني بايت نشان داده ميشوند. براي يک کامپيوتر انجام عمليات رياضي بر روي اعداد BCD به کارايي اعداد مکمل دو نخواهد بود و انجام عمليات رياضي بر روي اعدادي که به صورت کدهاي اسکي نمايش داده شوند خيلي غيرکارآمد است.
روش مميز شناور، اعداد را به شکل نزديک به نماد علمي ذخيره ميکند. توان دو، دقيقاً همانند نمايش علمي در سيستم دهدهي است که در آن توان، با شمردن تعداد ارقامي که مميز بايد به سمت چپ يا راست حرکت کند تا مانتيس موردنظر به دست آيد، حاصل ميشود.
به طور خلاصه، ميتوان مراحل زير را براي تبديل يک عدد دهدهي به فرم ساده IEEE بيان داشت: • آخرين بيت سمت چپ در اين نوع نمايش در اعداد مثبت صفر و در اعداد منفي يک است. • عدد را به صورت بدون علامت در سيستم دودويي بنويسيد. • عدد را به شکل نماد علمي دودويي بنويسيد که در آن f23=1 است. 24 بيت کسري وجود دارد اما نياز نيست که صفرهاي اضافي سمت راست نوشته شوند. • عدد ثابت 12710 را به عدد نما يعني e اضافه کنيد. اين مجموع در فرم دودويي در هشت بيت بعدي جواب است که به دنبال بيت علامت قرار ميگيرد. • بيت کسر آخرين 23 بيت عدد با مميز شناور را تشکيل ميدهند. بيت f23 حذف ميگردد.
کامپيوتر عمليات رياضي بر روي اعداد با مميز شناور را معمولاً کندتر از عمليات بر روي اعداد مکمل دو انجام ميدهد. البته مزيت قبول کردن اعداد غيرصحيح يا اعداد خيلي بزرگ يا خيلي کوچک اين عدم کارآيي نسبي محاسبات با آنها را به کنار ميزند.
تمام دادهها در کامپيوتر با استفاده از سيگنالهاي الکترونيکي نمايش داده ميشوند. اين سيگنالها ميتوانند به صورت الگوهايي از ارقام دودويي (بيت) تفسير گردند. اعداد ميتوانند به صورت دهدهي، شانزده شانزدهي يا دودويي نوشته شوند. در اعداد مکمل دو، جمع و تفريق ساده است. زيرا طول يک عدد مکمل دو محدود است و امکان رقم نقلي و غيره وجود دارد.
فصل دوم قسمتهاي يك سيستم كامپيوتري
مطالب اين فصل • سخت افزار pc • حافظه اصلي • واحد پردازش مركزي • دستگاههاي ورودي / خروجي • نرم افزار pc • سيستم عامل • ويرايشگر متن • مترجم زبان و پيوند دهنده برنامه
سختافزار PC: حافظه اصلي • يک کامپيوتر حقيقي شامل سختافزار و نرمافزار ميباشد. • اجزاء اصلي سختافزاري يک سيستم ريزکامپيوتر معمولي عبارتند از: • يک تراشه واحد پردازش مرکزي (CPU) • تراشههاي حافظه • يک صفحه کليد براي ورودي • يک مانيتور براي نمايش خروجي • يک يا چند گرداننده ديسک براي ذخيرهکردن برنامهها و دادهها.
نرمافزار به برنامههايي که سختافزار اجرا ميکند، اطلاق مي شود. حافظه اصلي يک مجموعه منطقي از مکانهايي است که هرکدام ميتواند يک بايت دستورالعملها يا دادهها را ذخيره نمايد. هر بايت حافظه اصلي داراي يک برچسب عددي به نام آدرس ميباشد.
00000 00001 9FFFD 9FFFE FFFFE FFFFF ... ... تصوير منطقي حافظه اصلي pc
حافظه اصلي يک PC در حقيقت متشکل از مدارهاي مجتمع (IC) ميباشد. RAM: اين حافظه با دستيابي تصادفي ميباشند که ميتواند با استفاده از دستورالعملهاي برنامه، اطلاعاتي را روي آنها نوشته و يا خواند. محتواي تراشههاي RAM با قطع جريان برق کامپيوتر از بين ميرود. ROM: محتواي آنها دائمي بوده و ميتوان فقط آنها را خوانده ولي نميتوان روي آنها نوشت.
حافظةاصلي يک PC را ميتوان به صورت مجموعهاي از سگمنتها در نظر گرفت. يک سگمنت به طول 64k بايت بوده و آدرس شروع آن مضرب 16 ميباشد.
به جاي استفاده از پنج رقم شانزده شانزدهي آدرس يک بايت حافظه اصلي، ميتوان آنرا با سگمنت حاوي بايت مزبور و به دنبال ان افستي که از ابتداي سگمنت ياد شده در نظر گرفته ميشود، آدرسي دهي کرد. آفست برابر فاصله بايت مورد نظر از اولين بايت سگمنت مربوطهميباشد.
شروع سگمنت XXXX آدرس اين بايت برابر XXX0+YYYY آفست yyy آدرسدهي يک بايت با استفاده از سگمنت و آفست آن