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

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

صفحه 1:
اصول اساسى برنامه نويسى به زبان اسمبلم Richard C, Detmer ; ‏مو لف‎ ey er eee) نام درس : زبانياى ماشين و برنامه سازى سيسقم.

صفحه 2:

صفحه 3:
اس

صفحه 4:
فهرست مطالب فصل ۳ ‎nen‏ 00000 20000000 ‎eae‏ 3 ۲ برای اعداد علامت دا كت

صفحه 5:
۱۳ در زبانهای سطح بالا نگران اینکه داده ها در کامپیهتر جكونه نمايش داده ميشوند نيستيم ولى در زبان هاى ا ‎eres peer‏ اغلب با کار تبدیل داده ها از یک نوع به نوع دیگر مواجه مى باشيم.

صفحه 6:
اعداد دودويى و شانزده شانزدهى RPE ‏ا‎ ‎0000 ‏اا‎ Tyee) 00000 oceg Reve Tes]

صفحه 7:
اعداد دودويى و شانزده شانزدهى RPC erie en rs se ree ‏ل ا‎

صفحه 8:
مثال : (oul سیستم دودوتی شبیه سیستم دهدهی است با اين تفاوت که ارقام از سمت راست الل ا ل ا ‎Fre re‏ 5 ‎py si,J>‏ ال در سيستم دودوئى معادل 11 می باشد.

صفحه 9:
مثال : 0۷0 سیستم دودوتی شبیه سیستم دهدهی است با اين تفاوت که ارقام از سمت راست به جب به جاى ارزش ‎Tran)‏ ۱۱( . ارزش ۰۱ 16 ا ‎fee‏ ‏باشد.

صفحه 10:
2 ee ame rel هر رقم در سیستم شانزدهی بوسیله چهار رقم در سیستم دودوتی قابل لمابشن مى باشده در اسلاید بعد مثالی آورده شده است,

صفحه 11:
4. ‏معدل‎ ۵100 las E Joe 1110 " BSE RPS OOM IN PSI PE Cae ROM BP PETE Se ek eer در اسلاید بعد مثالی آورده شده است.

صفحه 12:
سل ‎BP MPT ITO Re SEs ee tag eee‏ 011 ال 53 معدل 0010101011010101 در سيستمدودونىميياشد

صفحه 13:
PLS wee Se ame tl برای تبدیل اعداد دودوئی به شانزدهی .ارقام عدد داده شده را از ‎fore‏ ۱ معادل هر گروه در سیستم شانزدهی را جایگزین می نماییم. در اسلاید بعد مثالی آورده شده است.

صفحه 14:
مثال :

صفحه 15:
۳۹

صفحه 16:
كر كترهاى قابل جاب

صفحه 17:
كركترهاى قابل جاب داراى كدهاى 32 تا 126 مى باشند. * کرکترهای کنترلی دارای کدهای ۰ تا 31 می باشند.

صفحه 18:
Pee es

صفحه 19:
نمايش مكمل 7 براى اعداد صحيح علامتدار اعداد منفى در كامبيمتر بصورت مكمل © نمليش داده حى شوند. وقتى.يى ‎eens‏ 0 000 ‎ey‏ 53230

صفحه 20:
| 1 corey كلمه : محدوده مجاز -32768 32767 كلمه مضاعف کلمه چهارتایی

صفحه 21:
روش محاسبه مکمل ۲ یک عدد : عدد را بصورت دودوئی در آورده. 0 000000 ا ال يي ا ا ‎cra‏ ا سر ‏در اسلاید بعد مثالی آورده شده است. ‏رح

صفحه 22:
مثال : هه ۶۰ 11001 معادل 26 * هشت‌بیتی نموده ۰ 00011001 20000 ۱۷۹۱ 0 الل مقدار 11100111 در سیستم دودوئی نمایش عدد -260 می باشد.

صفحه 23:
جمع و تفریق اعداد مکمل دو تج ی ey

صفحه 24:
جمع و تفریق اعداد مکمل دو 101111110110155

صفحه 25:
ey جمع و تفریق اعداد مکمل دو 9

صفحه 26:
تشخیص سرریز در جمع

صفحه 27:
۳ ا ا ا ا ال لا ل ا | اا ا ا 0

صفحه 28:
‎Oi ie ee eee‏ ره 1 ‎0 ‏ل‎ rer rer) ‏ميشود (ح0)تة(0010 1001) د عدم‎ ‏مميز شناور

صفحه 29:
Byes Pra SPS I ean ON os Tera عدد را بصورت بدون علامت در سیستم دودویی بنویسید. عدد را بشکل نماد علمی بنویسید. به توان عدد ثابت 9/2 را اضافه کنید. ۱ سمت راست آن بنويسيد.

صفحه 30:
مثال مميز شناور MOOaO.0ad) = dO(7?E.978) Ore *d.OOaddOOdd = 2)0000000.000( Henney 00000000 0 ‏ممیز شناور(باینری):‎ 00000004100 0 0000000000000 0

صفحه 31:
فهرست مطالب فصل دوم حافظه ا eT ee *" اسامى و اهداف ثبات ها كت

صفحه 32:
اس

صفحه 33:
0 2 حافظه اصلی یک :۳6 راحى توان بصورت مجموعه اى از سگمنت ها در نظر گرفت. هر سگمنت بطول ۶ کیلو بایت می باشد.

صفحه 34:
۸2 ا 5 ‏آدرس شروع هر سگمنت مضرب 9 می باشد.‎ * Ret Se aCe ia ts Seo a BU TOROS Ne Sct SB teat be hore Te Sia 2 3

صفحه 35:
مزبور و به دنبال آن ی 1 1 err ee آدرس هر افستی که آدرس شروع سگمنت 1ت "* بایت مورد نظر 3

صفحه 36:
مثال : نماد 5827 : 1843 به بايتى كه 518827 بايت ازاول سكمنت 5 ۱[ 18A30 + 5B27 = 1E557

صفحه 37:
9

صفحه 38:
Lees] ere) argon papery: ‏ا‎ LT V.v. Gila ‏كه‎ * 87 كايبرد همكلتى بايتبللاإىيرلبر 18811 و بايتيسابيتىيبر لير 131 و

صفحه 39:
[۱ ee PY epe| 21 كاربرد همكانى بايتبا لإويرابر ;)1 ‎o>) Sgn rene‏ ‎Oh‏ ا ا ا ا ل ‎EP‏ ‎Pe oC a 1)‏ 50 55 سكمشتفوقاهاده را مودهد

صفحه 40:
[۱ ee PY epe| " 595 سكمنتيشته را موجهد ا 7 اا ا اا اا ل ا 0 ۳

صفحه 41:
[۱ ee PY epe| و * ]12 لنسیسمقصد: لفستوشته کارلکتریمقصد 18 لشاید گر دستور اسادملها. آفستفستور اسادملسعدودر سگمننکد بسولی مستيلبثباتفشلنه ها مجموعه لواز نشلنه ها با بيتعاووضعيت

صفحه 42:
ثبات نشانه بعضی از 40 بیت لین ثبات برای نشان دادن نتیجه اجرای دستور العملها بوسیله دستور ‎Perey ROuPe POUT AUT TOON rcv neta riepeer ne Te orr gt Pe‏ ‎eli] Poneman‏ ۱ ‎qd 4 4 4‏ ری نی د ‏ له در ت تب نف ت بت ه نب بت لب ۷ ‏فص ‎P ry‏ 8 اذم اذا اذا اذا 1۲ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‏در اسلايد هاى بعد به توضيح هر يك از نشانه ها مى بردازيم. ‎2 3 ‎ ‎

صفحه 43:
نشانه ها OF flow Flag Goes Zero Flag ZE ‏نشانه صفر‎ * CFFlag Carry ‏نشانه نقلی‎ S&S @ 8 8 Gs © 06 06 0© 06 0 93 AF 2 | 5 1۳| ‏اد‎ ۶ تحت تا 0 0 نف

صفحه 44:
06 06 نشانه کمکی نشانه توازن نشانه علامت ات تحت تا 8ه نشانه ها 7 | ‎PFFlag Parity‏ ۱ S&S @ 8 8 Gs © 0 ‏كم‎ ZF | SF| TF | IF 0 0 نف

صفحه 45:
نشانه ها DFFlag Direct ‏نشانه جهت‎ ۴ Flag Trap ۱3 ‏نشانه دام‎ IF Flag Interrupt ‏نشانه وقنه‎ * oaeo@f607 068 ۱ ao ‏نف‎ a ‏كم‎ ZF | SF| TF | IF a Eo 0

صفحه 46:
سختافنزا ر06]: دستكاءهاى ورودى/خ روجى Ba ‏م‎ ‎00 pe Perce C1 See | eee

صفحه 47:
نر‌افرا رگ ‎Store eel a ie eae SSN a oe ee ee el‏ مي‌شود. دليل لزوم سفارش سيستم عامل اينس تكه: سيستمعامل اريك عده روالهاى نرإفنرارى استفاده م يكن دكه به طور_دائمى دوى تراشدهاى 0111 8/ ذخيررء موشوند واين روالها ازيك سيستم به | 7

صفحه 48:
| 1۱ a eee Lek ene ee eS yO 7 lor ee a eae) pede I a Ler oy Ons) است. ال ا م ا ل ل 0 9 خطبی نامیده می‌شود.

صفحه 49:
ا ا ا براى قالببندى و جاب مستندات ارائه مودهند.

