蒼天在眼 (そうてんまなこにあり)ーベランダで星を見る

昔、昔、天文少年でした。そして、今は、ベランダから、星を見ています。
いろいろの忘備録

PiDP-11を使う その13 5匹のカタツムリの巻

2024-02-08 17:26:40 | コンピュータ

いよいよ、プログラムらしいプログラムに進みます。

今回はカタツムリに見立てた@を5つターミナル・テレタイプに出力するプログラムを書いてみます。前回のテレタイプ出力命令に加えて、分岐命令を使ったループを見ていきましょう。

プログラムの構造は次の通りです。

1.繰り返しの回数 5を R0レジスタに入れる。

  010200, 000005

2. テレタイプの 状態レジスタをチェックします。

   132737, 000200,177564

3.テレタイプが出力可能(READY)になると上の命令を実行すると、Zフラグがリセットされます。それまで、ループします。XXは、戻るステップ数(オフセット)です。あとで計算します。

   0017XX、

4.テレタイプに、@のアスキーコード100(8進数)を出力します。

   112737,000100,177566

5.カウンタとして使っているR0を1つ減らします。

   005300

6.R0が0でなければ、2へもどります。YYもオフセット

   0013YY

7.  停止します。

   000000

 

1000番地から、プログラムを格納すると

1000:012700

1002:000005

1004:133237

1006:000200

1010:177564

1012:0017XX

1014:112737

1016:000100

1020:177566

1022:005300

1024:0013YY

1026:000000

まず、XXを決めます。 分岐命令を実行する段階でプログラムカウンタは次の命令の番地を指しています。つまり1014です、ここから数えて4ステップ戻ります。−4ば74なのでXXは74になります。 ああややこしい。こんな表を作っておくと便利です。この表はブランチ命令の次から数えなくてもいいようにわざとずらしてあるので、ブランチ命令から、何語移動するかを数えればいいように作っています。この場合前にBEQ命令から今度は3語戻るので、中央の3の列の前へ飛ぶの欄を74を使うことになります。

つぎにYYを決めます。8語分戻ることになります。表で8語のところを見ると67が見つかります。XXを74,YYを67として、プログラムを完成させるとこんな感じになります。

実際にPiDP−11にプログラムを入力して実行するとこのようになります。

simhは、-m、スイッチを付けると、ニーモニックで出力できます。最近知りました。

(アドレッシング・モードの続きとサブルーチン・コールの巻につづく)

 



最新の画像もっと見る

コメントを投稿