あんたCPUなんか創ってどうするのよ?! Vol.1 第6章
~TD4とかいうCPUがあまりにも残念だったので拡張してみた~
2016/8/14
コミックマーケット C90 3日目 西g16b
第6章 TD4EX2のソフトウェア
TD4EX2はあくまでもTD4の拡張であるため、ジャンプ命令と条件ジャンプ命令以外は何も変わりません。さすがにTD4用のソフトウェアをそのまま走らせるのは無理ですが、ジャンプ命令と条件ジャンプ命令だけを変更すれば簡単にTD4EX2で実行できます。
第6章 第1節 TD4EX2の命令一覧
TD4EX2の命令を以下に示します。
命令 |
1バイト目 |
2バイト目 |
説明 |
|
---|---|---|---|---|
bit 7~4 |
bit 3~0 |
|||
ADD A, Im |
0000 |
Im |
|
Aレジスタの内容に命令中で指定された定数(Im)を加算 |
MOV A,B |
0001 |
0000 |
AレジスタにBレジスタの内容を転送 |
|
IN A |
0010 |
0000 |
入力ポートからデータを取り込み、Aレジスタに格納 |
|
MOV A, Im |
0011 |
Im |
Aレジスタに命令中で指定された定数(Im)を格納 |
|
MOV B,A |
0100 |
0000 |
BレジスタにAレジスタの内容を転送 |
|
ADD B, Im |
0101 |
Im |
Bレジスタの内容に命令中で指定された定数(Im)を加算 |
|
IN B |
0110 |
0000 |
入力ポートからデータを取り込み、Bレジスタに格納 |
|
MOV B, Im |
0111 |
Im |
Bレジスタに命令中で指定された定数(Im)を格納 |
|
OUT B |
1001 |
0000 |
Bレジスタの内容を出力ポートに出力 |
|
OUT Im |
1011 |
0000 |
命令中で指定された定数を出力ポートに出力 |
|
JNC Im |
1110 |
Im |
Im |
キャリー(C)がゼロならば指定アドレス(Im)にジャンプ |
JMP Im |
1111 |
Im |
Im |
指定アドレス(Im)にジャンプ |
ジャンプ命令と条件ジャンプ命令だけが2バイト命令になっている点に注意してください。ジャンプ先アドレス(Im)の指定方法は、命令1バイト目の下位4ビットがジャンプ先アドレスのbit0~3、命令2バイト目全体がジャンプ先アドレスのbit4~11となります。