صفحه 50:
موتوانيم برا ىآماده ساختن يك فاب لكد منيع زبان اسمبلى ازيك واثميررداز استفاد هکنیم؛ ولی یک واژء‌پردا 0 كدهاى اسكى متن مورد نظ در داخل يك فايل ذخيرر هكند. جنين اطلاعات ‎aa BY Spel Laan beeen ed‏ ل 00 ۱[

صفحه 51:
Puy st NSO Te Pe Fad OB a) مترجم یک زبان برنامه‌ای اس تک هکد یک منبع را به فرمی تبدیل می‌کن که مي‌تواند را مترجم‌ها را مي‌توان به س هگروه تفسیم نمود: ره 210 (AT

صفحه 52:
يك ببرنامه منبع را به طبور مستقيم ترجمه م ىكنند. يك مفس ببراى اجراى يك بررنامهء يك خط از بررنامه منيع را كررفته ودستورالعمزهاى واقع در خط مززبور را اجرا می‌کند. ۱ ple do Voaae Higdige pani AS golecab,» ‏ب هكمك يك مفس_تغيير واجرراى يك برنامه به مسرعت صورت م ىكيررد.‎ '

صفحه 53:
ead ی ککامپایلسری ککد منبیع را گرفته وکد هد فآسن را که ممولا متشکل از دستورالعملهايى موباش دكه به وسيله لا”1) مورد نظر ارا موشوندء تشكيل مودهد. كد هدف توليد شده به وسيله يككامبايل بايستى غالباً بيوند 117/6 )دادء شده ويابا ‎Oe‏ 000 1 01111111 ۱

صفحه 54:
Face Por errs SEO mes Sk aed Pepe a ee ie ie ees ‏می‌کند.‎ 1

صفحه 55:
اس

صفحه 56:
03 فهرست مطالب فصل سوم ‎del Fe‏ ۱ نامگذاری فیلدها كد متبع متغيرها در اسمبلى

صفحه 57:
[9 Fe هر دستور زبان اسمبلی در روییک خط فلیل کد منبع وارد میشودبیک ‎ped Renu pee eg‏ ۱ وجود خطوط خالی مجاز است و استفاده از آنها برای جدا کردن بخش های 1

صفحه 58:
0 000 Fe استفاده از توضيحات مناسب در برنامه مهم است. هر توضيحى با كركتر : ‎oe ee eet ped‏ ا 1

صفحه 59:
زبان اسمبلی داراى سه نوع دستورالعمل مى باشد: ADD AX, 244 wile Joslygiwo * 1246315 ‏دستور اسمبلى مانند‎ " eal نوعی دستورالعمل است که در آن تعدادی دستورالعملپا: دستورات اسمبلی یا حتی ماکروهای دیگر قرار گرفته اند.

صفحه 60:
زبان اسمبلى داراى سه نوع دستورالعمل مى باشد: * دستورالعمل: به وسیله اسمبلر به کد هدف ترجمه می‌گردد و لین کدها هستند که در زمان اجراه جرا می‌گردند. 0 ‏ل ا ا ل ا‎ Oe Orr bY Co ad ‏هدف ندارد.‎ ۳۳ ap ‏ل ا ا ا ا لت‎ Ens COR SET SC Dad Reem nie Sry

صفحه 61:
شكل كلى دستورات اسمبلى * یک دستورالعمل می‌تواند شامل عناصر زیر باشد: توضیحات‌عملوند(ها) ‎Seed‏ ات [name]mnemonic [operands)][comment;] ور ‎kes‏ موتؤان آدرس دستورالعملى را به صورت تمادى بعد ار اسميل و ليك اشدن برنامه با يك يرجسب تشان داذ. دستورالعملهاى ديكريه راحتى مىتوانند يه دستورالعمل مزبور رجوع 55 5 رح

صفحه 62:
شكل كلى دستورات اسمبلى مثال: ‎L1 :MOV AX,BX ; AX:=BX‏ L2 :INC AX L3: NOP 0 OEY] ges] BN EVER BLD

صفحه 63:
شكل كلى دستورات اسمبلى Bree eee SBE PN oe pent nee nec eter Ste TEN Ca rer 0 ee ran eal Pa rvs oar Popp Os ea Os eee دستورالعمل‌های دیگر پیاده‌سازی کرد. ۱ 558 1۱ Fo oe Oe Bee ee BRT Seen CTO TPIS es port RORY eae on ROVV On Bench a)

صفحه 64:
0 Real eed Cg ecd Re Pe e Be Bom OR 75 ۱- اسم نمی تواند با یک رقم شروع شود مانند :211311 ‎g‏ ا ‎foe Te‏ ل ا لاد pees ‏ل‎ on eRe Cornea g LABEL. as مه

صفحه 65:
شكل كلى دستورات اسمبلى هس2۳ گذاشته می‌شود که در برنامه منبع حالت دیگری خواسته شده باشد. ۱ 1

صفحه 66:
وت کل برنامه از چهار قسمت تشکیل شده است. هر قسمت با دستور ]52621۷ شروع و با ۳0 oii) Cpt ame ert SEGMENT ‏معصهد _ نموه‎ ENDS ۱ ‏را‎ oS ORY HON Uppesen Mp rome ree ROT ee ON Diep esa) cerns 5 2 35 رح

صفحه 67:
0000 drys Semper nn ee = END ‏تین‎ 1 ROW ‏ا ا‎ ICR) رح

صفحه 68:
1 Foe IN es PCOM Ron PPT ear ‏ا‎ ER TOTP Pree ‏ا‎ pean pe eg Or ken eC Rey ‏سکمنت مزبور شروع می‌نماید.‎ 35

صفحه 69:
وت EET RT ee ere ego = ASSUME CS:Code,DS:data اين دستور به اسمبلر مىكويد در صورتيكه يك دستورالعمل از يك برجسب كه در داخل سكمنت كد قرار دارد استفاده بكند آدرس واقعى عملوند مزبور بليدبه وسيله حاصلجمع ‎roe oer‏ 00000000

صفحه 70:
اكد منبع سيستمعامل وظيفه مقداردهى اوليه ثبات سكمنت كد رابه واسطه عملوند موجود در ‎50D Bpeoey‏ ا م1000 ۱ 01000 ‏ا ا‎ ET IPE O است كه اين آدرس به وسيله 1905 براى برنامه تعيين مى شود.

صفحه 71:
: ‏ها عبارتند از‎ SEGMENT SEGMENT SEGMENT SEGMENT SEGMENT STACK ۱۳۰9۹ EXTRA CODE

صفحه 72:
5 3 9 is Laie STACK _SEG SEGMENT PARA STACK ‘STACK’ ‏رازه بش‎ STACK _SEG ENDS, EXTRA _SEG SEGMENT PARA ‘EXTRA’ ‏متغیرهای رشته ها‎ EXTRA _ SEG ‏ول‎ ‎‘Gus cise St END START

صفحه 73:
متغیرها دراسمبلی: ‎eres An Ore epee ene pe‏ ا ا ‎Peper‏ ‏اسمبلی عبار تند از: 8 ۳ ۷ بسولی‌تسعریفدو بسلیت 9 بيلوتعريفجهار بليت و50 بولی‌تسعریفهه بسلیت مثال: ‎X DB 35h‏ ‎eNO E CO cree Ae er cd besa Te seece dered‏ ‎Y DW 569Fh‏ ‎eon ere Grn peere erp‏ الك رح

صفحه 74:
" عملوندهاى دستورات 10135 و 121/7 ا ا ا ل ا م ا ا ل عدد بدون علامت صفر تا ۲۵۵ می‌تواند دریک بایت ذخیره شود. * در مورد دستور 12۷۷ محدوده مجاز برای عملوندی از ۶۵۵۳۵-ا ۶۵۵۳۸۵ می‌باشد. اعداد 000 0

صفحه 75:
مثال : 10 , 12 , 24, 5,6 ل ال ‎ve)‏ 28

صفحه 76:
6 = Numberl DW ? ۰ ‏حوطس‎ ظ‎ ۶ ۴ هرکدام یک کلعه را در سگمنت داده ذخیره می‌کنند eT eee ‏ا‎

صفحه 77:
سل ‎TABLE DB 100 DUP (‘*’)‏ آرابه .1/11 از نوع بایت و ۱۰۰ عنصری . با مقدار اولیه ‏ لل ‎eh col cod Ror ete meat‏ ۱۳ بدون مقدار اوليه. مورد استفاده قرار بكيرد. كاربرد اين عملكرد به 19188.191/17 و ‎eee fer rear)‏ ا 000000

صفحه 78:
عملوندها و دستورالعملها 1 perce ECE OPTI RU St Ps er TOS oe cet ee Le a OMe mC RE od IS a ree Teer ee RCN Seay eee Sod ‏مقصد عملايت را تعيين مى كنند و عملوند دوم منبع عمليات.‎ ٠ ‏اول‎ مانئد: ‎MOV AX,BX‏ ‎BX 4 Js! sighs AX .Jaslgiws MOV Yb low! ygias 50‏ عملوند دوم می باشد.

صفحه 79:
مثال : MOV AL,” ‏که کرکتر * را جایگزین محتوی قبلی ثبات ,3 می شود.مقصد ثابت نمی تواند‎ ‏باشد ولی منبع می تواند بت باشد.‎ INC BX — gaigloe KF ygiwo 1/1017 43,800012 ىدنولمع ‏دستور دو‎ ‏شين‎ 0100 By or)

صفحه 80:
۳ آدرس دهی بلاواسطه ثبات مستقیم دارای مینا 05520000 داراى مبنا و انديس

صفحه 81:
ثبات غیر مستقیم 3 داراى انديس ا 00 حالتهاى مختلف آدرس دهى are 35

صفحه 82:
حالتهاى مختلف آدرس دهى ۱ درس دهی ‎Aba‏ ۱ nse es Pog Pape We IRC) Wer eee esrel Rene Reet On Cane eon Secs) ‏مثال:‎ ‎MOV AX,8765h MOV BL,5Fh 5 رح

صفحه 83:
حالتهاى مختلف آدرس دهى ۲- آدرس دهی ثبات این حالت آدرس دهی داده در ثباتی قرار می گیرد که بوسیله دستورالعمل مشخص می شود ثبات می تواند. هشت بیتی با شانزده بیتی باشد. مثال: ‎MOV AX,BX‏ ‎MOV BL,CL‏ cy 5 رح

