←講義のツボメニューへ
第21回、第22回
【2003,12,4
10,5 アドレスモードの動作説明
10,5,1 間接アドレスモード I (mm==01)
Iモードはもっとも中心的なアドレスモードである。
・rrrの3ビットで示される値は8個の汎用レジスタのなかの値でメモリ番地を指定する。
・mm=01:Iモードでは、rrrで指定された汎用レジスタの中の値でメモリ番地を指定する。
・そのメモリ番地の内容データがオペランドとなる。
10,5,2 直接アドレスモード D (mm==00)
直接アドレスモードの場合は汎用レジスタ内容そのものが対象オペランドとなる。
・rrrの3ビットで示される値は8個の汎用レジスタのどれか1個を指す。
・mm==00すなわちDモードではrrrで指定されたレジスタの中身そのものが対象オペランドである。
10,5,3 −1 & 間接アドレス MI (mm==10)
MIモードの動作はIモードの場合とほとんど同じである。唯一異なる点はrrrで指定された汎用レジスタの中身をメモリ番地指定に使う前に-1する点である。
このMIモードは実用的には限定された特殊なケース(スタックのPOP-UP)でのみ用いられる。
10,5,4 間接アドレス & +1 IP (mm==11)
IPモードの場合の動作はIモードの場合とほとんど同じである。唯一異なる点は、rrrで指定された汎用レジスタの中身を、メモリ番地指定に使った後に+1する点。である。
このIPモードは後続する命令で連続するオペランド番地をアクセスするときに有効である。
10,6 アドレスモードの応用
10,6,1 ジャンプ(JUMP)
MOV,F:D7を実行するとどうなるだろう?Fオペランドが直接R7に移される。R7の中にあった次命令の予定番地はFに置換される。そして次命令フェッチが開始されると、R7の内容すなわちF番地から次命令
がフェッチされる。これすなわち(MOV、F:D7が)F番地へジャンプ動作したことに等しい。
ただし、本来のジャンプならばPSWは凍結されたまま実行すべきである。そこで、SEP-2ではMOV,F:D7そのものでジャンプを代行させず正式のジャンプ命令JMP,F:D7とする。
10,6,2 即値 (Immediate Value)
即値は別の呼び方ではリテラルとも呼ばれ、Fオペランドの1つの形としてプログラマがプラグラム中にデータを書いてしまうものである。
もっとも簡単な即値としては、1語の命令の中に即値オペランドをじかに埋め込むような形である。
しかし、それでは即値の大きさが5ビット以下に限定されるし、さらに2オペランド形式のルールを破ることになる。
そこで、1語の内部に即値を埋めることはあきらめて、命令語の次の番地に16ビット1語の即値をつかうこととする。
10,6,3 即値Xの一般的な使い方
これはテキストのP67ページの図10,11を参照
10,6,4 即値Xへジャンプする方法
これはテキストのP67ページの図10,12を参照