アドレッシングモード
「ベース+ディスプレースメント」とも。ベースレジスタの内容に、オフセット値を加えた値を実効アドレスとする。オフセットは16ビットの符号付きの値で指定することが多い(i386では32ビットである)。オフセットがゼロの場合は「レジスタ間接」アドレッシングとなり、実効アドレスはベースレジスタの内容そのものとなる。RISCでは0番のレジスタは内容が常にゼロということが多く、0番のレジスタをベースレジスタとして指定した場合、一種の「絶対」アドレッシングとなる。ただし、それで表せるアドレス範囲は狭い(オフセットが16ビットなら64KBの範囲内のみ)。16ビットのオフセット値というのは、最近のメモリ容量の大きいコンピュータを考えると小さいように思われる(i386で32ビットに拡張したのもそれが理由である)。IBM System/390 ではオフセット値は符号無しの12ビットだった。
命令内でアドレスをそのまま指定し、さらにインデックスレジスタを指定する。実効アドレスは絶対アドレスにインデックスレジスタの内容を加算したものになる。これも命令がかなり長くなる。絶対アドレスは配列などの先頭を指し、インデックスレジスタでその配列の特定の要素を示す。加算する前にインデックスレジスタの内容をスケーリングし、配列の添え字の値そのものをインデックスレジスタに格納しておき、スケーリングでメモリ上のオフセットに変換するアーキテクチャもある。
例えば、大域変数または局所定数として文字列などを定義した場合、そのアドレスは絶対アドレスとして命令に書かれる。文字列上を走査する場合、ループ変数がインデックスレジスタに格納され、このアドレッシングモードが使われる。
ARMやx86(条件付ロード命令)など一部のアーキテクチャは、分岐命令以外にも条件付きの命令を備えている。それによって分岐を不要とし、命令パイプラインが乱れるのを防ぐことができる。比較命令でステータスレジスタの条件コードを設定し、その後の命令列でその条件コードを使い、各命令を実際に実行するか否かを決定する。
CISCアーキテクチャでは、分岐命令やメモリアクセス(ロード/ストア)命令だけでなく、演算命令などでもメモリアクセスを行うことができる。CISCの命令セットの設計思想はアドレッシングモードを豊富に用意して、ある処理を実現するのに必要となる命令数を減らすことが大きな目標となっていた。このため、現在では使われなくなった複雑なアドレッシングモードを用意したCPUも存在する(VAXが有名。日本では日本電気のV60などは豊富なアドレッシングモードを誇っていた)。
右図は、現在最も多く使われているCISCであるx86アーキテクチャでのアドレッシングモードを示している。実効アドレス(実際にアクセスすべきメモリアドレス)はセグメント内のアドレスであり、セグメントレジスタと組み合わせることでリニアアドレスと呼ばれる一種の論理アドレスに変換されるが、この部分はメモリ管理に関わるものでアドレッシングモードには含まれない。実効アドレスは、ベースレジスタ、インデックスレジスタ、ディスプレースメントを加算することで得られるが、これらの要素は省略可能である。したがって、以下のようなアドレッシングモードが存在する。