さて、今回はLaboratoryテーマ11「マシン語の割り算(16ビット版)」です。
前回の「マシン語の割り算」では、割られる数が8ビット(0〜255)でした。(2023年6月22日記事参照「Laboratoryテーマ3「マシン語の割り算」」)
ただ、それでは大きい値の計算が出来ないので急遽Laboratoryテーマ11として、「マシン語の割り算(16ビット版)」をテーマに新規追加しました。(2023年6月27日記事参照「しまった」)
考え方は8ビット版と同じで、「8回ループ」を「16回ループ」に変更しただけです。
それに伴い、ビットシフト(ローテイト)が1回(8bit)で良かったところ、すべて2回(16bit)になったのでロジック長くなっています。
16ビット割り算のサンプルプログラムです。
「WARISMPL.BAS」【ダウンロード】
マシン語での計算結果と、検算用にBASICで単純計算した結果を列記します。
マシン語のサンプルです。
起動すると、WARIZAN.BINを作成します。
16ビットへのロジック変更の際、レジスタペア数が足りなかったので、2個16ビット変数を利用しているので、サブルーチンとしてアドレス変更する際は、そこの変更を忘れないように気を付けてください。(&HBF4C:3ヵ所、&HBF4E:3ヵ所)
変数使わない手もありますが、煩雑になるので楽で解り易い方法を選択しました。
IN | OUT | |||
HL | 割られる数 | BC | 商 | |
B | 割る数 | HL | 余り |
「WARIZAN.BAS」【ダウンロード】
マシン語のサブルーチンとして必要なのは&HBF00~&HBF37までです。
&HBF38~&HBF4Fは計算元値を代入してサブルーチンコールします。
では、次回はLaboratoryテーマ5「16ビットアドレス値の10進数表示」です。