assembly part 3
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خانۀ
0
1 0 0 1 0 1 0
0
1 0 0 1 0 1 0
0
01 0 0 0 1 0
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 0 1 0
0
0 0 0 1 0 0 1
0
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(حب
در
که
باشند
می
مطرح
نیز
اختصاصی
های
وقفه
و
.پرش ها به توضیح آن می پردازی