علوم مهندسی کامپیوتر و IT و اینترنت

اصول اساسی برنامه نویسی به زبان اسمبلی

Barnamenevisi_be_zaban_esembeli

در نمایش آنلاین پاورپوینت، ممکن است بعضی علائم، اعداد و حتی فونت‌ها به خوبی نمایش داده نشود. این مشکل در فایل اصلی پاورپوینت وجود ندارد.




  • جزئیات
  • امتیاز و نظرات
  • متن پاورپوینت

امتیاز

درحال ارسال
امتیاز کاربر [0 رای]

نقد و بررسی ها

هیچ نظری برای این پاورپوینت نوشته نشده است.

اولین کسی باشید که نظری می نویسد “اصول اساسی برنامه نویسی به زبان اسمبلی”

اصول اساسی برنامه نویسی به زبان اسمبلی

اسلاید 1: اصول اساسی برنامه نویسی به زبان اسمبلیمو لف : Richard C. Detmerمترجمین : هاشمی اصل - مشحوننام درس : زبانهای ماشین و برنامه سازی سیستم 1

اسلاید 2: فهرست مطالبفصل اول : نمایش داده ها در کامپیوترفصل دوم : قسمت های یک سیستم کامپیوتریفصل سوم : استفاده از اسمبلرفصل چهارم : دستورالعملهای اساسی فصل پنجم : انشعاب و حلقهفصل ششم : روال هافصل هفتم : عملیات رشته هافصل هشتم : سایر حالت های آدرس دهیفصل نهم : دستکاری بیت هافصل دهم : وقفه و ورودی / خروجیفصل یازدهم : پردازش اسمبلیفصل دوازدهم : ماکرو ها و اسمبلی شرطیفصل سیزدهم : مثال نمونه2

اسلاید 3: فصل اولنمایش داده ها در کامپیوتر3

اسلاید 4: فهرست مطالب فصل اولنمایش داده ها در کامپیوتراعداد دودویی و شانزده شانزدهیکد های کارکترینمایش مکمل 2 برای اعداد صحیح علامت دار 4

اسلاید 5: نمایش داده ها در کامپیوتر در زبانهای سطح بالا نگران اینکه داده ها در کامپیوتر چگونه نمایش داده میشوند نیستیم ولی در زبان های اسمبلی بایستی بفکر چگونگی ذخیره داده باشیم و اغلب با کار تبدیل داده ها از یک نوع به نوع دیگر مواجه می باشیم.5

اسلاید 6: اعداد دودویی و شانزده شانزدهی حافظه های کامپیوتر فقط می تواند ارقام 0 یا یک را در خود ذخیره نماید که به آنها بیت گفته میشود. در سیستم دودوئی اعداد از بیت ها تشکیل شده اند.6

اسلاید 7: اعداد دودویی و شانزده شانزدهی اعداد شانزدهی از ارقام 0 تا 15 تشکیل شده اند. برای راحتی، ارقام 10 تا 15 را A تا F نشان داده می شود. 7

اسلاید 8: مثال : سیستم دودوئی شبیه سیستم دهدهی است با این تفاوت که ارقام از سمت راست به چپ به جای ارزش 1 ، 100 ، 1000 ، ....... ارزش 1 ، 2 ، 4 ، 8 ، ..... دارند. بنابرین 1011 در سیستم دودوئی معادل 11 می باشد.10118

اسلاید 9: مثال : سیستم دودوئی شبیه سیستم دهدهی است با این تفاوت که ارقام از سمت راست به چپ به جای ارزش 1 ، 100 ، 1000 ، ....... ارزش 1 ، 16 ، 164 ، ..... دارند. بنابرین 2f30 در سیستم شانزدهی معادل 12080 می باشد.2f309

اسلاید 10: تبدیل اعداد شانزدهی به دودوئی هر رقم در سیستم شانزدهی بوسیله چهار رقم در سیستم دودوئی قابل نمایش می باشد. در اسلاید بعد مثالی آورده شده است. 10

اسلاید 11: مثال : 0100 معادل 4 1110 معادل E برای تبدیل اعداد شانزدهی به دودوئی کافی است که به جای هر رقم ،چهار بیت معادل آن قرار داد. در اسلاید بعد مثالی آورده شده است. 11

اسلاید 12: مثال :2AD5 معادل 0010101011010101 در سیستم دودوئی می باشد.برای تبدیل اعداد شانزدهی به دودوئی کافی است که به جای هر رقم ،چهار بیت معادل آن قرار داد. 12

اسلاید 13: تبدیل اعداد دودوئی به شانزدهی برای تبدیل اعداد دودوئی به شانزدهی ،ارقام عدد داده شده را از سمت راست به ترتیب به صورت گروههای چهار بیتی درآورده آنگاه معادل هر گروه در سیستم شانزدهی را جایگزین می نماییم.در اسلاید بعد مثالی آورده شده است. 13

اسلاید 14: مثال : عدد 1010011101 در سیستم دودوئی در نظر بگیرید. 0010 1001 1101 D 9 2 14

اسلاید 15: کدهای کرکتری در کامپیوتر به حروف، ارقام، علامت ها کرکتر گفته می شود. به هر کرکتر یک کد هشت بیتی منحصر به فرد وابسته می شود که آنرا کد ASCII می نا مند.15

اسلاید 16: کرکترهای قابل چاپ16

اسلاید 17: نکته :کرکترهای قابل چاپ دارای کدهای 32 تا 126 می باشند.کرکترهای کنترلی دارای کدهای 0 تا 31 می باشند.17

اسلاید 18: کرکترهای کنترلی18

اسلاید 19: نمایش مکمل 2 برای اعداد صحیح علامتدار اعداد منفی در کامپیوتر بصورت مکمل 2 نمایش داده می شوند. وقتی یک عدد به شکل مکمل دو نشان داده می شود تعداد بیت های مورد استفاده باید از قبل مشخص گردد. 19

