PC-E500 CPU

目次

6502に似た部分

68000に似た部分

8086に似た部分

SC62015のレジスタ構造

SC62015のアドレッシング

定数レジスタ内部RAM外部メモリ


レジスタ

レジスタには、A,BA,IL,I,X,Y,S,U,を指定でき、レジスタ毎にbit長が自動的に設定されます。


レジスタレジスタ間の転送などではレジスタのbit長をそろえる必要があることになっていますが、足りない場合には下位bitだけが書き変わり、多い場合には上位bitが捨てられるようです。

内部RAM

内部RAMのアドレッシングは、少し複雑です。

内部RAMアクセスの際には必ず直接アドレス指定を行うのですが、これでは配列などのデータ構造が作れません。そのため、内部RAM自体に内部RAMアドレスを修飾するレジスタが3本用意されています。

それぞれBP、PY、PXと呼ばれるレジスタで、BPはデータ転送元・先両方に使用できますが、PXは転送先のみ、PYは転送元のみにしか使用できません。このレジスタは内部RAMのアドレスEC、ED、EEの各番地に並んでいます。


結局、内部RAMを指定するのは以下の方法になります。直接アドレスがnの時、使える実効アドレスは

  • (n)
  • (BP+n)
  • (PX+n)または(PY+n)
  • (BP+PX)または(BP+PY)

(BP+PX)の時にはnは不要ですが、コード上は必要なため、適当な値を入れておきます。

これらの内部RAMアドレッシングの使い分けは、命令の前に1byteのプレコードを置くことによって行います(この方法はZ80に似ています)。


もしプレコードを置かなかった場合には(BP+n)が選ばれるのですが、最初はBPがどこを指しているかわからないので、実際のプログラムでは1度だけ(n)を指定してBPを0に書き換え、以降(BP+n)を使用するのが一般的でした。

外部メモリ

最後に外部メモリ空間のアドレッシングですが、これが一番豊富なものとなっています。

先ほどのように内部RAMを指定するには(n)という書き方をするのですが、外部メモリのアドレスを[ ]で括って書かれます。アドレッシングは以下のようになります。

  • [lmn]
  • [r]
  • [r++]
  • [--r]
  • [r+n]
  • [r-n]
  • [(n)]
  • [(m)+n]
  • [(m)-n]

ここで、l,m,nの文字はそれぞれ8bitの値です。[lmn]は20bit直接指定ということです。

rは20bitレジスタで、[r++]は「レジスタの指すアドレスをアクセス後、rを増加」、[--r]は「減少後アクセス」です。また[r+n][r-n]は、レジスタの値にオフセットを加えます。

[(n)]は、内部メモリのnから3byteのデータをアドレスとして取り出し、そのアドレスにアクセスします。[(m)+n][(m)-n]は、さらにオフセットを加えます。


[r++]と[--r]だけは、rにSレジスタを使用できます。それ以外のレジスタ間接アドレッシングでは、Sレジスタは使用できません。このことはSがシステムスタックで、変更に危険がともなうための処置の様です。(使用できる命令は、スタックのPUSH POPに相当する)


SC62015の主な構造は以上です。実際の命令を1つも取り上げていませんが、命令群に関しては他のCPUと似たり寄ったりですので、ユニークな特徴を紹介することがねらいの本連載では取り上げませんでした。詳しく知りたい方は青木充さんの「ポケコン裏技大辞典」をご覧ください。


前ページ 1 2

(ページ作成 1996-12-01)
(最終更新 1999-03-31)

前記事:PC-E500     戻る     次記事:PC-E500のシステム
トップページへ

-- share --

3000

-- follow --




- Reverse Link -