CPU実験室

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

Tipsつづき

モニタのコマンド入力でそれぞれの処理に分岐する部分の記述はこうなっています。ほとんどBASICかと見紛うようなコードですが制約はいろいろあります

f:id:O3I:20210704095013j:plain

(2)文字リテラルを定数として使えない

これはアセンブラの仕様ですが’D’’L’といった表記でASCIIコードを参照できません。これは地味に不便です

(3)即値との演算はできない

演算式の各項に即値を使うことができずあらかじめ即値を代入したレジスタとの演算となります。ただし±1のインクリメント/デクリメントはプリセットで用意されています

(4)演算式の左辺、右辺に使えるレジスタに制限がある

右辺の2項xop,yopそれぞれに使用するレジスタに制限があり、特に結果が入る左辺はARまたはAFに限られています。つまり汎用レジスタに書き戻すには改めて転送しなければなりません。

(5)比較命令が無い

これは(4)に絡みますが演算結果が直に汎用レジスタへ書き戻されないことを利用し、フラグが変化は演算結果がARに入ったところで起きるので直後に条件判定すれば比較したことになります。