اسلاید 20: نمایش مکمل 2 برای اعداد صحیح علامتداراعداد دودویی دارای طول معین هستند:بایتکلمه : محدوده مجاز -32768 32767 کلمه مضاعفکلمه چهارتایی 20

اسلاید 21: روش محاسبه مکمل 2 یک عدد :عدد را بصورت دودوئی درآورده.آنرا به تعداد بیت های مشخص شده تبدیل نموده .سپس صفر ها را 1 و 1 ها را به صفر تبدیل نموده .نتیجه را با یک جمع می نماییم.در اسلاید بعد مثالی آورده شده است. 21

اسلاید 22: مثال :-26 11001 معادل 26 هشت بیتی نموده 00011001صفرها را به یک و یک ها را به صفر تبدیل نموده 11100110 نتیجه را با یک جمع نموده 11100111 مقدار 11100111 در سیستم دودوئی نمایش عدد -26 می باشد.22

اسلاید 23: جمع و تفریق اعداد مکمل دوپاسخ صحیح232567+467---------------30340A07+01D3---------------0BDA

اسلاید 24: جمع و تفریق اعداد مکمل دواگر از 1 اضافی سمت چپ صرفنظر شود: پاسخ صحیح24518+(-80)---------------4380206+FFB0---------------101B6

اسلاید 25: جمع و تفریق اعداد مکمل دوپاسخ غلط: سرریز2518459+25690---------------44185483F+645A---------------AC99

اسلاید 26: تشخیص سرریز در جمع26سرریزرقم نقلی از بیت علامترقم نقلی به بیت علامتنهنهنهبلهبلهنهبلهنهبلهنهبلهبله

اسلاید 27: تفریق در شکل مکمل دودر کامپیوتر A-B بوسیله جمع A با مکمل دو B انجام میشود.اگر در جمع معادل نقلی وجود نداشته باشد، در تفریق رقم عاریه وجود دارد.اگر در جمع معادل سرریز وجود داشته باشد، در تفریق هم سرریز رخ داده است.27

اسلاید 28: سیستمهای دیگر برای نمایش اعدادمکمل یک : هر بیت مکمل میشوددهدهی دودویی شده (BCD) : هر رقم بصورت دودویی در چهار بیت نمایش داده میشود (92)DEC = (1001 0010)BCDممیز شناور28

اسلاید 29: ممیز شناوربیت سمت چپ در اعدادمثبت صفر و در اعداد منفی یک است.عدد را بصورت بدون علامت در سیستم دودویی بنویسید.عدد را بشکل نماد علمی بنویسید. به توان عدد ثابت 127 را اضافه کنید.مانتیس را (بدون یک قبل از اعشار) در 23 بیت و با اضافه کردن صفرهایی به سمت راست آن بنویسید.29

اسلاید 30: مثال ممیز شناور(78.375)10 = (1001110.011)2نمادعلمی: (1001110.011)2 = 1.001110011 * 2^6 ممیز شناور(باینری): 0 10000101 00111001100000000000000ممیز شناور( هگز) : 42 9C C0 0030

اسلاید 31: فهرست مطالب فصل دومحافظه اصلیواحد پردازش مرکزیاسامی و اهداف ثبات ها 31

اسلاید 32: فصل دومقسمت های یک سیستم کامپیوتری32

اسلاید 33: حافظه اصلی حافظه اصلی یک PC را می توان بصورت مجموعه ای از سگمنت ها در نظر گرفت. هر سگمنت بطول 64 کیلو بایت می باشد. 33

اسلاید 34: Memoryنکات : آدرس شروع هر سگمنت مضرب 16 می باشد.آدرس شروع هر سگمنت در مبنای 16 به رقم صفر ختم می شود . آدرس هر سگمنت برابر اولین چهار رقم شانزدهی آدرس آن می باشد. 34

اسلاید 35: نکته : آدرس هر بایت از حافظه اصلی را می توان با سگمنت حاوی بایت مزبور و به دنبال آن افستی که از ابتدای سگمنت یاد شده در نظر گرفته می شود، آدرس دهی کرد. آدرس شروع سگمنتافستبایت مورد نظر35

اسلاید 36: مثال : نماد 18A3 : 5B27 به بایتی که 5B27 بایت از اول سگمنت که از آدرس 18A30 شروع می شود، قرار دارد، اشاره می کند.18A30 + 5B27 = 1E557 36

اسلاید 37: واحد پردازش مرکزی (CPU ) تراشه 8088 دارای 14 ثبات می باشد که هر کدام یک محل ذخیره سازی داخلی بوده و می تواند یک کلمه 16 بیتی را نگه دارد. دستورالعمل ها معمولا داده ها را بین این ثبات ها یا حافظه اصلی انتقال داده و یا عملیاتی را روی داده های ذخیره شده در ثبات ها یا حافظه انجام می دهند. تمام این ثبات ها دارای نام بوده و بسیاری از آنها دارای اهداف ویژه ای هستند.37

اسلاید 38: اسامی و اهداف ثبات هاAX اکومولاتور، کاربرد همگانی، بایت بالایی برابر AH و بایت پایینی برابر AL BX کاربرد همگانی، بایت بالایی برابر BH و بایت پایینی برابر BL CX کاربرد همگانی، بایت بالایی برابر CH و بایت پایینی برابر CL 38

اسلاید 39: اسامی و اهداف ثبات هاDX کاربرد همگانی، بایت بالایی برابر DH و بایت پایینی برابر DLCS شماره سگمنت حافظه ای می باشد که دستورالعمل های اجرائی جاری در آنجا قرار دارد.DS سگمنت داده ها را می دهد.ES سگمنت فوق العاده را می دهد.39

اسلاید 40: اسامی و اهداف ثبات هاSS سگمنت پشته را می دهد.SP اشاره گر پشته، افست بالای پشته در سگمنت پشته.BP اشاره گر مبنا، افست نقطه مراجعه (Point reference ) در سگمنت پشته. 40

