プログラムメモリ


【プログラムメモリの変更】

プログラムカウンタを従来の13ビット幅から15ビット幅に変更しました。
したがってプログラムメモリ空間が8kワードから32kワードに拡大する
ことになります。
 命令の構成は14ビット幅で変わりませんので、2kワード単位のページは
そのまま残っており、PCLATHレジスタで切替を行うことも変わりません
しかし、ジャンプ命令が新たに追加され、よりページを渡ったジャンプが
やりやすくなっています。

【PCLATHレジスタの変更】

まず、バイト処理命令でPCLを演算対象とした場合には下図(1)のように
PCLATHの下位7ビットがそのままPCHにコピーされるようになりました。
これまでの5ビットから2ビット追加となりました。
また、GOTOとCALLのジャンプの場合は下図(2)のようになり
PCLATHレジスタのページ切替用ビットが4ビットになって2ビット追加
されました。





【新規追加のジャンプ命令】

あらたに相対ジャンプ命令が3個追加されました。

CALLW  : PCLATH:Wのアドレスにジャンプ
        (PCLATH+0〜PCLATH+255の範囲にジャンプ)
BRW   : PC+W+1のアドレスにジャンプ
        (現在PC〜現在PC+256の範囲にジャンプ)
BRA   : PC+命令リテラルのアドレス(符号+8ビット)にジャンプ
        (現在PC−256から現在PC+255の範囲にジャンプする)

 これらの命令の場合のPCLATHとPCの間の関係は下図のようになります。

 CALLW命令の場合には単純に現状のPCLATHが上位PCHにコピーされ
下位にWレジスタが代入されてジャンプします。したがって現在のページの
xx00番地からxxFF番地の範囲にジャンプすることになります。

 BRW命令の場合には、PCとWレジスタが15ビット幅で演算されます。
Wレジスタは正の8ビットデータとして加算されますので、常に上位側に
ジャンプすることになります。この場合にはページをまたがっても問題なく
ジャンプできます。

 BRAの場合には、命令のオペランドが9ビットの符号付データとしてPCに
加算されてジャンプします。したがって現在位置から前後256番地の範囲に
ジャンプできることになります。この場合のジャンプもページにまたがっても
可能となります。




  目次ページに戻る