CPU実験室

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

条件分岐

原始モニタの機能はプログラムのロード[L]と実行[G]さえできれば十分なのですが今回初めてのハードなのでRAMにちゃんとプログラムがセットされるか確かめられるようにメモリダンプ[D]も作り込みました

RAMの先頭0xF80000番地から256バイトを16進ダンプするだけですが、よくありがちな失敗してます

f:id:O3I:20200121000902j:plain

1バイトデータをHEX表示するルーチン、そのさらに下請けルーチンである0~15のバイナリデータをASCIIコードの’0'から’F’に変換するルーチンがバグっているようです。

この処理は初歩的なプログラミングでアセンブラでモニタを作るときには避けては通れず今までにもさんざんコーディングしてきたのですがどうも間違えやすいところです。

 

モニタプログラム内の実際の変換ルーチン(binhex)は次のようなコーディングですが、

f:id:O3I:20200121002019j:plain

ここで急に問題です。

NS32000シリーズのアセンブリ言語でこの処理が正しく動作するように分岐条件:赤い枠に入るコンディションコードを以下から選びなさい。(情報処理の試験風)

f:id:O3I:20200121002723j:plain