X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=as%2Fcasl2lib%2Fsrc%2Fmull0.casl;fp=as%2Fcasl2lib%2Fsrc%2Fmull0.casl;h=83cac026e500aa268f7e017db20ff0925d920257;hp=0000000000000000000000000000000000000000;hb=201417091a96aa8437f7773b8cedf2875805c670;hpb=fb0bcba29bcdff5d92ff53887120ba356a00aa67 diff --git a/as/casl2lib/src/mull0.casl b/as/casl2lib/src/mull0.casl new file mode 100644 index 0000000..83cac02 --- /dev/null +++ b/as/casl2lib/src/mull0.casl @@ -0,0 +1,25 @@ +; 符号なし乗算 +; 入力 +; 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