レジスタアドレッシングモードとは何ですか?
一般的なレジスタ アドレッシング モードをいくつか示します。
1. 直接アドレス指定を登録します。
レジスタ直接アドレッシングでは、オペランドはレジスタそのものです。命令のオペコードは、使用するレジスタを指定します。例:
「」アセンブリ
R1、R2を追加します。 R2の内容をR1に加算し、結果をR1に格納します
「」
2. 間接アドレス指定を登録します。
レジスタ間接アドレス指定では、オペランドはレジスタに格納されているメモリ アドレスです。レジスタの内容は、実際のオペランドがフェッチされるアドレスとして使用されます。例:
「」アセンブリ
ADD (R1)、R2; R1 が指すメモリ位置の内容を R2 に加算し、結果を R2 に格納します
「」
3. 相対アドレス指定を登録します。
レジスタ相対アドレス指定では、レジスタの内容にディスプレイスメント値が加算されて、オペランドの実効アドレスが形成されます。変位は定数または別のレジスタの値にすることができます。例:
「」アセンブリ
ADD [R1+10], R2;アドレス R1+10 のメモリ位置の内容を R2 に加算し、結果を R2 に格納します
「」
4. レジスタのオフセット アドレス指定:
レジスタ オフセット アドレッシングでは、レジスタの内容がベース アドレスに加算されて、オペランドの実効アドレスが形成されます。通常、ベース アドレスは定数です。例:
「」アセンブリ
ADD [1000+R1], R2;アドレス 1000+R1 のメモリ位置の内容を R2 に加算し、結果を R2 に格納します
「」
5. インデックス付きアドレス指定:
インデックス アドレッシング モードでは、インデックス レジスタを使用してベース アドレスを変更します。ベース アドレスとインデックス レジスタのスケーリングされた値を組み合わせます。例:
「」アセンブリ
ADD [R1+R2], R3;アドレス R1+2*R2 のメモリ位置の内容を R3 に加算し、結果を R3 に保存します
「」
6. 自動インクリメント/自動デクリメント アドレッシング:
自動インクリメント アドレッシング モードでは、オペランドがアクセスされた後に、アドレスを含むレジスタがインクリメントされます。自動デクリメント アドレッシング モードでは、オペランドにアクセスする前にデクリメントされます。これは、反復操作によく使用されます。例:
「」アセンブリ
ADD [R1++], R2;アドレス R1 のメモリ位置の内容を R2 に加算し、R1 をインクリメントします
「」
これらは、レジスタ アドレッシング モードのほんの数例です。異なる命令セット アーキテクチャ (ISA) には異なるアドレッシング モードがあり、それぞれに独自の利点と用途があります。