صفحه 84:
حالتهاى مختلف آدرس دهى 7 آدرس ذهى مستقيم Pee come Yr Fe Pe CS CSE SPP rs on ac CS SPO fe eo Oe ere ۱ ear com ca coe egy IN CIN) ey Prey Cpe مثال: ‎MOV AX,TABLE‏ ‎MOV BL,TABLE‏ 3 5 رح

صفحه 85:
حالتهاى مختلف آدرس دهى ‎NOR‏ 2 ات اين حالت آدرس دهى أدرس در يكى لز ثباتهاى 81,51 يا 101 قرار مى كيرد ‎a‏ MOV AX,[BX] MOV BL,[DI] 2 32

صفحه 86:
حالتهاى مختلف ادرس دهى ۵- آدرس دهی مبنا یا اندیس اين حالت آدرس دهى أدرس در يكى لز ثباتهاى 836,51 يا 101,817 قرار مى كيرد در اين روش يك

صفحه 87:
حالتهاى مختلف ادرس دهى ه- آدرس دهى مبنا و انديس 1 ال می آید. MOV AX,[BX][DI] ین حالت آدزس دمی آدرس در یکی از

صفحه 88:
حالتهاى مختلف ادرس دهى #- آدرس دهى مبنا و انديس با جابجايى م ل 0 انديس استفاده مى شود در اين روش آدرس. از مجموع مبنا و انديس با جابجايى بدست مى آيد.

صفحه 89:
حالتهای مختلف آدرس دهی | و ‎Ow bx, bc OOF‏ کر ۱ و يك عملوند ثبات غي_مستقيم, از داده حافظه استفاده مىكند.

صفحه 90:
Fel Ce) POT IE CaP I IE ere SIO CL ge 1. ‏خروجی)ایجاد می‌کند.‎ 1 MET TO aE CN

صفحه 91:
ار ماكرروى كدج فتط ب روى ناحيه مقصد و ثبات 016 اثى مىكذارده هيج ثبات ديكرى از جمله ثبات نشانهها تغييس نخواهند كرد. ل ا ااا ‎cuore‏ ‏و ۱

صفحه 92:
ا 0 ‎ere eT it‏ م ااا ا 000 860 :1:01<,11,0) بسته به مقدارى كه در 0096 بكلردانده موشود به ترتيب زيس تفييس خواهند کرد: ۱ SESS) الى عدد صف باشد “1,01“ يك نواهد شد ودر حالت غير صفىء صف خواهد شد. 0 0 So arog d|y 3 rans PP

صفحه 93:
اس

صفحه 94:
فهرست مطالب فصل جهارم انتقال داده ها بين مكانهاى مختلف جمع و تفريق مكمل ‎١‏ با اعداد يزركتر

صفحه 95:
006 oe ‏ا‎ 0 ل ل ل 2 0 رومی‌دستور العمل در زبان اسمبلي براي كپي کردن داده ها از محلي به محل ديكر مورد استفاده قرار مي كيرد. ‎IO ey tbr ne‏ ا ا ل ا ل 0 ا تعويض داده هاي منبع ومقصد كاربرد دارد. ‎1 ‏ا ا ا ل‎ Te eee ‏ل

صفحه 96:
مفهوم کارایی زمان مدت زمان لازم براي اجراي يك دستورالعمل بر حسب سیکل هاي ساعت . ‎Berea ere rae ep nC He BA Bre UByrhWn Ser eue'y‏ العمل كارايي بيشتري خواهد داشت . Be ‏راف اا د ار‎ 00 as Cancer Wenn ‏امكان داده هايي كه زياد مورد استفاده قرار میگیرند را در ثبات ها قرارداد.‎

صفحه 97:
مفهوم كارايى حافظه ايجاد برنامه ي هدفي كه طول ان حداقل باشد يعني حافظه ي كمتري را اشغال ‎eee ON epee‏ 0 كارايي زمان بر حافظه ارجحیت دارد زیرا حافظه را مي توان خرید (جبران 00 بنابراين برنامه اي كه سريعتر اجرا شود بر ديكري برتر است حتي اكر از 511101001000

صفحه 98:
mov ‏دستورالعمل‎ ل الل ا ل ا اك بايت يا يك كلمه را از محل 50111506 به محل 1651111211011 كيبي مي كند PD ‏ل‎ a Tee eee were e Binh gels yea 0 eye reer een eres irre SIS pp eee esr ee come mercer rr namie

صفحه 99:
محتوى حافظه “00000 در 0106© قرار مى كيرد.

صفحه 100:
محدودیت های زبان اسمبلی که دستور 11207 را از یک ل ل ا ال ا ۱ ۱ (eed ren prea Be 2 تمام ترکیبات انواع عملوندهاي منبع و مقصد . مجاز نیستند

صفحه 101:
ا ا ل ا ا 0)- در صورتي كه 0 عن من باذ عسو يد قن كيت تسد ‎ii‏ 2- هرانتقالي به ثبات نشانه ها يا از ان ‏۶ . هر انتقالي به ثبات 1۳ ‏2. انتقال از يك ثبات سگمنت به ثبات سگمنت دیگر ‏"" © هر انتقالي كه عملوندهاي ان از يك نوع بايت يا كلمه نباشند

صفحه 102:
دستور 1100۷ وقتی که عملوندهای منبع و مقصد در 0 و ‎Cane tye‏ ا ا ‎ee SI rer‏ ۱ ۷ که از يك ثبات مياني استفاده مي کنند ۰ بهره مي گیریم . ره ا ل ل ا 0 استفاده مي كند 5 ‎ee)‏ اك م

صفحه 103:
دستور العمل 0010 به صورت «7<0011 026131011 , 026121012 نوشته مي شود . و عملي را انجام مي دهد که در زبانهاي سطح بالا با سه دستور صورت مي ‎Comey enter Bess)‏ ل ‎is oe U‏ 9 نموده به صورتي كه به سيكل زماني و حافظه كمتري نياز داشته باشد . ‎CONE PT)‏ م 0 0 در صورت استفاده از حافظه اصلي » عملوند حافظه باید عملوند دوم دستور 017 باشد . ‎MOL Dy oy‏ ا م

صفحه 104:
نکته ا ‎te ern Eee Sos ESS ES ES me‏ 0 نظر را به يك ثبات انتقال داده يس بايت بالايي يا ياييني را به مقصد مورد نظر ۳ ‎ESCA a ae aye 5 ata‏ ری کل رل به مقصد مورد نظر كپي کنیم .

صفحه 105:
۱۳ ۰۰ Wee yer) اين دستورالعمل مخفف كلمات 2010135655 15601 © 1.020 مى ‎de‏ 7 ~ میت ب لیستیی کش بانت| بسیتو ی وده و ‎gee tard‏ 1 ‎Se ee eel re eee‏ قرار موههد 2 ae

صفحه 106:
مثال : LEA BX ,X RR FS 3). Cee. ase TeeY «۲ MOV BX, OFFSET 03

صفحه 107:
‎bys‏ دروا ‎Ee Toe ee Pens‏ ‎vevinioa Gore ‏محتوی 0 با محتوی م4 جمع شده نتیجه در ‎eh a‏ رس اثر دارد.

صفحه 108:
: ‏مثال‎ ‎ADD AL,5 1 Vad Eee]

صفحه 109:
مثال : ADD X, BX ۱ +). Girne. te one] ‏محتوی 135 تفییر نمی کند.‎

صفحه 110:
نکته : Nat eel MNO ‏ا‎ ae ae eT

صفحه 111:
دستورالعمل 51013 شکل کلی آن عبارتست از : محتوی . سح از فیط کم گردید: فیط قرار داده می شود و محتوی ‎conte‏ تغییر نمی کند. . این دستورالعمل روی فلک ها اثر دارد. 2 5

صفحه 112:
و1

صفحه 113:
SUB AX,X RIP RIE: YET Tere. Cp atte

صفحه 114:
5-8 0 0 ‏ا ا 2 ا‎ BS) ‎WTB‏ ا ا لك ‎TGS‏ ‏اعمال جمع و تفريق زماني سريع ترين مي باشند كه هر دو عملوند در ثبات ها ‎SPA 0‏ 00۹ ‎Aap ee ey fal a al ‏انسلكة ترون يك حارك‎ Pa PUTER ey Petre ‏ا ا‎ . ‏مي باشند‎ ‏زماني که عملوند مقصد برابر يك کلمه است » يك عملوند منیع بلاواسطه مي تواند برابر يك بايت باشد . زيرا در زمان اجراي عمل جمع يأ تفريق به يك ‎0

صفحه 115:
لوالا ف دزا Ea on ‏شکل کلی‎ 10 PRN PROC ETY OOK (CON Fe Freon) BVOC ne scree Cees

صفحه 116:
مثال : INC X 1 nee aren 0060 ©« 00000 atic)

صفحه 117:
00 ۱ ا ل ا ا ا ‎CBE CPO‏ نشانه هاي "01) و”"51 و”"721 را تغييرميدهند ولي نشانه "01) راتغييرنمي دهند. فزايش و كاهش شمارنده ها مفيدند و ازدستورات جمع وتفريق متناظر كارامد ترند . ‎DO CoNory‏ ا 0

صفحه 118:
علت كارامد تر بودن 1326 و©1©6© نسبت به ‎sub, add‏ 0 0 دودستور1 , 7ط 23001 و 232 1220 از نظركاري معادل مي باشند اما دستور 200 به *6 سیکل زماني و 9بایت حافظه نیاز دارد در صورتي كه ‎ee Rete ESTO ere Denn omy nny‏ تك به همین ترتیب 32 ‎counter ; sub counter ,1 5s)‏ م0 از نظر كاري معادل يكديكرند ولي دستور 5115 به©© سيكل زماني و 6 بايت حافظه نياز دارد درصورتي كه دستور060 به )© سيكل زمان و*6 بايت ‎ReyeCE‏ 000

صفحه 119:
دستورالعمل 1/1503 000000 1 Brel epee oer es er

صفحه 120:
مثال : MOV AX,100 NEG AX ‏تغيير مى يابد.‎ -٠٠١١ ‏محتوى 47 به‎

