From 6a9e7118e7f1a32304a1ffba0cb7a4b44f90d9fe Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 4 Feb 2010 10:03:57 +0900 Subject: [PATCH] =?utf8?q?abs.casl=E3=81=A7=E3=80=81SF,OF=E3=82=92?= =?utf8?q?=E8=BF=94=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E4=BB=95=E6=A7=98?= =?utf8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- as/FUNC/abs.casl | 12 ++++++++++-- as/FUNC/abs_call.casl | 16 +++++++++++++++- as/FUNC/abs_call1.casl | 8 ++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 as/FUNC/abs_call1.casl diff --git a/as/FUNC/abs.casl b/as/FUNC/abs.casl index ef7d045..35aa20d 100644 --- a/as/FUNC/abs.casl +++ b/as/FUNC/abs.casl @@ -1,9 +1,17 @@ ;;; GR1を絶対値に変換する +;;; 入力 GR1:-32768〜32767の整数 +;;; 出力 GR1:入力された整数の絶対値 +;;; OF:入力されたGR1が-32768の場合、1 +;;; SF:入力されたGR1が負数(-32767〜-1)の場合、1 ABS START AND GR1,GR1 JPL FIN JZE FIN - XOR GR1,=#FFFF - ADDA GR1,=1 + XOR GR1,ALLON + ADDA GR1,ONE + JOV FIN + CPL GR1,ALLON FIN RET +ONE DC 1 +ALLON DC #FFFF END diff --git a/as/FUNC/abs_call.casl b/as/FUNC/abs_call.casl index 4a73221..1d0c3b5 100644 --- a/as/FUNC/abs_call.casl +++ b/as/FUNC/abs_call.casl @@ -4,12 +4,26 @@ MAIN START LAD GR2,0 MLOOP CPA GR2,MLEN JZE MFIN + OUT SEP,MLEN LD GR1,MVAL,GR2 - CALL ABS CALL OUTA + CALL ABS + JOV PUTOV + JMI PUTM + OUT PLUS,=1 + JUMP PUTD +PUTM OUT MINUS,=1 + JUMP PUTD +PUTOV OUT OV,=2 +PUTD CALL OUTA + OUT SEP,MLEN LAD GR2,1,GR2 JUMP MLOOP MFIN RET MVAL DC 12,-12,1,-1,32767,-32767,0,-32768 MLEN DC 8 +SEP DC '--------' +PLUS DC '+' +MINUS DC '-' +OV DC 'OV' END diff --git a/as/FUNC/abs_call1.casl b/as/FUNC/abs_call1.casl new file mode 100644 index 0000000..b53de42 --- /dev/null +++ b/as/FUNC/abs_call1.casl @@ -0,0 +1,8 @@ +;;; ABSを呼び出す +;;; casl2 abs_call.casl abs.casl outa.casl +MAIN START + LD GR1,MVAL + CALL ABS +MFIN RET +MVAL DC -32768 + END -- 2.18.0