اسلاید 41: اسامی و اهداف ثبات هاSI اندیس منبع، افست رشته کاراکتری منبع در انتقال رشته های کاراکتری.DI اندیس مقصد: افست رشته کاراکتری مقصد.IP اشاره گر دستور العمل ها، آفست دستور العمل بعدی در سگمنت کد برای دستیابی ثبات نشانه ها مجموعه ای از نشانه ها یا بیت های وضعیت.41

اسلاید 42: ثبات نشانه بعضی از 16 بیت این ثبات برای نشان دادن نتیجه اجرای دستور العملها بوسیله دستور العمل های مختلف تغییر پیدا می کنند. هر کدام از این بیت ها را یک بیت وضعیت یا نشانه می گویند. اسامی برخی از این بیت ها عبارتند از :در اسلاید های بعد به توضیح هر یک از نشانه ها می پردازیم.42

اسلاید 43: نشانه هانشانه سرریزی OF flow Flag نشانه صفر Zero Flag ZFنشانه نقلی Flag Carry CF 43

اسلاید 44: نشانه هانشانه کمکی Flag Auxiliary AFنشانه توازن Flag ParityPFنشانه علامت Flag SignSF44

اسلاید 45: نشانه هانشانه جهت Flag Direct DFنشانه دام Flag Trap TFنشانه وقفه Flag Interrupt IF45

اسلاید 46: سخت‌افزار PC: دستگاه‌هاي ورودي/خروجييک دستگاه ورودي/خروجي معمولاً از سه تا هشت درگاه استفاده مي‌کند. اين آدرس‌ها از آدرس‌هاي حافظه معمولي متمايز مي‌‌باشند.

اسلاید 47: نرم‌افزار PC:نرم افزار به برنامه‌ها يا روال‌هايي که بوسيله سخت افزار اجرا مي‌‌شوند، اطلاق مي‌‌شود.دليل لزوم سفارش سيستم‌عامل اينست که:سيستم‌عامل از يک عده روال‌هاي نرم‌افزاري استفاده مي‌کند که به طور دائمي روي تراشه‌هاي ROM ذخيره مي‌شوند و اين روال‌ها از يک سيستم به سيستم ديگر تغيير مي‌کنند.

اسلاید 48: نرم‌افزار PC: ويرايشگرهاي متنيک ويرايشگر متن، برنامه‌اي است که مي‌توان به وسيله آن فايل‌هاي متني را روي ديسک ذخيره کرده يا آنها را تغيير داد. يک فايل متني مجموعه‌اي از کدهاي اسکي است.ويرايشگر EDLIN با توجه به اينکه يک فايل متني را به صورت مجموعه‌اي از خطوط در نظر مي‌گيرد، يک ويرايشگر خطي ناميده مي‌شود.

اسلاید 49: واژه‌پردازها، ويرايشگرهاي متني مي‌باشند که سرويس‌هاي اضافي براي قالب‌بندي و چاپ مستندات ارائه مي‌دهند.

اسلاید 50: مي‌توانيم براي آماده ساختن يک فايل کد منبع زبان اسمبلي از يک واژه‌پرداز استفاده کنيم، ولي يک واژه‌پرداز مي‌تواند اطلاعات قالب‌بندي را به همراه کدهاي اسکي متن مورد نظر در داخل يک فايل ذخيره کند. چنين اطلاعات اضافي ممکن است فايل مزبور را به عنوان يک فايل کد منبع زبان اسمبلي غيرقابل استفاده گرداند.

اسلاید 51: نرم‌افزار PC: مترجم يک زبان و پيونددهنده برنامهمترجم يک زبان برنامه‌اي است که کد يک منبع را به فرمي تبديل مي‌کند که مي‌تواند توسط کامپيوتر اجرا شود.مترجم‌ها را مي‌توان به سه گروه تقسيم نمود: مفسرها کامپايلرها اسمبلرها

اسلاید 52: مفسرها: يک برنامه منبع را به طور مستقيم ترجمه مي‌کنند. يک مفسر براي اجراي يک برنامه، يک خط از برنامه منبع را گرفته و دستورالعمل‌هاي واقع در خط مزبور را اجرا مي‌کند. برنامه‌هايي که تفسير مي‌شوند معمولاً به طور نسبي کند اجرا مي‌شوند. به کمک يک مفسر تغيير و اجراي يک برنامه به سرعت صورت مي‌گيرد.

اسلاید 53: کامپايلر: يک کامپايلر يک کد منبع را گرفته و کد هدف آن را که معمولاً متشکل از دستورالعمل‌هايي مي‌باشد که به وسيله CPU مورد نظر اجرا مي‌شوند، تشکيل مي‌دهد. کد هدف توليد شده به وسيله يک کامپايلر بايستي غالباً پيوند (link) داده شده و يا با کدهاي هدف ديگر ترکيب شود تا بتوان آن را به داخل حافظه اصلي بار کرده و اجرا نمود. برنامه‌هاي کامپايل شده خيلي سريعتر از برنامه‌هاي تفسير شده اجرا مي‌شوند

اسلاید 54: اسمبلر: يک اسمبلر خيلي شبيه کامپايلر مي‌باشد اما زبان اسمبلي را به زبان ماشين ترجمه مي‌کند. غالباً براي اجراي فايل‌هاي نتيجه، بايستي آنها را پيوند داد.

اسلاید 55: فصل سومبرنامه نویسی اسمبلر55

اسلاید 56: فهرست مطالب فصل سومبرنامه ها و شکل کلی دستورات اسمبلینامگذاری فیلدهاکد منبعمتغیرها در اسمبلیعملوند دستورالعملها حالتهای آدرس دهی56

