The Art of Computer Programming を読む(8)

(7)の続き。

4. 素数印刷プログラムPの手動アセンブル

+----+-+--+--+--+--+--+
|0000|+| 0| 0| 0| 0| 2|
|0001|+| 0| 0| 0| 0| 0|
|....|+| 0| 0| 0| 0| 0|
+----+-+--+--+--+--+--+
|1995|+|06|09|19|22|23|  ALF  FIRST
|1996|+|00|06|09|25|05|  ALF   FIVE
|1997|+|00|08|24|15|04|  ALF   HUND
|1998|+|19|05|04|00|17|  ALF  RED P
|1999|+|19|09|14|05|22|  ALF  RIMES
|2000|+|00|00|00|00|00|
|....|+| 0| 0| 0| 0| 0|
+----+-+--+--+--+--+--+
|2024|+|00|00|00| 2035|
|....|+| 0| 0| 0| 0| 0|
|2049|+|00|00|00| 2010|
|2050|-|00|00|00|  499|  con1
|2051|+|00|00|00| 0| 3|  con2
+----+-+--+--+--+--+--+
|3000|+| 0| 0| 0|18|35|
|3001|+| 2050| 0| 0|09|  LD1  con1
|3002|+| 2051| 0| 0|10|  LD2  con2
|3003|+| 0| 1| 0| 0|49|
|3004|+|  499| 1| 0|26|
|3005|+| 3016| 0| 1|41|
|3006|+| 0| 2| 0| 0|50|
|3007|+| 0| 2| 0| 2|51|
|3008|+| 0| 0| 0| 2|48|
|3009|+| 0| 0| 2| 2|55|
|3010|-| 0| 1| 3| 0|04|
|3011|+| 3006| 0| 1|47|
|3012|-| 0| 1| 3| 0|56|
|3013|+| 0| 1| 0| 0|51|
|3014|+| 3008| 0| 6|39|
|3015|+| 3003| 0| 0|39|
|3016|+| 1995| 0|18|37|
|3017|+| 2035| 0| 2|52|
|3018|-| 0|50| 0| 2|53|
|3019|+|  501| 0| 0|53|
|3020|-| 0| 1| 5| 0|08|
|3021|+| 0| 0| 0| 1|05|
|3022|+| 0| 0| 4|12|31|
|3023|+| 0| 1| 0| 1|52|
|3024|+| 0|50| 0| 1|53|
|3025|+| 3020| 0| 2|45|
|3026|+| 0| 0| 4|18|37|
|3027|+| 0|24| 4| 0|12|
|3028|+| 3019| 0| 0|45|
|3029|+| 0| 0| 0| 2|05|
+----+-+--+--+--+--+--+

真面目にロジックを追っていると、バッファ用の数値の後方ではなく前方を参照するところがあり、結構ロジックを追うのに苦労した。
BUF0が2000に設定されているが、1995-1999に値を設定したり、など。

答え合わせをしたところ、自分はロード命令、ストア命令のF指定を誤解していた。自分はデフォルトのつもりで0しか書いていなかったのだが、これでは(0:0)とみなされ符号のみのロード・ストアになってしまう。(0:5)を指定するには、Fに5を指定する必要があった。

あまり時間はかからないはず、とのことだったが1時間くらいはかかった気がする・・・。

今日はここまで。次回は、演習問題はまだ残っているが、1.3.3を読み始めよう。


この記事が気に入ったらサポートをしてみませんか?