; 符号なし乗算 ; 入力 ; 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