X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=as%2Fcasl2lib%2Fsrc%2Fmull.casl;fp=as%2Fcasl2lib%2Fsrc%2Fmull.casl;h=0000000000000000000000000000000000000000;hp=53579ce777f94e5ab3a96ad621c4a4c9c8ea8358;hb=20134ec3ebf911ef241284c6bd9145c04a75c6ca;hpb=5be8def29beb565c49e7268f71add4a7758ba77b diff --git a/as/casl2lib/src/mull.casl b/as/casl2lib/src/mull.casl deleted file mode 100644 index 53579ce..0000000 --- a/as/casl2lib/src/mull.casl +++ /dev/null @@ -1,26 +0,0 @@ -;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う -;;; 入力 GR1:被乗数 GR2:乗数 -;;; 出力 GR3:積 -;;; 積が65535より大きい場合は、オーバーフロー -MULL START - XOR GR3,GR3 ; GR3の初期化 - AND GR1,GR1 ; GR1 = 0 の場合、FINへジャンプ - JZE FIN ; ↓ - AND GR2,GR2 ; GR2 = 0 の場合、FINへジャンプ - JZE FIN ; ↓ - PUSH 0,GR1 ; GR1の退避 - PUSH 0,GR2 ; GR2の退避 -LOOP SRL GR2,1 ; ループ開始。SRLを1つ右シフト - JOV ON ; 乗数の最下位ビットが1の場合、ONへジャンプ - JUMP NEXT ; NEXTへジャンプ -ON ADDL GR3,GR1 ; GR3 <- GR3 + GR1 - JOV POST ; GR3がオーバーフローした場合、POSTへジャンプ -NEXT AND GR2,GR2 ; GR2 = 0 の場合、POSTへジャンプ - JZE POST ; ↓ - SLL GR1,1 ; GR1を1つ左シフト - JOV POST ; GR1がオーバーフローした場合、POSTへジャンプ - JUMP LOOP ; ループ終端 -POST POP GR2 ; GR2の復元 - POP GR1 ; GR1の復元 -FIN RET - END