اسلاید 57: دستورالعملهای زبان اسمبلی هر دستور زبان اسمبلی در روی یک خط فایل کد منبع وارد میشود.یک خط می تواند حد اکثر 128 کرکتر داشته باشد.وجود خطوط خالي مجاز است و استفاده از آنها براي جدا کردن بخش هاي مختلف کد برنامه مفيد است.57

اسلاید 58: دستورالعملهای زبان اسمبلی استفاده از توضیحات مناسب در برنامه مهم است. هر توضیحی با کرکتر ; شروع میشود و تا انتهای خط می تواند ادامه داشته باشد. 58

اسلاید 59: زبان اسمبلی دارای سه نوع دستورالعمل می باشد :دستورالعمل مانند ADD AX , 244 دستور اسمبلی مانند PAGE ماکرونوعی دستورالعمل است که در آن تعدادی دستورالعملها، دستورات اسمبلی یا حتی ماکروهای دیگر قرار گرفته اند.59

اسلاید 60: زبان اسمبلی دارای سه نوع دستورالعمل می باشد :دستورالعمل: به وسيله اسمبلر به کد هدف ترجمه مي‌گردد و اين کدها هستند که در زمان اجرا، اجرا مي‌گردند.دستور اسمبلر: به اسمبلر مي‌گويد که عملي را انجام دهد. و اغلب هيچ اثري بر روي کد هدف ندارد.ماکرو: نوعي دستورالعمل است که در آن تعدادي دستورالعمل‌ها، دستورات اسمبلر يا حتي ماکروهاي ديگر قرار گرفته‌اند.60

اسلاید 61: شکل کلی دستورات اسمبلیيک دستورالعمل مي‌تواند شامل عناصر زير باشد:توضيحاتعملوند(ها)نام دستورالعملاسم یل برچسب[;comment][operand(s)]mnemonic[name]يک کاربرد فيلم اسم آن است که مي‌توان آدرس دستورالعملي را به صورت نمادي بعد از اسمبل و لينک شدن برنامه با يک برچسب نشان داد. دستورالعمل‌هاي ديگر به راحتي مي‌توانند به دستورالعمل مزبور رجوع کنند.61

اسلاید 62: شکل کلی دستورات اسمبلیمثال:L1 :MOV AX,BX ; AX:=BXL2 :INC AXL3: NOP62اگر دستور اسمبلر باشد نیازی به : نیست

اسلاید 63: شکل کلی دستورات اسمبلیدستورالعمل‌هاي داراي برچسب مي‌توانند مقصد يک دستورالعمل پرش در زبان اسمبلي باشند.ساختار حلقه‌ در زبان اسمبلي وجود ندارد، اما مي‌توان حلقه‌ها را با استفاده از jmp و يا دستورالعمل‌هاي ديگر پياده‌سازي کرد.برچسب نمي‌تواند به وسيله عدد شروع شود. و اگر نقطه استفاده شود، حتماً بايد اولين کاراکتر باشد.بغيراز اعداد و نقطه، کاراکترهاي ديگر مي‌توانند در هر موقعيتي استفاده شوند.فقط 31 کاراکتر اول اسم مورد استفاده قرار خواهد گرفت.63

اسلاید 64: قانونگذاری نامها در اسمبلی نامها در اسمبلی حداکثر 31 کاراکتر می باشنددر استفاده از نامها در اسمبلی نکات زیر را می بایست در نظر داشت:1- اسم نمی تواند با یک رقم شروع شود مانند 2LABEL2- اسم نباید یکی از کلمات ذخیره شده اسمبلی باشد مانند MOV3- در صورتیکه از نقطه در نام استفاده می شود می بایست در ابتدای نام استفاده شود مانند .LABEL64

اسلاید 65: شکل کلی دستورات اسمبلیمقادير عددي در دستورات زبان اسمبلي، دهدهي فرض مي‌شوند و فقط زماني اين فرض کنار گذاشته مي‌شود که در برنامه منبع حالت ديگري خواسته شده باشد.يک مقدار شانزده شانزدهي بايد با يک عدد بغير از اعداد شانزده‌شانزدهي «a» تا «f»، شروع شود تا اسمبلر بتواند آنها را از يک اسم تشخيص دهد.65

اسلاید 66: کد منبع کل برنامه از چهار قسمت تشکیل شده است. هر قسمت با دستور SEGMENT شروع و با ENDS ختم می گردد.Segment _ name SEGMENT . ..Segment _ name ENDS دستور ENDS هيچ وقت داراي عملوند نيست؛ ولي دستور SEGMENT در بعضي کاربردها با عملوند به کار مي‌رود. 66

اسلاید 67: کد منبع آخرين دستور برنامه، دستور اسمبلر زير است:END startدستور END به اسمبلر مي‌گويد که پردازش دستورات کد منبع را خاتمه دهد.در يک برنامه منبع فقط يک دستور END وجود دارد و آن آخرين دستور است.67

اسلاید 68: کد منبع عملوند start مشخص کننده اولين دستور برنامه است که بايد اجرا شود. زماني که برنامه بار مي‌شود، سيستم‌عامل ثبات سگمنت کد را با سگمنتي که حاوي اين دستورالعمل است مقداردهي کرده و ثبات اشاره‌گر دستورالعمل‌ها، IP را با آفست اين دستورالعمل از ابتداي سگمنت مزبور شروع مي‌نمايد.68

اسلاید 69: کد منبع سگمنت کد با دستور اسمبلر زير شروع مي‌شود:ASSUME CS:Code,DS:dataاين دستور به اسمبلر مي‌گويد در صورتيکه يک دستورالعمل از يک برچسب که در داخل سگمنت کد قرار دارد استفاده بکند آدرس واقعي عملوند مزبور بايد به وسيله حاصلجمع ثبات سگمنت CS و آفست برچسب از ابتداي سگمنت کد محاسبه شود.69

