From: j8takagi <j8takagi@nifty.com> Date: Sun, 31 Jan 2010 03:45:07 +0000 (+0900) Subject: CASL2コードで、ローカル以外のラベルを使わないように修正 X-Git-Tag: v0.1~74^2~10 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=17d01b5658f2cdad6839ab55d27cf1ed4824309b;p=YACASL2.git CASL2コードで、ローカル以外のラベルを使わないように修正 outa, outl, outb, outd_q15で、ststrを呼び出していた部分を修正 outa_call, outl_call, outb_callのEND位置を修正 hanoiで、インデントを修正 --- diff --git a/as/FUNC/hanoi.casl b/as/FUNC/hanoi.casl index 6d294e7..da6b56f 100644 --- a/as/FUNC/hanoi.casl +++ b/as/FUNC/hanoi.casl @@ -1,49 +1,46 @@ ; ããã¤ã®å¡ã解ãããã°ã©ã -MAIN START - LD GR0,N - LD GR1,A - LD GR2,B - LD GR3,C - CALL HANOI - RET - -HANOI CPA GR0,=1 - JZE DISP - SUBA GR0,=1 - PUSH 0,GR2 - PUSH 0,GR3 - POP GR2 - POP GR3 - CALL HANOI - PUSH 0,GR2 - PUSH 0,GR3 - POP GR2 - POP GR3 - CALL DISP - PUSH 0,GR1 - PUSH 0,GR2 - POP GR1 - POP GR2 - CALL HANOI - PUSH 0,GR1 - PUSH 0,GR2 - POP GR1 - POP GR2 - ADDA GR0,=1 - RET - -DISP ST GR1,MSG1 - ST GR3,MSG2 - OUT MSG,LNG - RET - -N DC 3 ;輪ã®ç·æ° -LNG DC 11 ;ã¡ãã»ã¼ã¸ã®é·ã -A DC 'A' -B DC 'B' -C DC 'C' -MSG DC 'from ' -MSG1 DS 1 - DC ' to ' -MSG2 DS 1 - END +MAIN START + LD GR0,N + LD GR1,A + LD GR2,B + LD GR3,C + CALL HANOI + RET +HANOI CPA GR0,=1 + JZE DISP + SUBA GR0,=1 + PUSH 0,GR2 + PUSH 0,GR3 + POP GR2 + POP GR3 + CALL HANOI + PUSH 0,GR2 + PUSH 0,GR3 + POP GR2 + POP GR3 + CALL DISP + PUSH 0,GR1 + PUSH 0,GR2 + POP GR1 + POP GR2 + CALL HANOI + PUSH 0,GR1 + PUSH 0,GR2 + POP GR1 + POP GR2 + ADDA GR0,=1 + RET +DISP ST GR1,MSG1 + ST GR3,MSG2 + OUT MSG,LNG + RET +N DC 3 ; 輪ã®ç·æ° +LNG DC 11 ; ã¡ãã»ã¼ã¸ã®é·ã +A DC 'A' +B DC 'B' +C DC 'C' +MSG DC 'from ' +MSG1 DS 1 + DC ' to ' +MSG2 DS 1 + END diff --git a/as/FUNC/outa.casl b/as/FUNC/outa.casl index ad3ff53..52c5c60 100644 --- a/as/FUNC/outa.casl +++ b/as/FUNC/outa.casl @@ -4,7 +4,7 @@ OUTA START LAD GR2,10 ; GR2ã«10é²æ°ã®ã10ããæ ¼ç´ã LAD GR0,0 ; GR0 <- 0 LAD GR4,0 ; è² æ°ãã©ã°ãGR1ãè² æ°ã®å ´åãGR4ã¯1 - ST GR0,LEN ; LENã®åæå + LAD GR5,0 ; æ´æ°å¤ã®é·ã AND GR1,GR1 ; GR1ããã¹ã JZE ZPRT ; GR1ã0ã®å ´åãZPRTã«ã¸ã£ã³ã JPL STI ; GR1ãæ£æ°ã®å ´åãSTIã«ã¸ã£ã³ã @@ -15,19 +15,24 @@ STI CPL GR1,GR2 ; ã«ã¼ãå é ã(GR1 < GR2)ã®å ´åã¯ã CALL ODIVL ; GR1ã¨GR2ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ LD GR1,GR3 ; GR1ã«GR3ãã³ãã¼ LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR5 ; (STR + GR5) <- GR1 + LAD GR5,1,GR5 ; GR5 <- GR5 + 1 LD GR1,GR0 ; GR0ãGR1ã«ã³ãã¼ JUMP STI ; ã«ã¼ãçµç«¯ STLST LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR5 ; (STR + GR5) <- GR1 + LAD GR5,1,GR5 ; GR5 <- GR5 + 1 AND GR4,GR4 ; æ£æ°ã®å ´å JZE PRT ; â LD GR1,='-' ; è² æ°ã®å ´åãã-ããSTRé åã«æ ¼ç´ - CALL STSTR ; â + ST GR1,STR,GR5 ; (STR + GR5) <- GR1 + LAD GR5,1,GR5 ; GR5 <- GR5 + 1 JUMP PRT ; PRTã«ã¸ã£ã³ã ZPRT LD GR1,NCHAR ; ã0ããSTRé åã«æ ¼ç´ - CALL STSTR ; â -PRT LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ + ST GR1,STR,GR5 ; (STR + GR5) <- GR1 + LAD GR5,1,GR5 ; GR5 <- GR5 + 1 +PRT ST GR5,LEN ; LEN <- GR5 + LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ LAD GR1,STR ; GR1ã«æååã®ã¢ãã¬ã¹ãæ ¼ç´ CALL REV ; æååãéé ã«ä¸¦ã¹æ¿ã OUT STR,LEN ; æååãåºå @@ -37,18 +42,6 @@ STR DS 17 LEN DS 1 NCHAR DC '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' END -;; GR1ãSTRé åã«æ ¼ç´ããLENãã¤ã³ã¯ãªã¡ã³ã -STSTR START - PUSH 0,GR1 - PUSH 0,GR2 - LD GR2,LEN ; GR2ã«LENã®å¤ããã¼ã - ST GR1,STR,GR2 ; STR+GR2 <- GR1 - LAD GR2,1,GR2 ; GR2 <- GR2 + 1 - ST GR2,LEN ; LENã«GR2ãæ ¼ç´ - POP GR2 - POP GR1 - RET - END ;;; GR1ã®å¤ã¨GR2ã®å¤ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ãã ;;; 0ã65535ã®ç¯å²ã®æ°å¤ãæ±ã ODIVL START diff --git a/as/FUNC/outa_call.casl b/as/FUNC/outa_call.casl index 8b7c205..b2aaf05 100644 --- a/as/FUNC/outa_call.casl +++ b/as/FUNC/outa_call.casl @@ -9,7 +9,6 @@ LOOP CPA GR2,CNT LAD GR2,1,GR2 JUMP LOOP FIN RET - END VAL DC 0 DC #0001,#0002,#0004,#0008 DC #0010,#0020,#0040,#0080 @@ -21,3 +20,4 @@ VAL DC 0 DC #FF80,#FFC0,#FFE0,#FFF0 DC #FFF8,#FFFC,#FFFE,#FFFF CNT DC 34 + END diff --git a/as/FUNC/outb.casl b/as/FUNC/outb.casl index 7d52dad..a619779 100644 --- a/as/FUNC/outb.casl +++ b/as/FUNC/outb.casl @@ -3,28 +3,33 @@ OUTB START RPUSH LAD GR2,2 ; GR2ã«2é²æ°ã®ã2ããæ ¼ç´ã LAD GR0,0 ; GR0 <- 0 - ST GR0,LEN ; LENã®åæå + XOR GR4,GR4 ; 2é²æ°å¤ã®é·ã AND GR1,GR1 ; GR1ããã¹ã - JZE ZINS ; GR1ã0ã®å ´åãZINSã«ã¸ã£ã³ã + JZE ZERO ; GR1ã0ã®å ´åãZEROã«ã¸ã£ã³ã STI CPL GR1,GR2 ; ã«ã¼ãå é ã(GR1 < GR2)ã®å ´åã¯ãã«ã¼ãè±åº JMI STLST ; â - CALL ODIVL ; GR1ã¨GR2ã®ãåãGR0ãå°ä½ãGR1ã«æ ¼ç´ + CALL ODIVL ; GR1ã¨GR2ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ + LD GR1,GR3 ; GR1ã«GR3ãã³ãã¼ LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 LD GR1,GR0 ; GR0ãGR1ã«ã³ãã¼ JUMP STI ; ã«ã¼ãçµç«¯ STLST LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 JUMP EMB ; EMBã«ã¸ã£ã³ã -ZINS LD GR1,NCHAR ; ã0ããSTRé åã«æ ¼ç´ - CALL STSTR ; â -EMB LD GR1,NCHAR ; GR0 <- '0' -EMLOOP LD GR2,LEN ; GR2 <- LEN - CPA GR2,DIG ; ã«ã¼ãå é ã(GR2 = DIG)ã®å ´åã¯ãã«ã¼ãè±åº +ZERO LD GR1,NCHAR ; ã0ããSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; â (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 +EMB LD GR1,NCHAR ; GR1 <- '0' +EMLOOP CPA GR4,DIG ; ã«ã¼ãå é ã(GR4 = DIG)ã®å ´åã¯ãã«ã¼ãè±åº JZE PRT ; â - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; â (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 JUMP EMLOOP ; ã«ã¼ãçµç«¯ -PRT LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ +PRT ST GR4,LEN ; LEN <- GR4 + LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ LAD GR1,STR ; GR1ã«æååã®ã¢ãã¬ã¹ãæ ¼ç´ CALL REV ; æååãéé ã«ä¸¦ã¹æ¿ã OUT STR,LEN ; æååãåºå @@ -33,53 +38,46 @@ PRT LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ STR DS 17 LEN DS 1 NCHAR DC '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' -DIG DC 16 +DIG DC 16 END -;; GR1ãSTRé åã«æ ¼ç´ããLENãã¤ã³ã¯ãªã¡ã³ã -STSTR START - PUSH 0,GR1 - PUSH 0,GR2 - LD GR2,LEN ; GR2ã«LENã®å¤ããã¼ã - ST GR1,STR,GR2 ; STR+GR2 <- GR1 - LAD GR2,1,GR2 ; GR2 <- GR2 + 1 - ST GR2,LEN ; LENã«GR2ãæ ¼ç´ - POP GR2 - POP GR1 - RET - END -;;; GR1ã®å¤ã¨GR2ã®å¤ã®ãåãGR0ãå°ä½ãGR1ã«æ ¼ç´ãã +;;; GR1ã®å¤ã¨GR2ã®å¤ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ãã ;;; 0ã65535ã®ç¯å²ã®æ°å¤ãæ±ã ODIVL START + PUSH 0,GR1 PUSH 0,GR2 - PUSH 0,GR3 - LAD GR0,0 ; GR0ã®åæåãå - ST GR2,ODY ; DYã«GR2ã®åæå¤ãä¿å - LAD GR3,1 ; GR3ã®åæåã対象ãããã表ã -ODSL CPL GR2,GR1 ; ã«ã¼ãå é ã(GR3 > GR1)ã®å ´åãDLOOPã¸ã«ã¼ãè±åº + PUSH 0,GR4 + AND GR2,GR2 ; GR2ã0ã®å ´åãODFINã¸ã¸ã£ã³ã + JZE ODFIN ; â + ST GR2,ODY ; ODYã«GR2ã®åæå¤ãä¿å + LAD GR0,0 ; GR0ã®åæå + LAD GR3,0 ; GR3ã®åæå + LAD GR4,1 ; GR4ã®åæåã対象ãããã表ã +ODSL CPL GR2,GR1 ; ã«ã¼ãå é ã(GR2 > GR1)ã®å ´åãODLOOPã¸ã«ã¼ãè±åº JPL ODLOOP ; â - SLL GR3,1 ; GR3ã1åå·¦ã·ãã + SLL GR4,1 ; GR4ã1åå·¦ã·ãã SLL GR2,1 ; GR2ã1åå·¦ã·ãã JOV ODYOV ; ãªã¼ãã¼ããã¼ã®å ´åã¯ãODYOVã«ã¸ã£ã³ã JUMP ODSL ; ã«ã¼ãçµç«¯ -ODYOV SRL GR2,1 ; GR2ã1åå³ã·ãã - LAD GR2,#8000,GR2 ; GR2 <- GR2 + #8000 - SRL GR3,1 ; GR3ã1åå³ã·ãã - JUMP ODLPIN ; ODLPINã¸ã¸ã£ã³ã -ODLOOP SRL GR3,1 ; ã«ã¼ãå é ãGR3ã1åå³ã·ãã - JZE ODFIN ; (GR3= 0)ã®å ´åãã«ã¼ãè±åº +ODYOV SRL GR2,1 + LAD GR2,#8000,GR2 + SRL GR4,1 + JUMP ODLPIN +ODLOOP SRL GR4,1 ; ã«ã¼ãå é ãGR4ã1åå³ã·ãã + JZE ODFIN ; (GR4 = 0)ã®å ´åãã«ã¼ãè±åº SRL GR2,1 ; GR2ã1åå³ã·ãã CPL GR1,ODY ; (GR1 < ODY)ã®å ´åãã«ã¼ãè±åº JMI ODFIN ; â CPL GR1,GR2 ; (GR1 < GR2)ã®å ´åãã«ã¼ãå é ã¸ã¸ã£ã³ã JMI ODLOOP ; â ODLPIN SUBL GR1,GR2 ; GR1 <- GR1 - GR2 - ADDL GR0,GR3 ; GR0 <- GR0 + GR3 + ADDL GR0,GR4 ; GR0 <- GR0 + GR4 JUMP ODLOOP ; ã«ã¼ãçµç«¯ -ODFIN POP GR3 +ODFIN LD GR3,GR1 + POP GR4 POP GR2 + POP GR1 RET ODY DS 1 -ODMB DC #8000 END ;; ã¢ãã¬ã¹ãGR1ãé·ããGR2ã®æååãéé ã«ä¸¦ã¹æ¿ãã ;; ä¾: 12345 -> 54321ã54321- -> -12345 diff --git a/as/FUNC/outb_call.casl b/as/FUNC/outb_call.casl index 657b17f..9ba7189 100644 --- a/as/FUNC/outb_call.casl +++ b/as/FUNC/outb_call.casl @@ -8,7 +8,6 @@ LOOP LD GR1,VAL,GR2 JZE FIN JUMP LOOP FIN RET - END VAL DC 0 DC #0001,#0002,#0004,#0008 DC #0010,#0020,#0040,#0080 @@ -20,3 +19,4 @@ VAL DC 0 DC #FF80,#FFC0,#FFE0,#FFF0 DC #FFF8,#FFFC,#FFFE,#FFFF CNT DC 34 + END diff --git a/as/FUNC/outd_q15.casl b/as/FUNC/outd_q15.casl index 58a9951..9792d4d 100644 --- a/as/FUNC/outd_q15.casl +++ b/as/FUNC/outd_q15.casl @@ -3,57 +3,45 @@ OUTD START RPUSH LAD GR2,10 ; GR2ã«10é²æ°ã®ã10ããæ ¼ç´ LAD GR0,0 ; è² æ°ãã©ã°ãGR1ãè² æ°ã®å ´åãGR0ã¯1 - ST GR0,LEN ; LENãåæå + XOR GR4,GR4 ; æ´æ°å¤ã®é·ã AND GR1,GR1 ; GR1ã0ã®å ´å JZE ZPRT ; â JPL STDN ; GR1ãæ£æ°ã®å ´åãSTDNã«ã¸ã£ã³ã - PUSH 0,GR1 - LD GR1,='-' ; GR1ãè² æ°ã®å ´åãã-ããSTRé åã«æ ¼ç´ - CALL STSTR ; â - POP GR1 - CPA GR1,=#8000 ; GR1ã#8000ãã大ããå ´å + LD GR5,='-' ; GR1ãè² æ°ã®å ´åãã-ããSTRé åã«æ ¼ç´ + ST GR5,STR ; â + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 + CPA GR1,=#8000 ; GR1ã#8000ãã大ããå ´åãMDNã¸ã¸ã£ã³ã JPL MDN ; â LD GR1,='1' ; GR1ã#8000ã®å ´åã-1ãåºå - CALL STSTR ; â + ST GR1,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 JUMP PRT ; â MDN CALL ABS ; GR1ãæ£æ°ã«å¤æ -STDN PUSH 0,GR1 ; GR1ãéé¿ - LD GR1,='0' ; ã0ããSTRé åã«æ ¼ç´ - CALL STSTR ; â - LD GR1,='.' ; ã.ããSTRé åã«æ ¼ç´ - CALL STSTR ; â - POP GR1 ; GR1ã復å +STDN LD GR5,='0' ; ã0ããSTRé åã«æ ¼ç´ + ST GR5,STR,GR4 ; â + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 + LD GR5,='.' ; ã.ããSTRé åã«æ ¼ç´ + ST GR5,STR,GR4 ; â + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 ;; GR1ã®å 容ãå°æ°å¤ã¨è¦ãªãã10é²æ°æåã«å¤æãã¦STRã«æ ¼ç´ -TODIG AND GR1,GR1 ; GR4ã0ã®å ´åã¯ãã«ã¼ããè±åº +TODIG AND GR1,GR1 ; GR1ã0ã®å ´åã¯ãã«ã¼ããè±åº JZE PRT ; â CALL MUL ; GR1ã¨GR2ã®ãç©ãGR1ããªã¼ãã¼ããã¼å¤ãGR3ã«æ ¼ç´ - PUSH 0,GR1 ; G1ãéé¿ - LD GR1,GR3 ; GR3ãGR1ã«ã³ãã¼ - ADDA GR1,='0' ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ - POP GR1 ; GR1ã復å + LD GR5,GR3 ; GR3ãGR1ã«ã³ãã¼ + ADDA GR5,='0' ; GR1ãæåã«å¤æ + ST GR5,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 JUMP TODIG ; ã«ã¼ã -ZPRT LD GR1,='0' ; ã0ããSTRé åã«æ ¼ç´ - CALL STSTR ; â -PRT LAD GR1,STR ; â +ZPRT LD GR5,='0' ; ã0ããSTRé åã«æ ¼ç´ + ST GR5,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 +PRT ST GR4,LEN ; LEN <- GR4 OUT STR,LEN ; â RPOP RET STR DS 20 LEN DS 1 END -;; GR1ãSTRé åã«æ ¼ç´ããLENãã¤ã³ã¯ãªã¡ã³ã -STSTR START - PUSH 0,GR1 - PUSH 0,GR2 - LD GR2,LEN ; GR2ã«LENã®å¤ããã¼ã - ST GR1,STR,GR2 ; STR+GR2 <- GR1 - LAD GR2,1,GR2 ; GR2 <- GR2 + 1 - ST GR2,LEN ; LENã«GR2ãæ ¼ç´ - POP GR2 - POP GR1 - RET - END ;; GR1ã®å¤ã10åã«ããGR3ã«ãªã¼ãã¼ããã¼å¤ãæ ¼ç´ MUL START PUSH 0,GR5 diff --git a/as/FUNC/outl.casl b/as/FUNC/outl.casl index 47e31b4..1e06891 100644 --- a/as/FUNC/outl.casl +++ b/as/FUNC/outl.casl @@ -3,23 +3,27 @@ OUTL START RPUSH LAD GR2,10 ; GR2ã«10é²æ°ã®ã10ããæ ¼ç´ã LAD GR0,0 ; GR0 <- 0 - ST GR0,LEN ; LENã®åæå + XOR GR4,GR4 ; æ´æ°å¤ã®é·ã AND GR1,GR1 ; GR1ããã¹ã - JZE ZPRT ; GR1ã0ã®å ´åãZPRTã«ã¸ã£ã³ã + JZE ZERO ; GR1ã0ã®å ´åãZEROã«ã¸ã£ã³ã STI CPL GR1,GR2 ; ã«ã¼ãå é ã(GR1 < GR2)ã®å ´åã¯ãã«ã¼ãè±åº JMI STLST ; â CALL ODIVL ; GR1ã¨GR2ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ LD GR1,GR3 ; GR1ã«GR3ãã³ãã¼ LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 LD GR1,GR0 ; GR0ãGR1ã«ã³ãã¼ JUMP STI ; ã«ã¼ãçµç«¯ STLST LD GR1,NCHAR,GR1 ; GR1ãæåã«å¤æ - CALL STSTR ; GR1ãSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; GR4 <- GR4 + 1 JUMP PRT ; PRTã«ã¸ã£ã³ã -ZPRT LD GR1,NCHAR ; ã0ããSTRé åã«æ ¼ç´ - CALL STSTR ; â -PRT LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ +ZERO LD GR1,NCHAR ; ã0ããSTRé åã«æ ¼ç´ + ST GR1,STR,GR4 ; â (STR + GR4) <- GR1 + LAD GR4,1,GR4 ; â GR4 <- GR4 + 1 +PRT ST GR4,LEN ; LEN <- GR4 + LD GR2,LEN ; GR2ã«LENã®å¤ãæ ¼ç´ LAD GR1,STR ; GR1ã«æååã®ã¢ãã¬ã¹ãæ ¼ç´ CALL REV ; æååãéé ã«ä¸¦ã¹æ¿ã OUT STR,LEN ; æååãåºå @@ -29,18 +33,6 @@ STR DS 17 LEN DS 1 NCHAR DC '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' END -;; GR1ãSTRé åã«æ ¼ç´ããLENãã¤ã³ã¯ãªã¡ã³ã -STSTR START - PUSH 0,GR1 - PUSH 0,GR2 - LD GR2,LEN ; GR2ã«LENã®å¤ããã¼ã - ST GR1,STR,GR2 ; STR+GR2 <- GR1 - LAD GR2,1,GR2 ; GR2 <- GR2 + 1 - ST GR2,LEN ; LENã«GR2ãæ ¼ç´ - POP GR2 - POP GR1 - RET - END ;;; GR1ã®å¤ã¨GR2ã®å¤ã®ãåãGR0ãå°ä½ãGR3ã«æ ¼ç´ãã ;;; 0ã65535ã®ç¯å²ã®æ°å¤ãæ±ã ODIVL START @@ -74,11 +66,11 @@ ODLPIN SUBL GR1,GR2 ; GR1 <- GR1 - GR2 ADDL GR0,GR4 ; GR0 <- GR0 + GR4 JUMP ODLOOP ; ã«ã¼ãçµç«¯ ODFIN LD GR3,GR1 - POP GR4 + POP GR4 POP GR2 POP GR1 RET -ODY DS 1 +ODY DS 1 END ;; ã¢ãã¬ã¹ãGR1ãé·ããGR2ã®æååãéé ã«ä¸¦ã¹æ¿ãã ;; ä¾: 12345 -> 54321ã54321- -> -12345 diff --git a/as/FUNC/outl_call.casl b/as/FUNC/outl_call.casl index 729cd7e..d20214e 100644 --- a/as/FUNC/outl_call.casl +++ b/as/FUNC/outl_call.casl @@ -8,7 +8,6 @@ LOOP LD GR1,VAL,GR2 JZE FIN JUMP LOOP FIN RET - END VAL DC 0 DC #0001,#0002,#0004,#0008 DC #0010,#0020,#0040,#0080 @@ -20,3 +19,4 @@ VAL DC 0 DC #FF80,#FFC0,#FFE0,#FFF0 DC #FFF8,#FFFC,#FFFE,#FFFF CNT DC 34 + END