5.6.11 アドレッシング

即値

#IMM

#IMM8

#IMM16

#IMM20

・#IMM:1

#IMMで示した1ビット即値が演算の対象となります。このアドレッシングモードは、RACW命令のソースで使用されます。

 

・#IMM:3

#IMMで示した3ビット即値が演算の対象となります。このアドレッシングモードは、ビット操作命令(BCLR、BMCnd、BNOT、BSET、BTST)のビット番号指定で使用されます。

 

・#IMM:4

#IMMで示した4ビット即値が演算の対象となります。このアドレッシングモードは、MVTIPL命令の割り込み優先レベル指定で使用されます。

 

・#UIMM:4

#UIMMで示した4ビット即値を32 ビットにゼロ拡張した結果が演算の対象となります。このアドレッシングモードは、ADD、AND、CMP、MOV、MUL、OR、SUB命令のソースで使用されます。

 

・#IMM:5

#IMMで示した5ビット即値が演算の対象となります。このアドレッシングモードは、ビット操作命令(BCLR、BMCnd、BNOT、BSET、BTST)のビット番号指定、算術/論理演算命令(SHAR、SHLL、SHLR)のシフト幅指定、および算術/論理演算命令(ROTL、ROTR)のローテート幅指定で使用されます。

 

 

 

即値

#IMM:8

#SIMM:8

#UIMM:8

#IMM:16

#SIMM:16

#SIMM:24

#IMM:32

即値で指定した値が演算の対象となります。ただし、#UIMMで指定した即値は処理サイズにゼロ拡張した結果が、#SIMMで指定した即値は処理サイズに符号拡張した結果が演算の対象となります。#IMM:n、#UIMM:n、#SIMM:n は、nビット長の即値を表します。

IMMの範囲は、「2.2.1 IMMの範囲」を参照してください。

 

 

 

レジスタ直接

Rn

(Rn=R0~R15)

指定したレジスタが演算の対象となります。

またはJMP、JSR命令の場合、Rnの値をプログラムカウンタ(PC)に転送します。

実効アドレスの範囲は、00000000h〜FFFFFFFFh です。

Rn (Rn=R0~R15)が指定できます。

 

 

 

レジスタ間接

[Rn]

(Rn=R0~R15)

レジスタの値が演算対象の実効アドレスとなります。実効アドレスの範囲は、00000000h〜FFFFFFFFhです。

[Rn] (Rn=R0~R15)が指定できます。

 

 

 

レジスタ相対

dsp:5[Rn]

(Rn=R0~R7)

 

dsp:8[Rn]

(Rn=R0~R15)

 

dsp:16[Rn]

(Rn=R0~R15)

ディスプレースメント(dsp)の値を32ビットにゼロ拡張した後、規則に従い(右図参照)、1/2/4倍した値と、レジスタ値を加算した結果の下位32ビットが演算対象の実効アドレスとなります。実効アドレスの範囲は、00000000h〜FFFFFFFFh です。dsp:n は、nビット長のディスプレースメントを表します。

dsp:5[Rn] (Rn=R0~R7)、

dsp:8[Rn] (Rn=R0~R15)、

dsp:16[Rn] (Rn=R0~R15)

が指定できます。

dsp:5[Rn] (Rn=R0~R7)は、MOV、MOVU命令でのみ使用されます。

 

 

 

ポストインクリメントレジスタ間接

[Rn+]

(Rn=R0~R15)

レジスタの値が演算対象の実効アドレスとなります。実効アドレスの範囲は、00000000h〜FFFFFFFFhです。演算実行後、レジスタの値にサイズ指定子.B/.W/.L に応じてそれぞれ1/2/4を加算します。このアドレッシングモードは、MOV、MOVU 命令で使用されます。

 

 

 

プリデクリメントレジスタ間接

[-Rn]

(Rn=R0~R15)

レジスタの値にサイズ指定子.B/.W/.Lに応じてそれぞれ1/2/4を減算します。減算後の値が演算対象の実効アドレスとなります。実効アドレスの範囲は、00000000h〜FFFFFFFFhです。このアドレッシングモードは、MOV、MOVU 命令で使用されます。

 

 

 

インデックス付きレジスタ間接

[Ri,Rb]

(Ri,Rb=R0~R15)

インデックスレジスタ(Ri)の値をサイズ指定子.B/.W/.L に応じてそれぞれ1/2/4倍した値と、ベースレジスタ(Rb)の値を加算した結果の下位32 ビットが演算対象の実効アドレスとなります。実効アドレスの範囲は、00000000h〜FFFFFFFFh です。このアドレッシングモードは、MOV、MOVU 命令で使用されます。

 

 

 

制御レジスタ直接

PC

ISP

USP

INTB

PSW

BPC

BPSW

FINTV

FPSW

指定した制御レジスタが演算の対象となります。このアドレッシングモードは、MVFC、MVTC、POPC、PUSHC命令で使用されます。

PCはMVFC、PUSHC命令のsrcにのみ指定できます。

 

 

 

PSW直接

C

Z

S

O

I

U

指定したフラグ、またはビットが演算の対象となります。このアドレッシングモードは、CLRPSW、SETPSW命令で使用されます。

 

 

 

プログラムカウンタ相対

pcdsp:3

分岐距離指定子が“.S”のとき、プログラムカウンタ(PC)にディスプレースメント(pcdsp)の値を符号なしで加算した結果の下位32ビットが実効アドレスとなります。分岐の範囲は、3〜10です。実効アドレスの範囲は、00000000h〜FFFFFFFFh です。このアドレッシングモードは、BCnd(Cnd==EQ/Z、NE/NZのみ)、BRA命令で使用されます。

 

 

 

プログラムカウンタ相対

pcdsp:8

pcdsp:16

pcdsp:24

分岐距離指定子が“.B”、“.W”、または“.A”のとき、プログラムカウンタ(PC)の値と、ディスプレースメント(pcdsp)の値を符号付きで加算した結果が実効アドレスとなります。

pcdspの範囲は、

“.B”のとき:-128≦pcdsp:8≦127

“.W”のとき:-32768≦pcdsp:16≦32767

“.A”のとき:-8388608≦pcdsp:24≦8388607

となります。実効アドレスの範囲は、00000000h〜FFFFFFFFh です。このアドレッシングモードは、“.B”のときBCnd、BRA命令で、“.W”のときBCnd(Cnd==EQ/Z、NE/NZのみ)、BRA、BSR命令で、“.A”のときBRA、BSR 命令で使用されます。

 

 

 

プログラムカウンタ相対

Rn

(Rn=R0~R15)

プログラムカウンタ(PC)の値と、Rnの値を符号付きで加算した結果が実効アドレスとなります。Rnの値の範囲は、-2147483648〜2147483647です。実効アドレスの範囲は、00000000h〜FFFFFFFFh です。このアドレッシングモードは、BRA(.L)、BSR(.L)命令で使用されます。