اسلاید 70: کد منبع سيستم‌عامل وظيفه مقداردهي اوليه ثبات سگمنت کد را به واسطه عملوند موجود در دستور END به عهده دارد ولي سيستم‌عامل همين کار را براي ثبات سگمنت داده DS انجام نمي‌دهد. اينکار را بايد برنامه‌نويس انجام دهد.شماره واقعي سگمنت داده تا زماني که برنامه بار نشده باشد قابل تعيين نيست، در آن زمان است که اين آدرس به وسيله DOS براي برنامه تعيين مي‌شود.70

اسلاید 71: SEGMENT ها عبارتند از :STACK SEGMENTDATA SEGMENT EXTRA SEGMENTCODE SEGMENT71

اسلاید 72: شکل کلی برنامهSTART STACK _ SEG SEGMENT PARA STACK ‘STACK’اندازه پشته.STACK _ SEG ENDSDATA _ SEG SEGMENT PARA ‘DATA’متغیر هاDATA _ SEG ENDSEXTRA _ SEG SEGMENT PARA ‘EXTRA’متغیرهای رشته هاEXTRA _ SEG ENDSCODE _ SEG SEGMENT PARA ‘CODE’دستورالعمل های برنامهCODE _ SEG ENDSEND START72

اسلاید 73: متغیرها دراسمبلی:تعریف متغیر در اسمبلی شامل نوع داده نام داده و اندازه داده می باشد دستورات تعریف متغیر در اسمبلی عبارتند از:DB برای تعریف یک بایتDW برای تعریف دو بایتDD برای تعریف چهار بایتDQ برای تعریف هشت بایتDT برای تعریف ده بایتمثال:X DB 35hتعریف متغیری با نام X با مقدار اولیه 35 هگزا دسیمال به طول یک بایتY DW 569Fhتعریف متغیری با نام Y به طول دو بایت با مقدار اولیه 569Fh73

اسلاید 74: عملوندهاي دستورات DB و DWيک عملوند عددي براي دستور DB مي‌تواند در محدوده دهدهي 255- تا 255 باشد. يک عدد بدون علامت صفر تا 255 مي‌تواند دريک بايت ذخيره شود.در مورد دستور DW، محدوده مجاز براي عملوندي از 65535- تا 65535 مي‌باشد. اعداد بدون علامت صفر تا 65535 در يک کلمه جاي مي‌گيرند.74

اسلاید 75: مثال :X DB 10 , 12 , 24 , 5 , 16 X یک آرایه پنج عنصری از نوع بایت می باشد.75

اسلاید 76: مثال :Number1DW?Number2DW?هرکدام يک کلمه را در سگمنت داده ذخيره مي‌کنند.علامت سؤال به اسمبلر مي‌گويد که هيچ مقدار اوليه‌اي به اين دو کلمه نسبت داده نشود.76

اسلاید 77: مثال :TABLE DB 100 DUP (‘*’)آرایه TABLE از نوع بایت و 100 عنصری ، با مقدار اولیه *عملگر DUP مي‌تواند براي توليد چندين بايت يا کلمه با مقادير اوليه معين و يا بدون مقدار اوليه، مورد استفاده قرار بگيرد. کاربرد اين عملگرد به DB، DW و دستورات اسمبلر ديگري که فضا را ذخيره مي‌کنند محدود مي‌شود.77

اسلاید 78: عملوندها و دستورالعملها عملوندها دارای انواع مختلف می باشند.بعضی ثابت بوده ، بعضی مشخص کننده ثباتهای CPU و برخی به حافظه رجوع می نمایند. بسیاری از دستورالعملها دارای دو عملوند می باشند.بطور کلی عملوند اول ، مقصد عملایت را تعیین می کنند و عملوند دوم منبع عملیات.مانند:MOV AX,BXدر دستور اسمبلی بالا MOV دستورلعمل، AX عملوند اول و BX عملوند دوم می باشد.78

اسلاید 79: مثال :MOV AL , ‘*’ که کرکتر * را جایگزین محتوی قبلی ثبات AL می شود.مقصد ثابت نمی تواند باشد ولی منبع می تواند ثابت باشد.دستور تک عملوندی INC BXدستور دو عملوندی MOV AX,8000hدستور بدون عملوند STC79

اسلاید 80: حالت های آدرس دهیبلاواسطه ثبات مستقیمدارای مبنا دارای اندیسدارای مبنا و اندیس 80

اسلاید 81: حالتهای مختلف آدرس دهیبلاواسطهثباتحافظه81

اسلاید 82: حالتهای مختلف آدرس دهی 821- آدرس دهی بلا واسطهاین حالت آدرس دهی می تواند طول 8 بیتی یا شانزده بیتی داشته باشددر این نوع آدرس دهی عملوند دوم یک عدد ثابت می باشدمثال:MOV AX,8765hMOV BL,5Fh

اسلاید 83: حالتهای مختلف آدرس دهی 832- آدرس دهی ثباتاین حالت آدرس دهی داده در ثباتی قرار می گیرد که بوسیله دستورالعمل مشخص می شود ثبات می تواند هشت بیتی یا شانزده بیتی باشد.مثال:MOV AX,BXMOV BL,CL

اسلاید 84: حالتهای مختلف آدرس دهی 843- آدرس دهی مستقیماین حالت آدرس دهی آدرس داده که طول شانزده بیتی دارد جزئی از دستورالعمل می باشد بسته به طول ثباتی که در عملوند اول قرار دارد یک بایت یا یک کلمه به ثبات منتقل می شودمثال:MOV AX,TABLEMOV BL,TABLE

اسلاید 85: حالتهای مختلف آدرس دهی 854- آدرس دهی غیر مستقیم ثباتاین حالت آدرس دهی آدرس در یکی از ثباتهای BX,SI یا DI قرار می گیرد مثال:MOV AX,[BX]MOV BL,[DI]