صفحه 121:
دستورالعملهای ضرب اسمبلى داراى دو دستورالعمل ضرب مى باشد : ‎IMUL *‏ عملوندها را بصورت علامتدار در نظر مى كيرد. ‎MUL ®‏ عملوندها را بصورت بدون علامت در نظر می گیرد. ‎

صفحه 122:
دستورالعملهاى ضرب شکل کلی آن عبارتست از : 005 05

صفحه 123:
توضیحات : 011010000 TON CIRC Ee Exw Rupee .N ONTee FIND 0) od Wy ree nner Rem P reas L 0) od sre ited Recs rey. ©. rire se ۱ ‏ا ا‎ 0) 3s wrerites 16 , ‏ضرب شده نتیجه در ۸ : 1026 قرار می گیرد و محتوی ثبات های‎ 1 روی فلگ ها اثر دارد.

صفحه 124:
a ©, ی 4 محتوى ثبات © برابر با - 80 مى شود. 00

صفحه 125:
دستورالعمل هاى تقسيم Es Deena Pes Ye OTE Pe Oe ‎IDIV 5‏ عملوند را بصورت علامتدار در نظر مى كيرد. ‏ا ا 0 ‎0

صفحه 126:
دستورالعمل هاى تقسيم Ea on ‏شکل کلی‎

صفحه 127:
ae توضیحات : 013100000 جنانجه 0518 از نوع بايت باشد محتوى 6ل بر محتوى 001012 تقسيم شده ‎Ec rd‏ ا ا ا ‎eee‏ 0000 GPEMIUTIA | (0) 0D PEIN) 3 wrerites ۷ SoC B ‏ا اال‎ 0) 1d: ‏قرار می گیرد.‎

صفحه 128:
0 2 18 ‏عا‎ ‎MOV AX, 134 wis 4 پس از اجرای دستورالعمل های فوق محتوی .83 برابر با ۱۰ و محتوی ۵13 برابر با ۴ می باشد. رح

صفحه 129:
دستورالعمل ۰۳۰۱0 St ae ae Be eon toe ath ae een Bed Pere re rome Bye sere I eet rer ye Pe prea 0 CERC (Le) ااا

صفحه 130:
0 دستورالعمل هاى 0 ۱-۰-۳۰۱۱ ‎es‏ ال 06 - ی - لول

صفحه 131:
مثال : ADC X,BX SBB AX,Y

