لینک پرداخت و دانلود *پایین مطلب*
فرمت فایل:Word (قابل ویرایش و آماده پرینت)
تعداد صفحه59
8-immed
Totatr-imm
Rd
Rn
Sopcde
1
0
0
cond
Immediate shifts
0 3 4 5 6 7 11 12 15 16 19 20 21 24 25 26 27 28 31
0 3 4 5 6 7 11 12 15 16 19 20 21 24 25 26 27 28 31
Rm
0
Shift
Shift-imm
Rd
Rn
S
Opcode
0
0
0
cond
Rm
1
Shift
0
Rs
Rd
Rn
S
Opcode
0
00
code
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 ست می شود.
<immediate> : برابر است با حاصل چرخش 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
<Rm>: رجیستری را مشخص می کند که عملگر دستورالعمل مقدار آن است.
Shifter-operand=Rm
Shifter- carry= C flay
Encoding: این دستورالعمل encode می شود که شیفت منطقی به سمت چپ (0= shift-imm)
اگر به جای و مورد استفاده قرار گیرد و مقدار استفاده شده آدرس دستورالعمل است به
تحقیق در مورد آدرس دهی