اسلاید 86: حالتهای مختلف آدرس دهی 865- آدرس دهی مبنا یا اندیساین حالت آدرس دهی آدرس در یکی از ثباتهای BX,SI یا DI,BP قرار می گیرد در این روش یک جابجایی 8بیتی یا 16 بیتی وجود دارد. مثال:

اسلاید 87: حالتهای مختلف آدرس دهی 875- آدرس دهی مبنا و اندیساین حالت آدرس دهی آدرس در یکی از ثباتهای BX یا BP قرار می گیرد و از SI و DI بعنوان ثبات اندیس استفاده می شود در این روش آدرس از مجموع مبنا و اندیس بدون جابجایی بدست می آید.مثال: MOV AX,[BX][DI]

اسلاید 88: حالتهای مختلف آدرس دهی 886- آدرس دهی مبنا و اندیس با جابجاییاین حالت آدرس دهی آدرس در یکی از ثباتهای BX یا BP قرار می گیرد و از SI و DI بعنوان ثبات اندیس استفاده می شود در این روش آدرس از مجموع مبنا و اندیس با جابجایی بدست می آید.مثال:

اسلاید 89: حالتهای مختلف آدرس دهی 89در مواردمعدودي، برنامه‌نويس ممکن است يک ثبات سگمنت و يک آفست واقعي را به عنوان عملوند مستقيم بنويسد، MASM دستورالعمل زير را مجاز مي‌شمارد:Mov bx,dx:0014hاين دستورالعمل، ثبات BX را با کلمه‌اي که از بيستمين بايت سگمنت داده شروع مي‌شود، بار مي‌نمايد. اين آدرس قابل جابجايي نيست.يک عملوند ثبات غيرمستقيم، از داده حافظه استفاده مي‌کند.

اسلاید 90: ماکروي itoa يک رشته شش کاراکتري کدهاي اسکي براي عدد مکمل دو (برای چاپ در خروجی)ايجاد مي‌کند.در يک سگمنت، ترتيب دستورالعمل‌ها دقيقاً ترتيب کدهاي حاصله را تعيين مي‌کند.

اسلاید 91: ماکروي output، محتوي هيچ ثباتي و همينطور ثبات نشانه‌ها را تغيير نمي‌دهد.ماکروي inputs فقط بر روي ناحيه مقصد و ثبات CX اثر مي‌گذارد، هيچ ثبات ديگري از جمله ثبات نشانه‌ها تغيير نخواهند کرد.ماکروي inputc داراي هيچ عملوندي نمي‌باشد. اين ماکرو يک کاراکتر را از صفحه کليد مي‌خواند و کد اسکي آن را در ثبات AL ذخيره مي‌نمايد.

اسلاید 92: اگر ماکروي atoi قادر باشد که به طور موفقيت‌آميز يک رشته کاراکتر اسکي را تبديل کند آنگاه نشانه سرريز يعني OF صفر خواهد گرديد. در تمام موارد نشانه‌هاي PF,ZF,SF بسته به مقداري که در AX برگردانده مي‌شود به ترتيب زير تغيير خواهند کرد:اگر عدد منفي باشد SF يک خواهد شد و در غيراينصورت صفر.اگر عدد صفر باشد ZF يک خواهد شد و در حالت غيرصفر، صفر خواهد شد.PF نشاندهنده توازن عدد برگردانده شده در AX است.

اسلاید 93: فصل چهارمدستورالعمل های اساسی93

اسلاید 94: فهرست مطالب فصل چهارمانتقال داده ها بین مکانهای مختلفجمع و تفریقدستورالعملهای ضربدستورالعملهای تقسیمجمع و تفریق مکمل 2 با اعداد بزرگتر 94

اسلاید 95: انتقال داده ها بين مكانهاي مختلف حافظهكارايي زمان و فضا (حافظه ) دو مفهوم اساسي اين فصل مي با شند .دستورالعملmov در زبان اسمبلي براي كپي كردن داده ها از محلي به محل ديگر مورد استفاده قرار مي گيرد.دستورالعمل xchg ، دستور مفيد ديگري است كه درزبان اسمبلي براي تعويض داده هاي منبع ومقصد كاربرد دارد.نكته : مي توان اندازه ي داده ي مورد نظر را از يك كلمه به يك بايت و يا بالعكس تغيير داد.

اسلاید 96: مفهوم كارايي زمان مدت زمان لازم براي اجراي يك دستورالعمل بر حسب سيكل هاي ساعت . هر چه سيكل هاي زماني براي اجراي يك دستور العمل كمتر باشد ان دستور العمل كارايي بيشتري خواهد داشت .به طور كلي دستور العملهايي كه به حافظه دستيابي مي كنند خيلي كندتر از دستورهايي هستند كه از ثبات ها استفاده مي كنند بنا براين بايد در صورت امكان داده هايي كه زياد مورد استفاده قرار ميگيرند را در ثبات ها قرارداد.

اسلاید 97: مفهوم كارايي حافظه ايجاد برنامه ي هدفي كه طول ان حداقل باشد يعني حافظه ي كمتري را اشغال كند (كد فشرده) مناسبتر وحتي در بعضي كاربرد هاي زبان اسمبلي لازم است .كارايي زمان بر حافظه ارجحيت دارد زيرا حافظه را مي توان خريد (جبران كرد ) ا ما زمان را نه ! بنابراين برنامه اي كه سريعتر اجرا شود بر ديگري برتر است حتي اگر از حافظه ي بيشتري استفاده كند.

اسلاید 98: دستورالعمل movبه صورت mov destination , source نوشته مي شود و يك بايت يا يك كلمه را از محل source به محل destination كپي مي كند .دستور العمل mov شبيه يك دستور جايگزيني ساده در زبانهاي سطح بالا مي باشد ، البته با وجود محدوديت هايي در زبان اسمبلي دستور العمل mov محتواي ثبات نشانه ها و ثبات IP ( اشاره گر دستورالعمل ها ) را تغيير نمي دهد .

