あなたCPUなんか創ってどうするのかしら?! 第4章
~あんたCPUなんか創ってどうするのよ?! Vol.4~
2019/4/14
技術書典6
池袋サンシャインシティ 文化会館ビル2F 展示ホールD「う11」
第4章 TD4EX4のソフトウエア
長い道のりでしたが、ようやく電卓のプログラムを作る準備ができました。
ここで改めてTD4EX4の命令コードを見てみましょう。
命令 | 1バイト目 | 2バイト目 | キャリー フラグ | 説明 | |
---|---|---|---|---|---|
bit 7~4 | bit 3~0 | ||||
命令 | 1バイト目 | 2バイト目 | キャリー フラグ | 説明 | |
bit 7~4 | bit 3~0 | ||||
ADD A, [Adr] | 0000 | Adr | ※1 | Adrで指定されたアドレスの内容をRAMから読み出しAレジスタに加算 | |
ADD B, [Adr] | 0001 | Adr | ※1 | Adrで指定されたアドレスの内容をRAMから読み出しBレジスタに加算 | |
ADD A, Im | 0010 | Im | ※1 | 命令中で指定された定数(Im)をAレジスタに加算 | |
ADD B, Im | 0011 | Im | ※1 | 命令中で指定された定数(Im)をBレジスタに加算 | |
MOV A, [Adr] | 0100 | Adr | - | Adrで指定されたアドレスの内容をRAMから読み出しAレジスタに格納 | |
MOV B, [Adr] | 0101 | Adr | - | Adrで指定されたアドレスの内容をRAMから読み出しBレジスタに格納 | |
MOV A, Im | 0110 | Im | - | 命令中で指定された定数(Im)をAレジスタに格納 | |
MOV B, Im | 0111 | Im | - | 命令中で指定された定数(Im)をBレジスタに格納 | |
SUB A, [Adr] | 1000 | Adr | ※2 | Adrで指定されたアドレスの内容をRAMから読み出しAレジスタから減算 | |
SUB B, [Adr] | 1001 | Adr | ※2 | Adrで指定されたアドレスの内容をRAMから読み出しBレジスタから減算 | |
MOV [Adr], A | 1010 | Adr | - | RAMのAdrで指定されたアドレスにAレジスタの内容を格納 | |
MOV [Adr], B | 1011 | Adr | - | RAMのAdrで指定されたアドレスにBレジスタの内容を格納 | |
JNC Im | 1110 | Im | - | キャリー(C)がゼロならば指定アドレス(Im)にジャンプ | |
JMP Im | 1111 | Im | - | 指定アドレス(Im)にジャンプ |
電卓を作れる命令コードであることがお分かり頂けるでしょうか?
そして、せいぜい2桁の電卓しか作れないこともお分かりいただけるでしょうか?