CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

多ビット演算(2)

 

メインルーチンは以下のようなコーディングになります。8ビットレジスタ同士の加算はサブルーチン化して再利用できるようにしたいところですが1ビットづつ処理をキャリを伝搬させながら8回繰り返すベタ書きになっています。

f:id:O3I:20210419205703j:plain

これはメインルーチン→8ビット加算処理→全加算器→半加算器と階層構造にするとスタックの深さが3段必要になってしまい現状のハードには乗らないためです。MC14500は単純な処理しかできないからスタックは2段もあればいいんじゃないかと思ってましたが、逆に言えばある程度まとまった動作をさせるには十分なスタックを持ちサブルーチンを多用しなければいけない、ということです。

このプログラムを実行させるとLEDがバイナリ的にカウントアップしました。実行中のLEDの最下位ビット(ch.1)とシステムクロック(ch.2)を観察してみます。システムクロックを1kHzに設定すると、

f:id:O3I:20210419213108j:plain

 

LEDは約1.4Hzでチカチカします。つまりこのレジスタのインクリメントするだけの処理に700クロックも要していることになります。

f:id:O3I:20210419213127j:plain