あなたCPUなんか創ってどうするのかしら?! 第4章

~あんたCPUなんか創ってどうするのよ?! Vol.4~

2019/4/14
技術書典6
池袋サンシャインシティ 文化会館ビル2F 展示ホールD「う11」

第4章 TD4EX4のソフトウエア

長い道のりでしたが、ようやく電卓のプログラムを作る準備ができました。

ここで改めてTD4EX4の命令コードを見てみましょう。

表1 TD4EX4の命令コード表
命令1バイト目2バイト目キャリー
フラグ
説明
bit 7~4bit 3~0
命令1バイト目2バイト目キャリー
フラグ
説明
bit 7~4bit 3~0
ADD A, [Adr]0000Adr ※1Adrで指定されたアドレスの内容をRAMから読み出しAレジスタに加算
ADD B, [Adr]0001Adr※1Adrで指定されたアドレスの内容をRAMから読み出しBレジスタに加算
ADD A, Im0010Im※1命令中で指定された定数(Im)をAレジスタに加算
ADD B, Im0011Im※1命令中で指定された定数(Im)をBレジスタに加算
MOV A, [Adr]0100AdrAdrで指定されたアドレスの内容をRAMから読み出しAレジスタに格納
MOV B, [Adr]0101AdrAdrで指定されたアドレスの内容をRAMから読み出しBレジスタに格納
MOV A, Im0110Im命令中で指定された定数(Im)をAレジスタに格納
MOV B, Im0111Im命令中で指定された定数(Im)をBレジスタに格納
SUB A, [Adr]1000Adr※2Adrで指定されたアドレスの内容をRAMから読み出しAレジスタから減算
SUB B, [Adr]1001Adr※2Adrで指定されたアドレスの内容をRAMから読み出しBレジスタから減算
MOV [Adr], A1010AdrRAMのAdrで指定されたアドレスにAレジスタの内容を格納
MOV [Adr], B1011AdrRAMのAdrで指定されたアドレスにBレジスタの内容を格納
JNC Im1110Imキャリー(C)がゼロならば指定アドレス(Im)にジャンプ
JMP Im1111Im指定アドレス(Im)にジャンプ
※1 最上位ビットからの繰り上げが発生した場合に1になる。発生しない場合には0になる。
※2 結果が正(ゼロ以上)になった場合に1になる。結果が負の場合には0になる。

電卓を作れる命令コードであることがお分かり頂けるでしょうか?

そして、せいぜい2桁の電卓しか作れないこともお分かりいただけるでしょうか?