+++ /dev/null
-; 符号なし乗算
-; 入力
-; GR0 = 被乗数
-; GR1 = 乗数
-; 出力
-; GR3 = 結果
-MULL START
-; レジスタを退避
- PUSH 0,GR1
- PUSH 0,GR2
-; 初期化
- XOR GR3,GR3 ; GR3 = 積
-; 被乗数をシフトしながら加算していく
-LOOP SRL GR2,1 ; 最下位ビットが
- JOV ONE ; 1なら加算
- JUMP ZERO ; 0なら加算しない
-ONE ADDL GR3,GR1 ;
-ZERO SLL GR1,1 ; 被乗数をシフト
- AND GR2,GR2 ; 乗数に1のビットが
- JNZ LOOP ; あれば続行
-; レジスタを復元
- POP GR2
- POP GR1
- RET
- END