اسلاید 99: مثال : MOV CX , Count محتوی حافظه COUNT در CX قرار می گیرد.99

اسلاید 100: محدوديت هاي زبان اسمبلي كه دستورmov را از يك دستور جايگزيني در يك زبان سطح بالا متمايز مي كند . 1- عبارتهايي نظير ( Count = 3 number + 5) را نمي توان با يك دستور mov بيان كرد . ( لازم است قبلا چند دستورالعمل براي محاسبه ي عبارت سمت راست استفاده شود . ) 2- تمام تركيبات انواع عملوندهاي منبع و مقصد مجاز نيستند .

اسلاید 101: تركيباتي ازعملوندهاي دستوالعملmov كه ممكن نمي باشند :1- در صورتي كه هر دو عملوند منبع و مقصد در حافظه قرار داشته باشند .2- عملوند منبع بلاواسطه به ثبات سگمنت مقصد 3- هرانتقالي به ثبات نشانه ها يا از ان4- هر انتقالي به ثبات IP 5- انتقال از يك ثبات سگمنت به ثبات سگمنت ديگر 6- هر انتقالي كه عملوندهاي ان از يك نوع بايت يا كلمه نباشند

اسلاید 102: دستور mov وقتي كه عملوندهاي منبع و مقصد در حافظه هستند با توجه به اينكه دستورالعمل mov نمي تواند داده اي را از يك منبع حافظه به يك مقصد حافظه كپي كند ، معمولا براي انجام اين كار ازدو دستورالعمل mov كه از يك ثبات مياني استفاده مي كنند ، بهره مي گيريم . بهتر است ثبات AX را به عنوان ثبات مياني به كار ببريم زيرا از يك سيكل زماني و بايت حافظه ، كمتري نسبت به ثبات هاي ديگر استفاده مي كند . ( به صفحه 104 كتاب مراجعه شود )

اسلاید 103: دستور العمل xcgh به صورت operator2 , operator1 xcgh نوشته مي شود . و عملي را انجام مي دهد كه در زبانهاي سطح بالا با سه دستور صورت مي گيرد . اين دستور عملوند اول و عملوند دوم را با يكديگر تعويض نموده به صورتي كه به سيكل زماني و حافظه كمتري نياز داشته باشد .فرم هاي مختلف دستورالعمل xcgh در صفحه 110 كتاب است . در صورت استفاده از حافظه اصلي ، عملوند حافظه بايد عملوند دوم دستور xcgh باشد . دستورالعمل xcgh ثبات نشانه ها را تغيير نمي دهد .

اسلاید 104: نكته براي تغيير اندازه داده مورد نظر از يك كلمه به يك بايت مي توان كلمه مورد نظر را به يك ثبات انتقال داده پس بايت بالايي يا پاييني را به مقصد مورد نظر انتقال دهيم . برعكس مي توانيم دو بايت را در يك ثبات كنارهم گذاشته پس كلمه حاصل را به مقصد مورد نظر كپي كنيم .

اسلاید 105: دستورالعمل LEA این دستورالعمل مخفف کلمات Load effect address می باشد. شکل کلی دستورالعمل بصورت زیر می باشد : LEA destination, source destination بایستی یک ثبات 16 بیتی بوده و source هر گونه رجوعی به حافظه می باشد. این دستورالعمل آدرس source را در destination قرار می دهد. 105

اسلاید 106: مثال :LEA BX , Xآدرس متغییر X در ثبات BX قرار می گیرد.این دستورالعمل معادل دستورالعمل زیر می باشد.MOV BX , OFFSET 106

اسلاید 107: دستورالعمل ADDشکل کلی آن عبارتست از :ADD destination , Source محتوی Source با محتوی destination جمع شده نتیجه در destination قرار می گیرد. این دستورالعمل روی فلگ ها اثر دارد. 107

اسلاید 108: مثال :ADD AL , 5 5 واحد به محتوی AL اضافه می گردد.108

اسلاید 109: مثال :ADD X , BX به محتوی X ، محتوی BX اضافه می گردد و محتوی BX تغییر نمی کند. 109

اسلاید 110: نکته :در اسمبلی هر دو عملوند یک دستورالعمل نمی توانند از نوع متغییر باشند.110

اسلاید 111: دستورالعمل SUBشکل کلی آن عبارتست از :SUB destination , Source محتوی Source از destination کم گردیده نتیجه در destination قرار داده می شود و محتوی Source تغییر نمی کند. . این دستورالعمل روی فلگ ها اثر دارد. 111

اسلاید 112: مثال : SUB Y , 20 تغییر Y به اندازه 20 واحد کاهش می یابد. 112

اسلاید 113: مثال : SUB AX , X محتوی X از AX کم شده و نتیجه در AX قرار می گیرد. 113

اسلاید 114: نكته دردستورالعملهاي add و sub محتواي عملوند دوم ( source) تغيير نميكند.براي هر دستور add يك دستورsub متناظر با همان نوع عملوند ها، تعداد سيكل هاي زماني و تعداد بايت هاي كد هدف وجود دارد . اعمال جمع و تفريق زماني سريع ترين مي باشند كه هر دو عملوند در ثبات ها قرار داشته باشند و زماني كندترين مي باشند كه عملوند مقصد يك كلمه اي در حافظه باشد . اضافه كردن يك عملوند واقع در حافظه ي اصلي به محتواي يك ثبات سريعتر از اضافه كردن مقدار يك ثبات به محتواي يك عملوند واقع درحافظه ي اصلي مي باشند . زماني كه عملوند مقصد برابر يك كلمه است ، يك عملوند منبع بلاواسطه مي تواند برابر يك بايت باشد . زيرا در زمان اجراي عمل جمع يا تفريق به يك كلمه تبديل مي شود .

اسلاید 115: دستورالعمل های DEC , INC شکل کلی آن عبارتست از :DEC destinationINC destination دستورالعمل INC , DEC به ترتیب عملوند مقصد را به اندازه یک واحد کاهش و یا افزایش می دهد. 115