صفحه 132:
double word 52 c~ 5 4 Ct Ta ss Bab ap epee ere ane 0 ‏ل‎ جنانجه بخواهيم محتوى دو متغيبر را از هم كم نماييم بايستى در دستورالعملهاى فوق 0000© را به ©0800 , ©00© را به 00 MOV ۱۱(۱( MOV MOV ADC MOV

صفحه 133:
9 * دستورالعمل 010 : نشانه ي م را برابر صفر قرار مي دهد. © "01 : < " دستورالعمل 8850 : نشانه ي 012 را برابر ) قرارمي دهد. 00 " دستورالعمل 0200 : نشانه ي 04 را مكمل مي كند.

اصول اساسی برنامه نویسی به زبان اسمبلی مو لف Richard C. Detmer : مترجمین :هاشمی اصل -مشحون نام درس :زبانهای ماشین و برنامه سازی سیستم 1 فهرست مطالب ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ ‏ 2 فصل اول : فصل دوم :قسمت های یک سیستم کامپیوتری فصل سوم :استفاده از اسمبلر فصل چهارم :دستورالعملهای اساسی فصل پنجم :انشعاب و حلقه فصل ششم :روال ها فصل هفتم :عملیات رشته ها فصل هشتم :سایر حالت های آدرس دهی فصل نهم :دستکاری بیت ها فصل دهم :وقفه و ورودی /خروجی فصل یازدهم :پردازش اسمبلی فصل دوازدهم :ماکرو ها و اسمبلی شرطی فصل سیزدهم :مثال نمونه نمایش داده ها در کامپیوتر فصل اول نمایش داده ها در کامپیوتر 3 فهرست مطالب فصل اول 4 ‏ نمایش داده ها در کامپیوتر ‏ اعداد دودویی و شانزده شانزدهی ‏ کد های کارکتری ‏ نمایش مکمل 2برای اعداد صحیح عالمت دار نمایش داده ها در کامپیوتر در زبانهای سطح باال نگران اینکه داده ها در ک**امپیوتر چگونه نمایش داده میشوند نیستیم ولی در زبان های اسمبلی بایستی بفکر چگ**ونگی ذخ**یره داده باش**یم و اغلب با کار تبدیل داده ها از یک ن**وع ب**ه ن**وع دیگر مواجه می باشیم. 5 اعداد دودویی و شانزده شانزدهی حافظه های کامپیوتر فقط می تواند ارقام 0یا ی**ک را در خ**ود ذخیره نماید که به آنها بیت گفت**ه میش**ود .در سیس**تم دودوئی اعداد از بیت ها تشکیل شده اند. 6 اعداد دودویی و شانزده شانزدهی اعداد شانزدهی از ارقام 0تا 15تشکیل شده اند .ب44رای راح44تی، ارقام 10تا 15را Aتا Fنشان داده می شود. 7 مثال : سیستم دودوئی شبیه سیستم دهدهی است با این تفاوت که ارقام از سمت راست به چپ به جای ارزش ....... ، 1000 ، 100 ، 1ارزش ..... ، 8 ، 4 ، 2 ، 1 دارند .بنابرین 1011در سیستم دودوئی معادل 11می باشد. 8 مثال : سیستم دودوئی شبیه سیستم دهدهی است با این تفاوت که ارقام از سمت راست به چپ به جای ارزش ....... ، 1000 ، 100 ، 1ارزش ، 16 ، 1 ..... ، 164دارند .بنابرین 2f30در سیستم شانزدهی معادل 12080می باشد. 9 تبدیل اعداد شانزدهی به دودوئی هر رقم در سیستم شانزدهی بوسیله چهار رقم در سیستم دودوئی قابل نمایش می باشد. در اسالید بعد مثالی آورده شده است. 10 مثال : 0100  ‏ 1110 معادل معادل 4 ‏E .برای تبدیل اعداد شانزدهی به دودوئی کافی است که به جای هر رقم ،چهار بیت معادل آن قرار داد در اسالید بعد مثالی آورده شده است. 11 مثال : .برای تبدیل اعداد شانزدهی به دودوئی کافی است که به جای هر رقم ،چهار بیت معادل آن قرار داد 2AD5معادل 0010101011010101در سیستم دودوئی می باشد. 12 تبدیل اعداد دودوئی به شانزدهی برای تبدیل اعداد دودوئی به شانزدهی ،ارقام عدد داده شده را از سمت راست به ترتیب به صورت گروههای چهار بیتی درآورده آنگاه معادل هر گروه در سیستم شانزدهی را جایگزین می نماییم. در اسالید بعد مثالی آورده شده است. 13 مثال : عدد 1010011101در سیستم دودوئی در نظر بگیرید. 0010 2 14 1001 9 1101 ‏D کدهای کرکتری در کامپیوتر به حروف ،ارقام ،عالمت ها کرکتر گفته می شود .ب ه هر کرکتر یک کد هشت بیتی منحص ر ب ه ف رد وابس ته می ش ود ک ه آنرا کد ASCIIمی نا مند. 15 کرکترهای قابل چاپ 16 کرکتر کد اسکی تا 9 0 تا 57 48 Aتا Z تا 90 65 aتا z تا 122 97 نکته : 17 ‏ کرکترهای قابل چاپ دارای کدهای 32تا 126می باشند. ‏ کرکترهای کنترلی دارای کدهای 0تا 31می باشند. کرکترهای کنترلی 18 کرکتر کد اسکی ‏ESC ‏CR ‏LF 27 10 13 نمایش مکمل 2برای اعداد صحیح عالمتدار اعداد منفی در کامپیوتر بصورت مکمل 2نمایش داده می شوند .وقتی ی**ک عدد به شکل مکمل دو نشان داده می شود تعداد بیت های م**ورد اس**تفاده باید از قبل مشخص گردد. 19 نمایش مکمل 2برای اعداد صحیح عالمتدار اعداد دودویی دارای طول معین هستند: بایت کلمه :محدوده مجاز 32768- کلمه مضاعف کلمه چهارتایی 20 32767 روش محاسبه مکمل 2یک عدد : ‏ عدد را بصورت دودوئی درآورده. ‏ آنرا به تعداد بیت های مشخص شده تبدیل نموده . ‏ سپس صفر ها را 1و 1ها را به صفر تبدیل نموده . ‏ نتیجه را با یک جمع می نماییم. در اسالید بعد مثالی آورده شده است. 21 مثال : ‏ 11001معادل 26 ‏ هشت بیتی نموده ‏ صفرها را به یک و یک ها را به صفر تبدیل نموده 11100110 ‏ نتیجه را با یک جمع نموده 00011001 11100111 مقدار 11100111در سیستم دودوئی نمایش عدد 26-می باشد. 22 جمع و تفریق اعداد مکمل دو ‏ پاسخ صحیح 0A07 01D3+ -------------0BDA 23 2567 467+ -------------3034 جمع و تفریق اعداد مکمل دو ‏ اگر از 1اضافی سمت چپ صرفنظر شود :پاسخ صحیح 0206 ‏FFB0+ -------------101B6 24 518 )80-(+ -------------438 جمع و تفریق اعداد مکمل دو ‏ پاسخ غلط :سرریز 483F 645A+ -------------AC99 25 18459 25690+ -------------44185 تشخیص سرریز در جمع 26 سرریز رقم نقلی از بیت عالمت رقم نقلی به بیت عالمت نه نه نه بله بله نه بله نه بله نه بله بله تفریق در شکل مکمل دو 27 ‏ در کامپیوتر A-Bبوسیله جمع Aبا مکمل دو Bانجام میشود. ‏ اگر در جمع معادل نقلی وجود نداشته باشد ،در تفریق رقم عاریه وجود دارد. ‏ اگر در جمع معادل سرریز وجود داشته باشد ،در تفریق هم سرریز رخ داده است. سیستمهای دیگر برای نمایش اعداد 28 ‏ مکمل یک :هر بیت مکمل میشود ‏ دهدهی دودویی شده ( : )BCDهر رقم بصورت دودویی در چهار بیت نمایش داده (DEC = (1001 0010)BCD)92 میشود ‏ ممیز شناور ممیز شناور ‏ ‏ ‏ ‏ 29 بیت سمت چپ در اعدادمثبت صفر و در اعداد منفی یک است. عدد را بصورت بدون عالمت در سیستم دودویی بنویسید. عدد را بشکل نماد علمی بنویسید .به توان عدد ثابت 127را اضافه کنید. مانتیس را (بدون یک قبل از اعشار) در 23بیت و با اضافه کردن صفرهایی به سمت راست آن بنویسید. مثال ممیز شناور (2)1001110.011 ( = 10)78.375 نمادعلمی6^2 * 1.001110011 = 2)1001110.011 ( : ممیز شناور(باینری)10000101 0 : 00111001100000000000000 ممیز شناور( هگز) 9C C0 00 42 : 30 فهرست مطالب فصل دوم 31 ‏ حافظه اصلی ‏ واحد پردازش مرکزی ‏ اسامی و اهداف ثبات ها فصل دوم قسمت های یک سیستم کامپیوتری 32 حافظه اصلی حافظه اصلی یک PCرا می توان بصورت مجموعه ای از سگمنت ها در نظر گرفت .هر س44گمنت بط44ول 64 کیلو بایت می باشد. 33 نکات : ‏ آدرس شروع هر سگمنت مضرب 16می باشد. ‏ آدرس شروع هر سگمنت در مبنای 16به رقم صفر ختم می شود . ‏ 34 آدرس هر سگمنت برابر اولین چهار رقم شانزدهی آدرس آن می باشد. نکته : آدرس هر بایت از حافظه اصلی را می توان با سگمنت حاوی بایت مزبور و به دنبال آن افستی که از ابتدای سگمنت یاد شده در نظر گرفته می شود ،آدرس دهی کرد. آدرس شروع سگمنت افست بایت مورد نظر 35 مثال : نماد 18A3 : 5B27به بایتی که 5B27بایت از اول سگمنت که از آدرس 18A30شروع می شود ،قرار دارد ،اشاره می کند. 18A30 + 5B27 = 1E557 36 واحد پردازش مرکزی () CPU تراشه 8088دارای 14ثبات می باشد که هر کدام یک محل ذخیره سازی داخلی بوده و می تواند یک کلمه 16بیتی را نگه دارد .دستورالعمل ها معموال داده ها را بین این ثبات ها یا حافظه اصلی انتقال داده و یا عملیاتی را روی داده های ذخیره شده در ثبات ها یا حافظه انجام می دهند .تمام این ثبات ها دارای نام بوده و بسیاری از آنها دارای اهداف ویژه ای هستند. 37 اسامی و اهداف ثبات ها 38 ‏ AXاکوموالتور ،کاربرد همگانی ،بایت باالیی برابر AHو بایت پایینی برابر AL ‏ BXکاربرد همگانی ،بایت باالیی برابر BHو بایت پایینی برابر BL ‏ CXکاربرد همگانی ،بایت باالیی برابر CHو بایت پایینی برابر CL اسامی و اهداف ثبات ها 39 ‏ DXکاربرد همگانی ،بایت باالیی برابر DHو بایت پایینی برابر DL ‏ CSشماره سگمنت حافظه ای می باشد که دستورالعمل های اجرائی جاری در آنجا قرار دارد. ‏ DSسگمنت داده ها را می دهد. ‏ ESسگمنت فوق العاده را می دهد. اسامی و اهداف ثبات ها 40 ‏ SSسگمنت پشته را می دهد. ‏ SPاشاره گر پشته ،افست باالی پشته در سگمنت پشته. ‏ BPاشاره گر مبنا ،افست نقطه مراجعه ( ) Point referenceدر سگمنت پشته. اسامی و اهداف ثبات ها 41 ‏ SIاندیس منبع ،افست رشته کاراکتری منبع در انتقال رشته های کاراکتری. ‏ DIاندیس مقصد :افست رشته کاراکتری مقصد. ‏ IPاشاره گر دستور العمل ها ،آفست دستور العمل بعدی در سگمنت کد برای دستیابی ثبات نشانه ها مجموعه ای از نشانه ها یا بیت های وضعیت. ثبات نشانه بعضی از 16بیت این ثبات برای نشان دادن نتیجه اجرای دستور العملها بوس**یله دس**تور العمل های مختلف تغییر پیدا می کنند .هر کدام از این بیت ها را یک بیت وضعیت یا نش**انه می گویند .اسامی برخی از این بیت ها عبارتند از : 1 5 1 4 1 3 1 2 11 1 0 9 8 7 6 5 ‏Z S T ‏D O ‏IF ‏F F F ‏F F در اسالید های بعد به توضیح هر یک از نشانه ها می پردازیم. 42 4 ‏A 3 ‏F 2 ‏P 1 ‏F 0 ‏C ‏F نشانه ها OF flow Flag Zero Flag نشانه سرریزی  نشانه صفر  نشانه نقلی  12 14 ZF CFFlag Carry 0 CF 1 2 PF 3 4 AF 5 6 7 8 9 10 11 ZF SF TF IF D F O F 13 15 43 نشانه ها 0 CF 1 2 PF 3 4 AF AF Flag Auxiliary نشانه کمکی  PF Flag Parity نشانه توازن  SF Flag Sign نشانه عالمت  5 6 7 8 9 10 11 ZF SF TF IF D F O F 12 13 14 15 44 نشانه ها DFFlag Direct Flag Trap IF 0 CF 1 2 PF 3 4 AF TF Flag Interrupt 5 6 7 8 9 10 11 ZF SF TF IF D F O F نشانه جهت  نشانه دام  نشانه وقفه  12 14 13 15 45 سخت‌افزار :PCدستگاه‌هاي ورودي/خروجي يک دستگاه ورودي/خروجي معموًالاز سه تا هشت درگاه استفاده مي‌کند .اين آدرس‌ها از آدرس‌هاي حافظه معمولي متمايز مي‌‌باشند. نرم‌افزار :PC نرم افزار به برنامه‌ها يا روال‌هايي که بوسيله سخت افزار اجرا مي‌‌شوند ،اطالق مي‌‌شود. دليل لزوم سفارش سيستم‌عامل اينست که: سيستم‌عامل از يک عده روال‌هاي نرم‌افزاري استفاده مي‌کند کGGه بGGه طGGور دائمي روي تراشه‌هاي ROMذخGGيره مي‌شGGوند و اين روال‌ها از يGGک سيسGGتم بGGه سيسGGتم ديگر تغيير مي‌کنند. نرم‌افزار :PCويرايشگرهاي متن يک ويرايشGGگر متن ،برنGGامه‌اي اسGGت کGGه مي‌تGGوان بGGه وسGGيله آن فايل‌هاي متGGني را روي ديسک ذخيره کرده يا آنها را تغيير داد .يGGک فايGGل متGGني مجمGGوعه‌اي از کGGدهاي اسGGکي است. ويرايشگر EDLINبا توجه به اينکه يGGک فايGGل متGGني را بGGه صGGورت مجمGGوعه‌اي از خطوط در نظر مي‌گيرد ،يک ويرايشگر خطي ناميده مي‌شود. واژه‌پردازها ،ويرايشگرهاي متني مي‌باشند کGGه سرويس‌هاي اضGGافي براي قالب‌بندي و چاپ مستندات ارائه مي‌دهند. مي‌توانيم براي آماده ساختن يک فايل کد منبع زبان اسGGمبلي از يGGک واژه‌پGGرداز استفاده کنيم ،ولي يGGک واژه‌پGGرداز مي‌توانGGد اطالعات قالب‌بنGGدي را بGGه همراه کدهاي اسکي متن مورد نظر در داخل يGGک فايGGل ذخGGيره کنGGد .چGGنين اطالعات اضافي ممکن اسGGت فايGGل مزبGGور را بGGه عنGGوان يGGک فايGGل کGGد منبGGع زبان اسGGمبلي غيرقابل استفاده گرداند. نرم‌افزار :PCمترجم يک زبان و پيونددهنده برنامه مترجم يک زبان برنامه‌اي است کGGه کGGد يGGک منبGGع را بGGه فرمي تبGGديل مي‌کنGGد کGGه مي‌توانGGد توسط کامپيوتر اجرا شود. مترجم‌ها را مي‌توان به سه گروه تقسيم نمود: مفسرها کامپايلرها اسمبلرها مفسرها: يک برنامه منبع را به طور مستقيم ترجمه مي‌کنند .يک مفسر براي اجراي يGGک برنامه ،يک خط از برنامه منبع را گرفته و دستورالعمل‌هاي واقGGع در خGGط مزبGGور را اجرا مي‌کند. برنامه‌هايي که تفسير مي‌شوند معموًالبه طور نسبي کند اجرا مي‌شوند. به کمک يک مفسر تغيير و اجراي يک برنامه به سرعت صورت مي‌گيرد. کامپايلر: ‏ يGGGک کامپايلر يGGGک کGGGد منبGGGع را گرفتGGGه و کGGGد هGGGدف آن را کGGGه معمGGGوًالمتشGGGکل از ‏ کد هدف توليد شده به وسيله يک کامپايلر بايستي غالبًاپيوند ( )linkداده شده و يا با ‏ برنامه‌هاي کامپايل شده خيلي سريعتر از برنامه‌هاي تفسير شده اجرا مي‌شوند دستورالعمل‌هايي مي‌باشد که به وسيله CPUمورد نظر اجرا مي‌شوند ،تشکيل مي‌دهد. کدهاي هدف ديگر ترکيب شود تا بتوان آن را به داخل حافظه اصلي بار کرده و اجرا نمود. اسمبلر: ‏ يک اسمبلر خيلي شبيه کامپايلر مي‌باشد اما زبان اسمبلي را به زبان ماشين ترجمه ‏ غالبًابراي اجراي فايل‌هاي نتيجه ،بايستي آنها را پيوند داد. مي‌کند. فصل سوم برنامه نویسی اسمبلر 55 فهرست مطالب فصل سوم 56 ‏ برنامه ها و شکل کلی دستورات اسمبلی ‏ نامگذاری فیلدها ‏ کد منبع ‏ متغیرها در اسمبلی ‏ عملوند دستورالعملها ‏ حالتهای آدرس دهی دستورالعملهای زبان اسمبلی هر دستور زبان اسمبلی در روی یک خط فایل کد منبع وارد میش**ود.یک خط می تواند حد اکثر 128کرکتر داشته باشد. وجود خطوط خالي مجاز است و استفاده از آنها ب**راي ج**دا کردن بخش هاي مختلف کد برنامه مفيد است. 57 دستورالعملهای زبان اسمبلی استفاده از توضیحات مناسب در برنامه مهم است .هر توضیحی با کرکتر ; شروع میشود و تا انتهای خط می تواند ادامه داشته باشد. 58 زبان اسمبلی دارای سه نوع دستورالعمل می باشد : مانند ‏ دستورالعمل ‏ دستور اسمبلی مانند ‏ ماکرو ‏AX , 244 ‏ADD ‏PAGE نوعی دستورالعمل است که در آن تعدادی دستورالعملها ،دستورات اسمبلی یا حتی ماکروهای دیگر قرار گرفته اند. 59 زبان اسمبلی دارای سه نوع دستورالعمل می باشد : ‏ دستورالعمل :به وسيله اسمبلر به کد هدف ترجمه مي‌گردد و اين کدها هستند که در زمان اجرا ،اجرا مي‌گردند. ‏ دستور اسمبلر :به اسمبلر مي‌گويد که عملي را انجام دهد .و اغلب هيچ اثري ب@@ر روي ک@@د هدف ندارد. ‏ ماکرو :نوعي دستورالعمل است که در آن تعدادي دستورالعمل‌ها ،دستورات اسمبلر يا ح@@تي ماکروهاي ديگر قرار گرفته‌اند. 60 شکل کلی دستورات اسمبلی ‏ يک دستورالعمل مي‌تواند شامل عناصر زير باشد: توضيحاتعملوند(ها) نام دستورالعملاسم یل برچسب [;[name]mnemonic ]operand(s)[]comment ‏ يک کاربرد فيلم اسم آن است که مي‌توان آدرس دستورالعملي را به صورت نمادي بعد از اسمبل و لينک شدن برنامه با يک برچسب نشان داد .دستورالعمل‌هاي ديگر به راحتي مي‌توانند به دستورالعمل مزبور رجوع کنند. 61 شکل کلی دستورات اسمبلی مثال: ‏L1 :MOV AX,BX ; AX:=BX ‏L2 :INC AX ‏L3: NOP اگر دستور اسمبلر باشد نیازی به :نیست 62 شکل کلی دستورات اسمبلی ‏ دستورالعمل‌هاي داراي برچسب مي‌توانند مقصد يک دستورالعمل پرش در زبان اسمبلي باشند. ‏ ساختار حلقه‌ در زبان اسمبلي وجود ن***دارد ،اما مي‌ت***وان حلقه‌ها را با اس***تفاده از jmpو يا ‏ برچسب نمي‌تواند به وسيله عدد شروع شود .و اگر نقطه استفاده شود ،حتمًا بايد اولين ک**اراکتر ‏ بغيراز اعداد و نقطه ،کاراکترهاي ديگر مي‌توانند در هر موقعيتي استفاده شوند. ‏ فقط 31کاراکتر اول اسم مورد استفاده قرار خواهد گرفت. دستورالعمل‌هاي ديگر پياده‌سازي کرد. باشد. 63 قانونگذاری نامها در اسمبلی نامها در اسمبلی حداکثر 31کاراکتر می باشند در استفاده از نامها در اسمبلی نکات زیر را می بایست در نظر داشت: -1اسم نمی تواند با یک رقم شروع شود مانند 2LABEL -2اسم نباید یکی از کلمات ذخیره شده اسمبلی باشد مانند MOV -3در صورتیکه از نقطه در نام استفاده می شود می بایست در ابتدای نام استفاده شود مانند LABEL. 64 شکل کلی دستورات اسمبلی ‏ مقادير عددي در دستورات زبان اسمبلي ،دهدهي فرض مي‌شوند و فق***ط زماني اين فرض کن***ار ‏ يک مقدار شانزده شانزدهي بايد با يک عدد بغير از اعداد شانزده‌ش**انزدهي « »aت**ا « ،»fشروع گذاشته مي‌شود که در برنامه منبع حالت ديگري خواسته شده باشد. شود تا اسمبلر بتواند آنها را از يک اسم تشخيص دهد. 65 کد منبع کل برنامه از چهار قسمت تشکیل شده است .هر قسمت با دستور SEGMENTشروع و با ENDSختم می گردد. . ‏ENDS ‏SEGMENT ‏Segment _ name ‏Segment _ name . . دستور ENDSهيچ وقت داراي عملوند نيست؛ ولي دستور SEGMENTدر بعضي کاربردها با عملوند به کار مي‌رود. 66 کد منبع ‏ آخرين دستور برنامه ،دستور اسمبلر زير است: ‏ دستور ENDبه اسمبلر مي‌گويد که پردازش دستورات کد منبع را خاتمه دهد. ‏ در يک برنامه منبع فقط يک دستور ENDوجود دارد و آن آخرين دستور است. ‏start 67 ‏END ‏ کد منبع ‏ عملوند startمشخص کننده اولين دستور برنامه است که بايد اجرا شود .زماني که برنامه بار مي‌شود ،سيستم‌عامل ثبات سگمنت کد را با سگمنتي که حاوي اين دستورالعمل اس**ت مقداردهي کرده و ثبات اشاره‌گر دستورالعمل‌ها IP ،را با آفست اين دستورالعمل از ابتداي سگمنت مزبور شروع مي‌نمايد. 68 کد منبع ‏ سگمنت کد با دستور اسمبلر زير شروع مي‌شود: ‏ASSUME CS:Code,DS:data ‏ اين دستور به اسمبلر مي‌گويد در صورتيکه يک دس**تورالعمل از يک برچسب ک**ه در داخ**ل سگمنت کد قرار دارد استفاده بکند آدرس واقعي عملوند مزبور بايد به وس**يله حاص**لجمع ثبات سگمنت CSو آفست برچسب از ابتداي سگمنت کد محاسبه شود. 69 کد منبع ‏ سيستم‌عامل وظيفه مقداردهي اوليه ثبات سگمنت کد را ب**ه واس**طه عملون**د موج**ود در دستور ENDبه عهده دارد ولي سيستم‌عامل همين کار را براي ثبات س**گمنت داده DS انجام نمي‌دهد .اينکار را بايد برنامه‌نويس انجام دهد. ‏ شماره واقعي سگمنت داده تا زماني که برنامه بار نشده باشد قابل تعيين نيست ،در آن زمان است که اين آدرس به وسيله DOSبراي برنامه تعيين مي‌شود. 70 : ها عبارتند ازSEGMENT STACK SEGMENT  DATA SEGMENT  EXTRA SEGMENT  CODE SEGMENT  71 START STACK _ SEG STACK _ SEG DATA _ SEG شکل کلی برنامه SEGMENT PARA ENDS SEGMENT PARA DATA _ SEG ENDS EXTRA _ SEG SEGMENT PARA STACK ‘STACK’ ‘DATA’ ‘EXTRA’ EXTRA _ SEG ENDS CODE _ SEG SEGMENT PARA ‘CODE’ CODE _ SEG ENDS END START اندازه پشته. متغیر ها متغیرهای رشته ها دستورالعمل های برنامه 72 متغیرها دراسمبلی: تعریف متغیر در اسمبلی شامل نوع داده نام داده و اندازه داده می باشد دستورات تعریف متغیر در اسمبلی عبارتند از: DBبرای تعریف یک بایت DWبرای تعریف دو بایت DDبرای تعریف چهار بایت DQبرای تعریف هشت بایت DTبرای تعریف ده بایت مثال: ‏X DB 35h تعریف متغیری با نام Xبا مقدار اولیه 35هگزا دسیمال به طول یک بایت ‏Y DW 569Fh تعریف متغیری با نام Yبه طول دو بایت با مقدار اولیه 569Fh 73  عملوندهاي دستورات DBو DW ‏ يک عملوند عددي براي دستور DBمي‌تواند در محدوده دهدهي -255تا 255باش**د .يک ‏ در مورد دستور ،DWمحدوده مجاز براي عملوندي از -65535تا 65535مي‌باشد .اع**داد عدد بدون عالمت صفر تا 255مي‌تواند دريک بايت ذخيره شود. بدون عالمت صفر تا 65535در يک کلمه جاي مي‌گيرند. 74 مثال : 10 , 12 , 24 , 5 , 16 Xیک آرایه پنج عنصری از نوع بایت می باشد. 75 ‏DB ‏X مثال : ‏ ‏ 76 ? ‏DW ‏Number1 ‏ ? ‏DW ‏Number2 ‏ هرکدام يک کلمه را در سگمنت داده ذخيره مي‌کنند. عالمت سؤال به اسمبلر مي‌گويد که هيچ مقدار اوليه‌اي به اين دو کلمه نسبت داده نشود. مثال : )’*‘( DUP 100 ‏DB ‏TABLE آرایه TABLEاز نوع بایت و 100عنصری ،با مقدار اولیه * عملگر DUPمي‌تواند براي توليد چندين بايت يا کلمه با مقادير اوليه معين و يا بدون مقدار اوليه ،مورد استفاده قرار بگيرد .کاربرد اين عملگرد به DB، DWو دستورات اسمبلر ديگري که فضا را ذخيره مي‌کنند محدود مي‌شود. 77 عملوندها و دستورالعملها عملوندها دارای انواع مختل**ف می باشند.بعض**ی ث**ابت ب**وده ،بعض**ی مشخص کننده ثباتهای CPUو برخی به حافظه رج**وع می نماین**د. بسیاری از دستورالعملها دارای دو عملوند می باشند.بطور کلی عملون**د اول ،مقصد عمالیت را تعیین می کنند و عملوند دوم منبع عملیات. مانند: ‏MOV AX,BX در دس**تور اس**مبلی باال MOVدس**تورلعمل AX ،عملون**د اول و BX عملوند دوم می باشد. 78 مثال : ’*‘ MOV AL , که کرکتر * را جایگزین محتوی قبلی ثبات ALمی شود.مقصد ثابت نمی تواند باشد ولی منبع می تواند ثابت باشد. ‏INC BX دستور تک عملوندی ‏MOV AX,8000h دستور دو عملوندی ‏STC دستور بدون عملوند 79 حالت های آدرس دهی 80 ‏ بالواسطه ‏ ثبات ‏ مستقیم ‏ دارای مبنا ‏ دارای اندیس ‏ دارای مبنا و اندیس حالتهای مختلف آدرس دهی بالواسطه ثبات حافظه مستقیم غیر مستقیم ثبات غیر مستقیم دارای مبنا دارای اندیس دارای مبنا و اندیس 81 حالتهای مختلف آدرس دهی -1آدرس دهی بال واسطه این حالت آدرس دهی می تواند طول 8بیتی یا شانزده بیتی داشته باشد در این نوع آدرس دهی عملوند دوم یک عدد ثابت می باشد مثال: ‏MOV AX,8765h ‏MOV BL,5Fh 82 حالتهای مختلف آدرس دهی -2آدرس دهی ثبات این حالت آدرس دهی داده در ثباتی قرار می گیرد که بوسیله دستورالعمل مشخص می شود ثبات می تواند هشت بیتی یا شانزده بیتی باشد. مثال: ‏MOV AX,BX ‏MOV BL,CL 83 حالتهای مختلف آدرس دهی -3آدرس دهی مستقیم این حالت آدرس دهی آدرس داده که طول شانزده بیتی دارد جزئی از دستورالعمل می باشد بسته به طول ثباتی که در عملوند اول قرار دارد یک بایت یا یک کلمه به ثبات منتقل می شود مثال: ‏MOV AX,TABLE ‏MOV BL,TABLE 84 حالتهای مختلف آدرس دهی -4آدرس دهی غیر مستقیم ثبات این حالت آدرس دهی آدرس در یکی از ثباتهای BX,SIیا DIقرار می گیرد مثال: ]MOV AX,[BX ]MOV BL,[DI 85 حالتهای مختلف آدرس دهی -5آدرس دهی مبنا یا اندیس این حالت آدرس دهی آدرس در یکی از ثباتهای BX,SIیا DI,BPقرار می گیرد در این روش یک جابجایی 8بیتی یا 16بیتی وجود دارد. مثال: 86 حالتهای مختلف آدرس دهی -5آدرس دهی مبنا و اندیس این حالت آدرس دهی آدرس در یکی از ثباتهای BXیا BPقرار می گیرد و از SIو DIبعنوان ثبات اندیس استفاده می شود در این روش آدرس از مجموع مبنا و اندیس بدون جابجایی بدست می آید. مثال: 87 ]MOV AX,[BX][DI حالتهای مختلف آدرس دهی -6آدرس دهی مبنا و اندیس با جابجایی این حالت آدرس دهی آدرس در یکی از ثباتهای BXیا BPقرار می گیرد و از SIو DIبعنوان ثبات اندیس استفاده می شود در این روش آدرس از مجموع مبنا و اندیس با جابجایی بدست می آید. مثال: 88 حالتهای مختلف آدرس دهی در مواردمعدودي ،برنامه‌نويس ممکن است يک ثبات سگمنت و يک آفسGGت واقعي را بGGه عنوان عملوند مستقيم بنويسد MASM ،دستورالعمل زير را مجاز مي‌شمارد: ‏Mov bx,dx:0014h اين دستورالعمل ،ثبات BXرا با کلمه‌اي ک GGه از بيس GGتمين بايت س GGگمنت داده شروع مي‌شود ،بار مي‌نمايد .اين آدرس قابل جابجايي نيست. يک عملوند ثبات غيرمستقيم ،از داده حافظه استفاده مي‌کند. 89 ماکروي itoaيک رشته شش کاراکتري کدهاي اسکي براي ع GGدد مکم GGل دو (ب'رای چ'اپ در خروجی)ايجاد مي‌کند. در يک سگمنت ،ترتيب دستورالعمل‌ها دقيقًا ترتيب کدهاي حاصله را تعيين مي‌کند. ماکروي ،outputمحتوي هيچ ثباتي و همينطور ثبات نشانه‌ها را تغيير نمي‌دهد. ماکروي inputsفقط بر روي ناحيه مقصد و ثبات CXاثر مي‌گGGGGذارد ،هيچ ثبات ديگري از جمله ثبات نشانه‌ها تغيير نخواهند کرد. ماکروي inputcداراي هيچ عملوندي نمي‌باشد .اين ماکرو يGGک کGGاراکتر را از صGGفحه کليGGد مي‌خواند و کد اسکي آن را در ثبات ALذخيره مي‌نمايد. اگر ماکروي atoiقادر باشد که به طور موفقيت‌آميز يGGک رشGGته کGGاراکتر اسGGکي را تبGGديل کنGGد آنگGGGGGاه نشGGGGGانه سرريز يعGGGGGني OFصGGGGGفر خواهGGGGGد گرديGGGGGد .در تمام مGGGGGوارد نشGGGGGانه‌هاي PF,ZF,SFبسGGته بGGه مقGGداري کGGه در AXبرگردانGGده مي‌شGGود بGGه ترتيب زيGGر تغيGGير خواهند کرد: ‏اگر عدد منفي باشد SFيک خواهد شد و در غيراينصورت صفر. ‏اگر عدد صفر باشد ZFيک خواهد شد و در حالت غيرصفر ،صفر خواهد شد. PFنشاندهنده توازن عدد برگردانده شده در AXاست. فصل چهارم دستورالعمل های اساسی 93 فهرست مطالب فصل چهارم 94 ‏ انتقال داده ها بین مکانهای مختلف ‏ جمع و تفریق ‏ دستورالعملهای ضرب ‏ دستورالعملهای تقسیم ‏ جمع و تفریق مکمل 2با اعداد بزرگتر انتقال داده ها بين مكانهاي مختلف حافظه ‏ ‏ ‏ ‏ كارايي زمان و فضا (حافظه )دو مفهوم اساسي اين فصل مي با شند . ‏movدستورالعمل در زبان اسمبلي براي كپي كردن داده ها از محلي به محل ديگر مورد استفاده قرار مي گيرد. xchgدستورالعمل ،دستور مفيد ديگري است كه درزبان اسمبلي براي تعويض داده هاي منبع ومقصد كاربرد دارد. نكته :مي توان اندازه ي داده ي مورد نظر را از يك كلمه به يك بايت و يا بالعكس تغيير داد. مفهوم كارايي زمان ‏ ‏ ‏ مدت زمان الزم براي اجراي يك دستورالعمل بر حسب سيكل هاي ساعت . هر چه سيكل هاي زماني براي اجراي يك دستور العمل كمتر باشد ان دستور العمل كارايي بيشتري خواهد داشت . به طور كلي دستور العملهايي كه به حافظه دستيابي مي كنند خيلي كندتر از دستورهايي هستند كه از ثبات ها استفاده مي كنند بنا براين بايد در صورت امكان داده هايي كه زياد مورد استفاده قرار ميگيرند را در ثبات ها قرارداد. مفهوم كارايي حافظه ‏ ‏ ‏ ايجاد برنامه ي هدفي كه طول ان حداقل باشد يعني حافظه ي كمتري را اشغال كند (كد فشرده) مناسبتر وحتي در بعضي كاربرد هاي زبان اسمبلي الزم است . كارايي زمان بر حافظه ارجحيت دارد زيرا حافظه را مي توان خريد (جبران كرد ) ا ما زمان را نه ! بنابراين برنامه اي كه سريعتر اجرا شود بر ديگري برتر است حتي اگر از حافظه ي بيشتري استفاده كند. دستورالعمل mov ‏ ‏ ‏ به صورت mov destination , sourceنوشته مي شود و يك بايت يا يك كلمه را از محل sourceبه محل destinationكپي مي كند . دستور العمل movشبيه يك دستور جايگزيني ساده در زبانهاي سطح باال مي باشد ،البته با وجود محدوديت هايي در زبان اسمبلي دستور العمل movمحتواي ثبات نشانه ها و ثبات ( IPاشاره گر دستورالعمل ها ) را تغيير نمي دهد . مثال : ‏MOV CX , Count محتوی حافظه COUNTدر CX 99 قرار می گیرد. محدوديت هاي زبان اسمبلي كه دستور movرا از يك دستور جايگزيني در يك زبان سطح باال متمايز مي كند . ‏ ‏ -1عبارتهايي نظير ( )Count = 3 number + 5را نمي توان با يك دستور mov بيان كرد ( .الزم است قبال چند دستورالعمل براي محاسبه ي عبارت سمت راست استفاده شود ). -2تمام تركيبات انواع عملوندهاي منبع و مقصد .مجاز نيستند تركيباتي ازعملوندهاي دستوالعمل movكه ممكن نمي باشند : ‏ ‏ ‏ ‏ ‏ ‏ -1در صورتي كه هر دو عملوند منبع و مقصد در حافظه قرار داشته باشند. -2عملوند منبع بالواسطه به ثبات سگمنت مقصد -3هرانتقالي به ثبات نشانه ها يا از ان -4هر انتقالي به ثبات IP -5انتقال از يك ثبات سگمنت به ثبات سگمنت ديگر -6هر انتقالي كه عملوندهاي ان از يك نوع بايت يا كلمه نباشند دستور movوقتي كه عملوندهاي منبع و مقصد در حافظه هستند ‏ با توجه به اينكه دستورالعمل movنمي تواند داده اي را از يك منبع حافظه به يك مقصد حافظه كپي كند ،معموال براي انجام اين كار ازدو دستورالعمل movكه از يك ثبات مياني استفاده مي كنند ،بهره مي گيريم . بهتر است ثبات AXرا به عنوان ثبات مياني به كار ببريم زيرا از يك سيكل زماني و بايت حافظه ،كمتري نسبت به ثبات هاي ديگر استفاده مي كند ( .به صفحه 104كتاب مراجعه شود ) دستور العمل xcgh ‏ به صورت operator2 , operator1 xcghنوشته مي شود .و عملي را انجام مي دهد كه در زبانهاي سطح باال با سه دستور صورت مي اين دستور عملوند اول و عملوند دوم را با يكديگر تعويض گيرد . نموده به صورتي كه به سيكل زماني و حافظه كمتري نياز داشته باشد . فرم هاي مختلف دستورالعمل xcghدر صفحه 110كتاب است . در صورت استفاده از حافظه اصلي ،عملوند حافظه بايد عملوند دوم دستور xcghباشد . ‏ دستورالعمل xcghثبات نشانه ها را تغيير نمي دهد . ‏ ‏ نكته ‏ ‏ براي تغيير اندازه داده مورد نظر از يك كلمه به يك بايت مي توان كلمه مورد نظر را به يك ثبات انتقال داده پس بايت بااليي يا پاييني را به مقصد مورد نظر انتقال دهيم . برعكس مي توانيم دو بايت را در يك ثبات كنارهم گذاشته پس كلمه حاصل را به مقصد مورد نظر كپي كنيم . دستورالعمل LEA این دستورالعمل مخفف کلمات Load effect addressمی باشد .شکل کلی دستورالعمل بصورت زیر می باشد : ‏destination, source destinationبایستی یک ثبات 16بیXXتی بXXوده و sourceهر گونه رجوعی به حافظه می باش**د .این دستورالعمل آدرس sourceرا در destinationقرار می دهد. 105 ‏LEA مثال : ‏BX , X ‏LEA آدرس متغییر Xدر ثبات BXقرار می گیرد. این دستورالعمل معادل دستورالعمل زیر می باشد. ‏BX , OFFSET 106 ‏MOV دستورالعمل ADD شکل کلی آن عبارتست از : ‏destination , Source ‏ADD محتوی Sourceبا محتوی destinationجمع شده نتیج ه در destinationقرار می گیرد .این دس تورالعمل روی فل گ ها اثر دارد. 107 مثال : ‏ADD AL , 5 5واحد به محتوی ALاضافه می گردد. 108 مثال : ‏X , BX ‏ADD به محتوی ، Xمحتوی BXاض444افه می گردد و محتوی BXتغییر نمی کند. 109 نکته : در اسمبلی هر دو عملوند یک دستورالعمل نمی توانند از نوع متغییر باشند. 110 دستورالعمل SUB شکل کلی آن عبارتست از : ‏destination , Source ‏SUB محت***وی Sourceاز destinationکم گردی***ده نتیج***ه در destinationقرار داده می شود و محتوی Sourceتغی**یر نمی کند . .این دستورالعمل روی فلگ ها اثر دارد. 111 مثال : ‏Y , 20 تغییر Yبه اندازه 20واحد کاهش می یابد. 112 ‏SUB مثال : ‏AX , X ‏SUB محتوی Xاز AXکم شده و نتیجه در AXقرار می گیرد. 113 نكته ‏ ‏ ‏ ‏ ‏ دردستورالعملهاي addو subمحتواي عملوند دوم ( )sourceتغيير نميكند. براي هر دستور addيك دستور subمتناظر با همان نوع عملوند ها ،تعداد سيكل هاي زماني و تعداد بايت هاي كد هدف وجود دارد . اعمال جمع و تفريق زماني سريع ترين مي باشند كه هر دو عملوند در ثبات ها قرار داشته باشند و زماني كندترين مي باشند كه عملوند مقصد يك كلمه اي در حافظه باشد . اضافه كردن يك عملوند واقع در حافظه ي اصلي به محتواي يك ثبات سريعتر از اضافه كردن مقدار يك ثبات به محتواي يك عملوند واقع درحافظه ي اصلي مي باشند . زماني كه عملوند مقصد برابر يك كلمه است ،يك عملوند منبع بالواسطه مي تواند برابر يك بايت باشد .زيرا در زمان اجراي عمل جمع يا تفريق به يك كلمه تبديل مي شود . دستورالعمل های DEC , INC شکل کلی آن عبارتست از : ‏destination ‏destination ‏DEC ‏INC دستورالعمل INC , DECبه ترتیب عملوند مقصد را ب**ه اندازه یک واحد کاهش و یا افزایش می دهد. 115 مثال : ‏X ‏INC محتوی Xیک واحد افزایش می یابد . محتوی AXیک واحد کاهش می یابد. 116 ‏DEC AX نكاتي در مورد دستورات incوdec ‏ ‏ ‏ ‏ ‏ مقدار عملوند مقصد را به صورت يك عدد بدون عالمت در نظرميگيرند. نشانه هاي OFو SFو ZFرا تغييرميدهند ولي نشانه CFراتغييرنمي دهند. براي افزايش و كاهش شمارنده ها مفيدند و ازدستورات جمع وتفريق متناظر كارامد ترند . بهترين مكان براي نگه داشتن شمارنده ها در صورت امكان ثبات ها مي باشند. عملوند این دستورات نمیتواند ثابت باشد. علت كارامد تر بودن 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بايت حافظه نيازمند است . دستورالعمل NEG شکل کلی آن عبارتست از : ‏destination ‏NEG این دستورالعمل عملوند خود را منفی می نماید یعنی مکمل 2آن را محاسبه می نماید. 119 مثال : ‏AX ,100 ‏AX محتوی AXبه -100تغییر می یابد. 120 ‏NEG ‏MOV دستورالعملهای ضرب اسمبلی دارای دو دستورالعمل ضرب می باشد : 121 ‏ ‏IMUL ‏ ‏MUL عملوندها را بصورت عالمتدار در نظر می گیرد. عملوندها را بصورت بدون عالمت در نظر می گیرد. دستورالعملهای ضرب شکل کلی آن عبارتست از : ‏OPR ‏OPR 122 ‏MUL ‏IMUL توضیحات : 123 ‏ عملوند ثابت نمی تواند باشد. ‏ چنانچه OPRاز نوع بایت باشد محتوی OPRدر محتوی ALضرب شده نتیجه در AXقرار می گیرد. ‏ چنانچه OPRاز نوع WORDباشد محتوی OPRدر محتوی AX ضرب شده نتیجه در DX : AXقرار می گیرد و محتوی ثبات های DX , AXاز بین می رود. ‏ روی فلگ ها اثر دارد. مثال : ‏AL , 10 ‏X,-8 ‏X محتوی ثبات AXبرابر با 80 -می شود. 124 ‏MOV ‏MOV ‏IMUL دستورالعمل های تقسیم اسمبلی دارای دو دستورالعمل تقسیم می باشد : 125 ‏ ‏IDIV عملوند را بصورت عالمتدار در نظر می گیرد. ‏ ‏DIV عملوند را بصورت بدون عملوند در نظر می گیرد. دستورالعمل های تقسیم شکل کلی آن عبارتست از : ‏OPR ‏OPR 126 ‏DIV ‏IDIV توضیحات : 127 ‏ عملوند ثابت نمی تواند باشد. ‏ چنانچه OPRاز نوع بایت باشد محتوی AXبر محتوی OPRتقسیم شده نتیجه در ALقرار می گیرد و باقیمانده تقسیم در AHقرار می گیرد. ‏ چنانچه OPRاز نوع WORDباشد محتوی DX:AXبر محتوی OPR تقسیم شده نتیجه تقسیم در AXقرار می گیرد و باقیمانده در DXقرار می گیرد. مثال : 13 ‏AX , 134 ‏DB ‏X ‏X ‏MOV ‏DIV پس از اجرای دستورالعمل های فوق محتوی ALبرابر با 10و محتوی AHبرابر با 4 می باشد. 128 دستورالعمل های SBB , ADC در اسمبلی برای جمع و تفریق دو مقدار از نوع double word دستورالعملی وجود ندارد .برای این منظور ار دستورالعملهای SBB , ADCاستفاده می گردد. 129 SBB , ADC دستورالعمل های : شکل کلی آن عبارتست از ADC destination SBB destination destination , Source destination + Source + CF destination , Sounce destination - Source – CF 130 : مثال ADC X , BX SBB AX , Y 131 تفریق و جمع دو double word می خواهیم محتوی دو متغییر Xو Yاز نوع double wordرا جمع نموده نتیجه را در Zقرار دهیم : ‏X ‏DD ? ‏Y ‏DD ? ‏Z ‏DD ? ‏MOV ‏AX , X ‏ADD ‏AX , Y ‏MOV ‏Z , AX ‏MOV ‏AX , X + 2 ‏ADC ‏AX , Y + 2 ‏MOV ‏Z + 2 , AX 132 چنانچه بخواهیم محتوی دو متغییر را از هم کم نماییم بایستی در دستورالعملهای فوق ADDرا به ADC , SUBرا به SBBتبدیل نماییم. كنترل كردن نشانه CF ‏ دستورالعمل : clcنشانه ي cfرا برابر صفر قرار مي دهد= : CF 0 . ‏CF : = 1 دستورالعمل : stcنشانه ي cfرا برابر 1قرارمي دهد. ‏ دستورالعمل : cmcنشانه ي cfرا مكمل مي كند. ‏

51,000 تومان