X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=as%2Fcasl2lib%2Fsrc%2Fabs.casl;fp=as%2Fcasl2lib%2Fsrc%2Fabs.casl;h=6f03a677733fc4d36987117d1db0981ef989b992;hb=0b153de269505fe25552d3f1ee2a21dc049239c3;hp=0000000000000000000000000000000000000000;hpb=ae04e48ee62a95f6f77794d5611db189a19e70de;p=YACASL2.git diff --git a/as/casl2lib/src/abs.casl b/as/casl2lib/src/abs.casl new file mode 100644 index 0000000..6f03a67 --- /dev/null +++ b/as/casl2lib/src/abs.casl @@ -0,0 +1,17 @@ +;;; GR1を符号付き整数とみなし、絶対値に変換 +;;; 入力 GR1: -32768から32767の整数 +;;; 出力 GR1: 入力された整数の絶対値 +;;; OF: 入力されたGR1が-32768の場合、1 +;;; SF: 入力されたGR1が負数(-32767〜-1)の場合、1 +ABS START + AND GR1,GR1 ; GR1が0以上の場合は、FINへジャンプ + JPL FIN ; ↓ + JZE FIN ; ↓ + XOR GR1,ALLON ; GR1のビットを反転 + ADDA GR1,ONE ; GR1に1を追加 + JOV FIN ; 足し算でオーバーフローの場合は、OF:1を保持してFINへジャンプ + CPL GR1,ALLON ; SF:1を設定 +FIN RET +ONE DC 1 +ALLON DC #FFFF + END