اسلاید 116: مثال : INC X محتوی X یک واحد افزایش می یابد .DEC AX محتوی AX یک واحد کاهش می یابد. 116

اسلاید 117: نكاتي در مورد دستورات inc وdecمقدار عملوند مقصد را به صورت يك عدد بدون علامت در نظرميگيرند.نشانه هاي OF وSF وZF را تغييرميدهند ولي نشانه CF راتغييرنمي دهند.براي افزايش و كاهش شمارنده ها مفيدند و ازدستورات جمع وتفريق متناظر كارامد ترند .بهترين مكان براي نگه داشتن شمارنده ها در صورت امكان ثبات ها مي باشند.عملوند این دستورات نمیتواند ثابت باشد.

اسلاید 118: علت كارامد تر بودن inc وdec نسبت به add وsub درشمارنده هادودستورadd bx , 1 و inc bx از نظركاري معادل مي باشند اما دستورadd به 4 سيكل زماني و 3بايت حافظه نياز دارد در صورتي كه دستور inc به 2 سيكل زماني و يك بايت حافظه نياز دارد.به همين ترتيب دو دستور sub counter ,1 و dec counter از نظر كاري معادل يكديگرند ولي دستور sub به23 سيكل زماني و 4 بايت حافظه نياز دارد درصورتي كه دستورdec به 21 سيكل زمان و4 بايت حافظه نيازمند است .

اسلاید 119: دستورالعمل NEG شکل کلی آن عبارتست از :NEG destinationاین دستورالعمل عملوند خود را منفی می نماید یعنی مکمل 2 آن را محاسبه می نماید. 119

اسلاید 120: مثال :MOV AX ,100 NEG AX محتوی AX به 100- تغییر می یابد. 120

اسلاید 121: دستورالعملهای ضرباسمبلی دارای دو دستورالعمل ضرب می باشد : IMUL عملوندها را بصورت علامتدار در نظر می گیرد. MUL عملوندها را بصورت بدون علامت در نظر می گیرد. 121

اسلاید 122: دستورالعملهای ضربشکل کلی آن عبارتست از :MUL OPRIMUL OPR122

اسلاید 123: توضیحات :عملوند ثابت نمی تواند باشد.چنانچه OPR از نوع بایت باشد محتوی OPR در محتوی AL ضرب شده نتیجه در AX قرار می گیرد.چنانچه OPR از نوع WORD باشد محتوی OPR در محتوی AX ضرب شده نتیجه در DX : AX قرار می گیرد و محتوی ثبات های DX , AX از بین می رود.روی فلگ ها اثر دارد.123

اسلاید 124: مثال :MOV AL , 10 MOV X , - 8 IMUL X محتوی ثبات AX برابر با - 80 می شود. 124

اسلاید 125: دستورالعمل های تقسیماسمبلی دارای دو دستورالعمل تقسیم می باشد : IDIV عملوند را بصورت علامتدار در نظر می گیرد. DIV عملوند را بصورت بدون عملوند در نظر می گیرد. 125

اسلاید 126: دستورالعمل های تقسیمشکل کلی آن عبارتست از :DIV OPRIDIV OPR126

اسلاید 127: توضیحات :عملوند ثابت نمی تواند باشد.چنانچه OPR از نوع بایت باشد محتویAX بر محتوی OPR تقسیم شده نتیجه در AL قرار می گیرد و باقیمانده تقسیم در AH قرار می گیرد.چنانچه OPR از نوع WORD باشد محتوی DX:AX بر محتوی OPR تقسیم شده نتیجه تقسیم در AX قرار می گیرد و باقیمانده در DX قرار می گیرد.127

اسلاید 128: مثال :X DB 13 MOV AX , 134 DIV X پس از اجرای دستورالعمل های فوق محتوی AL برابر با 10 و محتوی AH برابر با 4 می باشد.128

اسلاید 129: دستورالعمل های SBB , ADC در اسمبلی برای جمع و تفریق دو مقدار از نوع double word دستورالعملی وجود ندارد. برای این منظور ار دستورالعملهای SBB , ADC استفاده می گردد.129

اسلاید 130: دستورالعمل های SBB , ADCشکل کلی آن عبارتست از :ADC destination , Source destination destination + Source + CFSBB destination , Souncedestination destination - Source – CF130

اسلاید 131: مثال :ADC X , BXSBB AX , Y 131

اسلاید 132: تفریق و جمع دو double word می خواهیم محتوی دو متغییر X و Y از نوع double word را جمع نموده نتیجه را در Z قرار دهیم :X DD ?Y DD ?Z DD ?MOV AX , XADD AX , YMOV Z , AXMOV AX , X + 2ADC AX , Y + 2MOV Z + 2 , AX چنانچه بخواهیم محتوی دو متغییر را از هم کم نماییم بایستی در دستورالعملهای فوق ADD را به ADC , SUB را به SBB تبدیل نماییم.132

اسلاید 133: كنترل كردن نشانه CF دستورالعمل clc : نشانه ي cf را برابر صفر قرار مي دهد. 0 CF : = دستورالعمل stc : نشانه ي cf را برابر 1 قرارمي دهد. CF : = 1 دستورالعمل cmc : نشانه ي cf را مكمل مي كند.

34,000 تومان

خرید پاورپوینت توسط کلیه کارت‌های شتاب امکان‌پذیر است و بلافاصله پس از خرید، لینک دانلود پاورپوینت در اختیار شما قرار خواهد گرفت.

در صورت عدم رضایت سفارش برگشت و وجه به حساب شما برگشت داده خواهد شد.

در صورت بروز هر گونه مشکل به شماره 09353405883 در ایتا پیام دهید یا با ای دی poshtibani_ppt_ir در تلگرام ارتباط بگیرید.

افزودن به سبد خرید