1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自作CPUAdvent Calendar 2022

Day 19

Kageki (TD4互換機) で足し算

Posted at

TD4の命令を実行できる自作CPU「Kageki」で入力される2個の数値の足し算を行ってみた。

今回の仕様

入力ポートの下位3ビットで足される数を指定し、最上位ビットを立ち上げることで決定する。
入力ポートの下位3ビットで足す数を指定し、最上位ビットを立ち下げることで決定する。
出力ポートに和を出力する。

プログラム

位置 機械語   アセンブリ言語
---------------------------------
0    00100000 FIRST:  IN  A
1    00001000         ADD A, 1000
2    11100000         JNC FIRST
3    01100000 SECOND: IN  B
4    01011000         ADD B, 1000
5    11100111         JNC ENTER
6    11110011         JMP SECOND
7    01011000 ENTER:  ADD B, 1000
8    00001111 LOOP:   ADD A, 1111
9    11101100         JNC FINISH
A    01010001         ADD B, 0001
B    11111000         JMP LOOP
C    10010000 FINISH: OUT B
D    11110000         JMP FIRST

0~2番地で、足される数を読み込む。1000 を足すことで、最上位ビットは0となり、0~7の数値となる。
3~7番地で、足す数を読み込む。1000 を足すことで最上位ビットは1となるので、もう一度 1000 を足すことで0~7の数値にする。
8~B番地で、足し算を行う。一方の数から1を引き、負にならなければ他方の数に1を足す、ということを繰り返す。
C~D番地で、和を出力する。

実行結果

入力ポートに Pmod SWT、出力ポートに 1-Digit 7seg Board を接続して実行した。
Pmod SWTのスイッチは端子を左向きにしたとき左から順に1、2、3、4と並んでいるが、今回は2進数として見やすいよう、ケーブルを用いて右のスイッチから順にビット0、1、2、3に接続した。
なお、今回は10Hzのクロックを用いて実行しており、本家TD4でも実行しやすいはずである。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?