<!--StartFragment-->
لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه: 59
آدرس دهی
Opcode : نشان دهنده ی عملیات دستورالعمل است.
Shift:نشان دهنده ی این است که دستورالعمل کدهای شرطی را تغییر می دهد.
Rd:رجسیتر مقصد را مشخص می کند.
Rn:رجسیتر عملگر صحیح را مشخص می کند.
بیت های [11:0]: بیت های shifter operand که بعداً توضیح داده می شود.
بیت 25: I بیت است که مشخص کننده ی حالت بین immediate shifter و register-base shifter operand است.
اگر بیت های نشان داده شده همه مقدارهای نشان داده شده را بگیرد دستورالعمل پردازش داده نیست بلکه در فضای دستورالعمل های لود و ذخیره یا محاسباتی قرار میگیرد.
1= ]7[ bit 0= ]4[ bit 0= ]25[ bit
1-2: shifter operand
یکی از سه فرمت زیر را دارد.
مقدار عملگر فوری:
مقداری است که توسط چرخش 8 بیت ثابت در 32 بیت word توسط یک عدد زوج (30، 000، 2،0) ایجاد می شود.
چند مقدار صحیح ثابت:
0FF* 0 ، 104 * 0، FF * 0
F000000F* 0 ، 00FF * 0
چند مقدار ناصحیح
، 102* 0، 101*0
برای مثال:
MOV R0#،
ADD R3, RB, #1
CMP R7, #10000
BIC Rq, R8, 0* FF 00
مقدار عملگر رجیستر: مقدار یک رجسیتر است.
به عنوان مثال
مقدار را به منتقل می کند و MOV
مقادیر و را جمع کرده و حاصل را در ذخیره می کند.
و و ADD
مقدار عملگر رجسیتر شیفت یافته:
مقدار یک رجیستر که پیش از عملگر پردازش داده شیفت(چرخش) یافته باشد.
5 نوع شیفت داریم:
ASR
Arithmetic shift right
LSR: logical shift left
LSR: logical shift right
ROR: Rotate right
RRX: Rotate right with entend
مقدار عددی که می خواهیم شیفت بدهیم می تواند یک عدد فوری یا یک رجیستر باشد.
مقدار R را به سمت چپ 2 بار شیفت 2# LSL، ، MOV
داده و در می ریزد ROR، ، MOV
که به مقدار شیفت داده شده است.
1-3 عملگرهای فوری پردازش داده
0 7 8 11 12 15 16 19 20 21 24 25 27 28 31
8-immed
Rotate-imm
Rd
Rn
S
Opcode
001
Cond
مقدار shifter- operand تشکیل می شود با چرخش یک مقدار فوری 5 بیتی در موقعیت های بیت زوج در یک 32 بیتی. اگر مقدار عددی صفر باشد، مقدار خروجی shifter مقدار C می باشد. در غیر این صورت به مقدار بیت 31 shifter operand ست می شود.
: برابر است با حاصل چرخش immed-8 با مقدار rotate-imm*2
عملیات:
shifter- operand = immed-8 rotate right (rotate-immed *2)
if rotate-imm=0 then
shifter- carry-out=c flay
else
shifter- carry-out= shifter- operand [31]
مقادیر فوری مجاز می باشند که تنها از چرخش یک 8 بیتی به یک مقدار زوج در 32 بیتی word حاصل می شوند.
Cncoding
بعضی مقادیر بیشتر از یک روش برای encoding دارند. مثلاً
E* 0= rotate-imm 3F* 0= 8-immd
F*0= rotate-imm FC*0= 8-immed
در چنین مواردی اسمبلر باید مقدار صحیح را طبق زیر انتخاب کند:
اگر مقدار فوری در بازه ی 0 تا FF* 0 قرار داشته باشد، encoding با rotate-imm=0 قابل دسترس است.
در غیر این صورت توصیه می شود که encoding با کوچکترین مقدار ممکن rotate- imm انتخاب شود.
1-4 data processing operands – tegister
0 3 4 6 7 11 12 15 16 19 20 21 24 25 27 28 31
Rm
000
0000
Rd
Rn
S
Opcode
000
cond
: رجیستری را مشخص می کند که عملگر دستورالعمل مقدار آن است.
Shifter-operand=Rm
Shifter- carry= C flay
Encoding: این دستورالعمل encode می شود که شیفت منطقی به سمت چپ (0= shift-imm)
اگر به جای و مورد استفاده قرار گیرد و مقدار استفاده شده آدرس دستورالعمل است به علاوه ی 8.
1-5- شیفت منطقی به سمت چپ به یک عدد فوری
0 3 4 6 7 11 12 15 16 19 20 21 24 25 27 28 31
Rm
000
Shift-imm
Rd
Rn
S
Opcode
000
cond
این عملگر به کار می رود برای تولید مقدار یک رجسیتر 1 مقدار شیفت چپ داده شده یک رجسیتر (ضرب شده در یک توانی از 2)
مقدار خارج شده از shifter بیت آخری است شیفت داده شده و اگر شیفتی داده نشده باشد فلگ c است.
, LSL#
: رجسیتری است که مقدار آن باید شیفت داده شود.
LSL: نشان دهنده ی شیفت منطقی به سمت چپ است.
: مقدار شیفت را نشان می دهد که عددی است بین 0 تا 31
1-6: شیفت منطقی به سمت چپ با یک رجیستر
0 3 4 7 8 11 12 15 16 19 20 21 24 25 27 28 31
Rm
0001
Rs
Rd
Rn
S
Opcode
000
cond
این عملگر پردازش داده برای تولید مقدار یک یک رجیستر ضرب در یک توانی از 2 به کار می رود.
عملگر این دستورالعمل مقدار رجیستر Rm است. که با مقدار بایت سمت راست Rs شیفت داده شده است. مقدار carry-out آخرین بیتی است که با شیفت خارج شده و صفر است اگر مقدار بشیتر از 32 باشد و فلگ c است اگر مقدار شیفت صفر باشد.
, LSL
رجیستری است که مقدار شیفت در آن قرار دارد.
1-7: شیفت منطقی به سمت راست با یک عدد فوری
0 3 4 6 7 11 12 15 16 19 20 31 24 25 27 28 31
Rm
010
Shift-imm
Rd
Rn
S
Opcode
000
Cond
درست مانند شیفت منطقی به سمت چپ است.
1-8: شیفت منطقی به سمت راست با یک رجیستر
0 3 4 7 8 11 12 15 16 19 20 21 24 25 27 28 31
Rm
0011
Rs
Rd
Rm
S
Opcode
000
cond
درست مانند شیفت منطقی به سمت چپ با رجیستر
1-9- شیفت سمت راست محاسباتی با عدد فوری
0 3 4 5 6 7 11 12 15 16 19 20 21 24 25 27 28 31
Rm
100
Shift-imm
Rd
Rm
S
Opcode
000
cond
این عملگر پردازش داده یک مقدار عددی که به صورت محاسباتی به راست شیفت داده شده می دهد.
عملگر این دستورالعمل مقدار رجسیتر Rm است که بوسیله یک عدد فوری بین 1 تا 32 شیفت محاسباتی داده می شود. بیت 31 Rm بیت خالی شده را می گیرد و بیت خارج شده آخرین بیت شیفت داده شده است.
, ASR #
arithmetic shift right :ASR
عملیات:
if shift-imm=0 then
if Rm [31]=0 then
shifter- operand=0
shifter-carry-out=Rm[31]
else
shifter-operand= 0* FFFFFFFF
shifter-carry-out=Rm[31]
else
shifter-operand= Rm arithmetic – shift –right
shifter- carry= Rm[shift-imm-1]
0 3 4 7 8 11 12 15 16 19 20 21 24 25 27 28 31
Rm
0101
Rs
Rd
Rn
S
Opcode
000
cond
این عملگر دستورالعمل مقدار رجیستر Rm است که توسط مقدار بایت پایین Rs شیفت محاسباتی به سمت راست داده شده است. بیت 31 Rm به جای بیت خالی قرار می گیرد. بیت carry-out آخرین بیت شیفت داده شده است. اگر مقدار شیفت بیشتر از 32 باشد این مقدار بیت علامت Rm است و اگر مقدار شیفت صفر باشد این مقدارؤ مقدار فلگ c است.
, ASR
1-11- چرخش به راست یک عددی فوری
0 3
Rm
110
Shift-imm
Rd
Rn
S
Opcode
000
cond
این عملگر برای تهیه ی مقدار یک رجیستر که توسط عددی ثابت چرخش یافته استفاده می شود که مقدار رجیستر Rm توسط عددی که رنج آن بین 1 تا 31 است چرخیده می شود بیت آخری که در سمت راست چرخیده شد در جای خالی سمت چپ قرار می گیرد و این بیت در carryout نیز قرار می گیرد.
, RoR #
: مشخص کننده ی چرخش است که عددی است بین 1 تا 31. اگر صفر باشد RRM نتیجه می شود.
عملیات:
if shift- inn= then
RRX
Else shift-imm>0
Shifter- operand – Rm rotate- right shift-imm
Shifter- carry-out=Rm[shift-imm-1]
12-1 چرخش به راست با رجیستر
0 3 4 7 8 11 12 15 16 19 20 21 24 25 27 28 31
Rm
0111
Rs
Rd
Rn
S
Opcode
000
cond
برای تولید یک مقدار رجیستر که توسط یک متغیر چرخش داده شده به کار می رود.
مقدار رجیستر Rm توسط بایت سمت راست Rs چرخیده می شود.
اگر مقدار shift صفر باشد carry-out مقدار فلگ c می باشد.
عملیات:
if Rs [7:0]= 0 then
shifter- operand= Rm
shifter-carry-out= C Flag
else if Rs[14:0]= 0 then
shifter-operand=Rm
shifter-carry-out=Rm [31]
else
shifter-operand=Rm rotate-right Rs[4:0]
shifter-carry-out=Rm[Rs[4:0]-1]
13-1 Rotate with extend
0 3 4 11 12 15 16 19 20 21 24 25 27 28 31
Rm
00000110
Rd
Rn
S
Opcode
000
code
این عملگر برای تهیه ی چرخش به سمت راست 33 بیتی است که بیت 33 فلگ c در نظر گرفته می شود. عملگر این دستور مقدار رجیستر Rm را یک بیت به سمت راست شیفت می دهد و جای خای را فلگ c پر می کند. و carry-out بیتی است که به بیرون شیفت داده شده است.
, RRx
این نوع مد توسط ADC ایجاد می شود.
- ذخیرع و لود word یا بابت بدون علامت
9 مد آدرس دهی برا محاسبه ی آدرس برای ذخیره و بود word یا بایت بدون علامت وجود دارد. حالت کلی آن.
این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
<!--EndFragment-->
دانلود مقاله کامل درباره آدرس دهی - کامپیوتر