assembly part 3

Upload: hashempour

Post on 07-Jul-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Assembly Part 3

    1/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :1 

     روش های آدرس دهی

     :مفهوم مدهای آدرس ده1-3

    رییغت

     هیچ

     و

     دهند

     می

     شکل

     را

     معین

     کار

     یک

     همواره

     که

     شده

     تعریف

     پیش

     از

     اعمال

     مجموعه

     یک

     ها

     دستورالعمل

     از

     بعضی

    ضرب کرده و حاصل را درآAرا در حافظهBکه مقدار حافظهMUL ABدرآنها امکان پذیر نیست به عنوان مثال دستور 

     دو نیم بایت آن را عوض می کنSWAP Aقرار می دهد و یا دستوردو  اما دستو.که فقط برای اکوموالتور تعریف شده

    ADDتابث   برای جمع ثبات اکوموالتور با  نه تنها طراح(نظیر عمل ضر(Bکه بیان کننده جمع دو حافظه می باشد

     .دد خاص و یا ثبات های دیگر جمع کروتعریف شده است بلکه می توان اکوموالتور را با یک ع

    به چه صورت انجام می گیرد که این هماADDحال این سؤال پیش می آید که تفکیک حالت های مختلف دستوری نظیر

    باشد

     می

     دهی

     آدرس

     مدهای

     بحث

    مثال

    :صورت مقاببهROMجمع می زند در حافظه برنامه یا56Hکه عدد اکوموالتوررا باعددADD A,# 56Hدستور

     :قرار گرفته است

    افزایش

     عملوند

     

     کد عمل جمع

     حافظه

    می فهمد که باید اکوموالتور را با ی(یا کد عمل جمع اکوموالتور با یک عدد خاصOPCODE)24HبادیدنCPUکه

     .و یا عملوند معروف اسOPRANDعددی جمع کند که این عدد به 

    آدراما

     مدهای

     بیان

     همان

     پاسخ

     که

     است

     چگونه

     آن

     به

     دسترسی

     ونحوه

     کجاست

     عملونددر

     این

     که

     آید

     می

     پیش

     سؤالی

     گرفته باشOPCODEیعنی گاهی ممکن است بالفاصله بعد از.دهی می باشد گاه(نظیر مثال با(در حافظه قرار

     مدهای آدرس دهی مممکن است در یک رجیستر داخلی وگاه در یک حافظه خارجی که به انواع مختلف این حالت ها

     .گرفتم

     .باشدر برنامه نویسی نشان دهندۀ آدرس فوری یا بال فصل م#((NUMBER SIGNعالمت:1تذکر

    0 1 1 0 1 0 1 0 

    0 0 1 0 0 1 0 0 

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    2/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :2 

    می فهمد که چه عملی باید انجاOPCODEکردDECODEباCPUنهفته است وOPCODEنوع کد در:2تذکر

       ).جایگاه عملون.(چه چیزی وآن چیز درکجا واقع اسو رو....))ADD,MOVگیرد

    نتیجه

    :جایگاه

     کننده

     بیان

     دهی

     آدرس

     مدهای

    OPRANDباش

     کی

     آن

     آوردن

     وچگونه

     عملوند

     یا

    2ل3ـرتنک ورکیم رد یهد سردآ یاهدم عاونا: 

     :روش آدرس دهی فوری یا بال فاص123

    # ,MOV Aدر خود حافظه برنامه است مثال دستورOPCODEازمورد نظر بالفاصله بعدOPRANDدر این روش

    46Hهظفاح ردROMریگ یم رارق ریز تروص هب):یاه هناخ رد تاروتسد نیا دوش یم ضرف92H ,91Hراد رارق( 

    46H:وش یم عمج روتالوموکا اب هک یددع ای دنولمع 

    74H:   کد عمل جمع اکوموالتور با عدد

    0 7

    حافظه  

     برنامه

    OP1 ,# dataوتسد«.تش «این دستورات به فرم عمومی 

     .می شوند و دو بایتی می باشند

    0 1 

    1 0 0 0 1 0 

    0 0 

    1 0 1 1 1 0 

    0092H0091H 

    0003H

    0002H

     

    0001H

    MOV A, # 46H 

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    3/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :3 

     :آدرس دهی مستقی3ـ22

    (ها است که کافی است شماره خانه را تحت عنوان یک عدد SFRداخلی و یاRAMدر اینجا عملوند در یکی از خانه های

    مس

     صورت

     تقیبه

    (بیاوری

     زیر

     فرم

     به

     حرفی

     صورت

     به

     را

     حافظه

     اسم

     یا

     و

    MOV A, 90H

    ADD A, 23H

    MOV 20H ,A

    ADD A, B

    MOV A P1

    MOV A, R0

    نوشته می شوند و مشابه روش قبل دوبایت«دستو»direct , OP2یا»دستو»OP1 , directاین دستورات به فرم

     .می باشند

    که د)و سپس همین عدد)آدرس دهی بال فاص(پر می گردد32Hبا عددPOبرای برنامه مقابل ابتدا رجیست:1مثال

    POتفرگ رارق(م رارق روتالوموکآ ردریگ)رح تروص هب میقتسم یهد سردآ. ( 

    MOV PO # 32H

    MOV A , PO

     .به صورت مقابل می باشA,POتوایکه پس از اجرای این دو دستور مح

    32H=AAAAAAAAA

     

    32H= 

    A=40Hوا روتسد اب دشاب)سردآ اگر در ابتدا:2مثال 

    در پایان)آدرس دهی مستقی(52Hنیز برابرBمه مقدارشده ودر خا52Hمحتوای اکوموالتور برابر)دهی بال فاصل

     .به صورت زیر اسBمحتوای اکوموالتور و 

    ADD A , # 2H

    MOV B, A

    0 1 0 0 1 1 0 0 

    0 1 0 0 1 1 0 0

    A= 

    PO= 

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    4/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :4 

    باشد44Hعدد))P1پورت یک مقابل اگر درخانه:3مثال 

    )آدرس دهی مستقیم به صورت حرفی وعدد. (را خواهیم داش 44Hعدد30HوPOآنگاه با دستور مقابل درخانه های 

    MOV PO , P1MOV 30H , P1

     :خواهیم داشPOو30Hپس از اجرای برنامه درخانه

    فرض می شود این دستورات از: (الزم به ذکر است که این دستور العمل ها به صورت زیر در حافظه برنامه قرار می گیرد

    )به بعد در حافظه برنامه قرار دار500Hخانۀ 

     

    1 0 0 1 0 1 0

     

    1 0 0 1 0 1 0

     

    01 0 0 0 1 0

     

    0 1 0 0 0 1 0

     0

     

    0 0 0 1 0 0 1 

    0 0 0 0 1 1 0 0 

    1 0 1 0 0 0 0 1 

    0 0 0 0 1 0 0 1 

    0 0 0 0 0 0 0 1 

    =52

    =52

    A= 

    B= 

    = 44 H

    =44 H 

    PO= 

    30H  =خ نه

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    5/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :5 

    07 

    مثال

    4:درخانه

     اگر

     برنامه

     این

     در

    90Hعد

    5AHباش

     صفر

     اکوموالتور

     مقدار

     ابتدا

     در

     و

     باشد

    .دستور

     این

     اجرای

     از

     پس

     ).آدرس دهی مستقیم به صورت عد(می باش5AHمقدار اکوموالتور برابر 

    CLR A

    ADD A , 90H

     :روش آدرس دهی غیر مستقی3ـ2ـ3

     حالت عملوند در یک خانه از حافظه قرار دارد که آدرس یا شماره آن خانه از حافظه درآن قراOPRANDکه(در این

     .قرار دارد وحالت های زیر برای آن امکان پذیر اس DPTRیاR1یاROدر)دارد

    داخلRAMدریو)7FHال)00Hداخل RAMخانه هایادر یکی OPRANDـ1

     )SOHتFFH(دراد   اند قرار  @عالمت. (آنهایی که تعریف شده  برنامه نویسی نشان دهنده درس دهی غیدر

     ).مستقیم است 

    عمومی

     فرم

     به

     دستورات

     این

    »Ri@OP1 ,دستور

    «ی

    » ,OP1Ri@دستو

    «باشن

     می

     بایتی

     یک

     و

     شوند

     می

     نوشته

    1 0 1 0 0 0 0 1 

    90H=هب مود تی بP1 

    =30Hۀن خ  30Hب یت ول به 

    =85Hتروص هب تی بود ل قتن دک

    مستقیم

    =90Hود تی ب یP1)ۀر مش

    P190Hس( 

    =80H ی لو تی بPO)ۀر مش

    80H POس( 

     کد نتق ل دو ب یت به صورت

    =85H

     مستقیم

    0506H

    0505H

    0504H

    0503H

    0502H

    0501H

    0500H

    0003H

    0002H

    0001H

    0000H

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    6/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :6 

    در اکوموالتور قرا(به آن اشاره می کنROکه(23Hباشد آنگاه محتوی خانه40Hعدد23Hاگر محتوای خانه:1مثال

     .می گیرد

    MOV R0 ,# 23HR0@MOV A,

     :پس از اجرای برنامAمقدار

    گردیده و دستور بعدی باعث می شود تا محتوای اکوموالتور با فرض90HبرابرR1در این مثال ابتدا محتوی:مثال

    A=B1Hهناخ یاوتحم اب90HهکR1درگ عمج دنک یم هراشا نآ هب) .هناخ رد هک نیا ضرف اب90Hدع11Hا.( 

    MOV R1 , # 90H

    ADD A , @ R1

     :به صورت زیر اسAوR1درخاتمه محتوای

    تذکر

    :با

     را

     آن

     که

     رجیستر

     دو

     فقط

     مستقیم

     غیر

     دهی

     آدرس

     حالت

     نمایش می دهیم میتوانند جهت آدر(i=0,1)Riبرای

     نمی باشMOV A, @23Hو یا دستورMOV A, @R2دهی استفاده شوند مثال دستور   .مجاز

     :خارجی قرار دارRAMیDATAدر حافظهOPRANDـ2

     :استفاده می کنیم که دو حالت دارMOVXاز دستورMOVدر این صورت به جای دستور

    1فقط

     ـ

    256حافظه

     اول

     بایت

    DATAاز

     خارجی

    0000Hالی

    00FFHباش

     نظر

     مد

     .مد نظر باشFFFFHالی0000Hخارجی ازRAMـ تمام نقاط حافظه2

    0 0 0 0 0 1 0

     

    0 0 0 1 0 0 1

     

    1 0 0 0 0 1 1

    = 40A= 

    =90

    =C2H 

    R1= 

    A= 

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    7/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :7 

    )بیتDPTR )16به عنوان رجیستر آدرس دهنده ودر حالت دوم)نشان داده می شوRiکه به(R0R1در حالت اول

     .دهنده می باشنبه عنوان رجیستر آدرس 

    باشد

     می

     خارجی

     دیتای

     حافظه

     به

     دستیابی

     چگونگی

     دهنده

     نشان

     زیر

     دستورات

    MOVX A, @ R0

    MOVX A, @ DPTR

    MOVX @ R0 , A

    MOVX @ DPTR , A

     رود:تذکر  می  کار  به  دیتای خارجی  حافظه  به  برای دسترسی  دستوری که  بهMOVXتنها MOVEست که

    EXTERNALاس

     معروف

     »»MOVX A, @ Riفرم عمومی این دستورات مشابه موارد ذکر شده است مانند » »MOVX A , @ DPTRو یا

     .هستندمی باشند که همگی یک بایتی

    ا60Hانهباشد در نهایت در اکوموالتور وهمچنین در 2DHخارجی عد DPTRحافظه41Hاگر در مکان:1مثال

     .را خواهیم داش2DHهمین مقدارخارجی DPTRحافظه 

    MOV R0 , # 41H

    MOV R1 , # 60H

    MOVX A, @ R0

    MOVX @ R1 , A

    شود تا محتودی سبب مقرار می گیرد ودستور ب500Hعدد DPTRبیتی16با دستورات مقابل در حافظه:2مثال

     عدد

     که

     اکوموالتور

    60Hخارجی

     حافظه

     از

     ای

     خانه

     در

     است

    )RAMخارج

    (که

    DPTR دهد

     قرار

     کند

     می

     اشاره

     آن

     به

    )

     ) .می گرد60Hبرابر با500Hیعنی محتوی خانه 

    MOV A , # 60H

    MOV DPRT . # 500 H

    MOVX @ DPTR , A

     :آدرس دهی ثبا3ـ2ـ4

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    8/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :8 

    برای حالتی که بخواهی.یتی اساین آدرس دهی شبیه آدرس دهی مشتقیم می باشد با این تفاوت که کد دستور یک با

     شوند  از این م(مثال برای داده هائی که به صورت متوالی در یک برنامه ازآن استفاده می شو(دستورات سریعتر اجرا

    کنیم

     می

     استفاده

     دهی

     آدرس

    .هم

     بایت

     یک

     در

     مد

     این

     در

     یعنی

    OPCODEجایگاه

     آدرس

     وهم

     است

     نهفته

    OPRANDی

    صورت

     به

     که

     باشعملوند

     می

     زیر

     شکل

    .جایگاه

     درآن

     یکی از رجیسترهای بانک ثبات می باشد یعنی یکOPRANDکه

     رجیسترهای

     خانه اول که عملیات را معلوم می کند و سه خانه بعدی شماره یک از این ثبات هشتگان5کهR7الیR0از

     :را

    کد عمR7الR0یکی از رجیسترهای

    N0N1 N2 

     .می باشند و دستور یک بایتی باشن»دستو»Rn , OP2یا»دستو»OP1,Rnفرم عمومی دستورات به صورت

    شد به صورت زیر در حافظاز بانک ثبات می بR2که بیان کننده جمع اکوموالتور با رجیستر ADD A , R2دستور:مثال

    گیرد

     می

     قرار

    دش هدروآ حیضوت اب لاثم کی مادک ره زا ریز رد رگید یاه یهد سردآ اب یهد سردآ نیا توافت نداد ناشن رتهب یارب

     :است

     فور(آدرس دهی بال فص)الف :(ADD A, # 15H

    )که در بایت بعدی می آی(یا کد جمع اکوموالتور با یک عد24Hاز حافظه برنامه45Hمحتوای خانه

     0 1 0 1 0 1 0 0

     

    1 0  1  0  1  0 0  0 

    0  0  1  0  0  1  0  0 

    =15H

    =24H

    2AH 

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    9/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :9 

     .که باید با اکوموالتور جمع شو15Hاز حافظه برنامه عدد46Hنهمحتوای خا

     ) .برای یک دستور دو بایت از حافظه برنامه اشغال می شو(یعنی آدرس دهی بالفصل دوبایتی است

    :ADD A, 50Hآدرس دهی مستقی)ب

     .باشکه شماره حافظه در بایت بعدی م)به صورت مستقی(تور با یک حافظهیا کد جمع اکومو72Hخانه

    آن

     محتوای

     باید

     که

     است

    )نعی

      ای:73Hخانه  حافظه شماره

    .کوموالتور جمع شوبا )RAMا50Hمحتوای خانه 

     

    0 0 0 0 1 0 1 0 

    1 0 1 0 0 1 0 0 

     ح فظه برن مه

    0047H

    0046H

    0045H

    0003H

    0002H

    0001H

    0000H

    0073H0072H

    0003H

    0002H

    =50H

    =25H

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    10/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :10 

     .یعنی دستور آدرس دهی مستقیم نیز دو بایتی است

    :آدرس دهی ثبا)ج

    ADD A , R0

    =28H

    یک بایتی است یعنی در یک چنانچه دیده می شود آدرس دهی ثبات 

    است

     مشخص

     اپرند

     جایگاه

     هم

     و

     عملکرد

     کد

     هم

     برنامه

     حافظه

     از

     بایت

    52ـی3ـنمض یهد سردآ شور)یصاصتخا:( 

    که باعث تغییر دو نیSWAP Aها از پیش تعیین شده و قابل تغییر نیستند مانند دستورOPRANDدر این دستورات

    که باعث اضافه شدن یک واحد اشاره گر داده می شود و یINC DPTR و یاMUL ABبایت اکوموالتور می گردد و یا 

    SETB Cندش کی ثعاب هکCARRYنشاب یم یتیاب کی و ددرگ یم. 

    62ـن3ـبم رتسیجر کمک هب یهد سردآ شور: 

    0 0 0 1 0 1 0 0 

     ح فظه برن مه

    0072H

    0003H

    0002H

    sanandaj-samacollege.blogfa.com

  • 8/18/2019 Assembly Part 3

    11/11

     و سمبل

     م شین

     زب ن

     سوبخ

     مدرس ست

    :حیدری

     صفح

    :11 

    و قرار دادن آOPRANDرابرای برداشتن))PROGRM MEMORYاین روش امکان دسترسی به حافظه خارجی

     امکان پذیر می سازد  :آدرس محل عملوند به صورت زیر به دست می آی.در اکوموالتور

    محتوای

    DPTR یا

    PCاکوموال

     ومحتوای

     پایه

     آدرس

     عنوان

     مقداربه

     ور

    INDEXد

     این

     مجموع

     و

     کند

     می

     مشخص

     را

     که

     است

     محلی

     آدرس

     که این دستورات به صورت زیر نوشته م(در حافظه برنام(درآنجا قرار داردOPRANDمقدار

    باشند

     می

     بایتی

     یک

     و

     شوند

    MOVC A,@ A + DPTR

    MOVC A, @ A + PC

    (از حافظه برنام65Hباشد این دستور باعث انتقال محتوای خانهA=02H , PC = 63Hدر دستورات زیر اگر:1مثال

    MOVC A, @ A + PCبه اکوموالتور می گرد)فرض می شو20Hکه 

    10Hباشد با اجرای دستور مقابل محتوای اکوموالتور برابر10Hاز حافظه برنامه برابر با42CHاگر محتوای خان:2مثال

    شد

     خواهد

    MOVC A , @A+DPTR A=24H , DPTR = 0408H

    است

     برنامه

     درحافظه

     محل

     یک

     برای

     دهی

     آدرس

     نوع

     این

     داشت

     توجه

     باید

     تذکر

    ) دیتنه

     افظه

     نام

     دلیل

     همین

     به

    (MOVC) MOVE CODEسا هدش هتشاذگ.هب یسرتسد ناکما یهد سردآ شور نیا نینچمهLOOK UP

    TABLEیلد نیمه هب هک دزاس یم رسیم ارLOOK UP TABLEهظفاح هنو دشاب همانرب هظفاحرد دیابRAM )

     .)در انتهای این فصل آمده اسLOOK UP TABLEمثال هایی از کاربرد این دستور و استفاده از 

     مد آدرس دهی نسبی مربوط به پرش نسبی  بر مدهای آدرس دهی ذکر شده (مد آدرس دهی مطلق))SJMPعالوه

    AJMP , ACALL(بلند

     دهی

     آدرس

     مد

    )LJMP , LCALL(حب

     در

     که

     باشند

     می

     مطرح

     نیز

     اختصاصی

     های

     وقفه

     و

    .پرش ها به توضیح آن می پردازی