<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <title>doc_inner/gnu_global/S/24169.html</title> <meta name='robots' content='noindex,nofollow' /> <meta name='generator' content='GLOBAL-6.6.14' /> <meta http-equiv='Content-Style-Type' content='text/css' /> <link rel='stylesheet' type='text/css' href='../style.css' /> </head> <body> <a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/30282.html'>doc_inner</a>/<a href='../files/30285.html'>gnu_global</a>/<a href='../files/30290.html'>S</a>/24169.html</h2> <em class='comment'>/* [<][>][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> <hr /> <pre> <a id='L1' name='L1'></a><!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <a id='L2' name='L2'></a><html xmlns='http://www.w3.org/1999/xhtml'> <a id='L3' name='L3'></a><head> <a id='L4' name='L4'></a><title>as/sample/outl.casl</title> <a id='L5' name='L5'></a><meta name='robots' content='noindex,nofollow' /> <a id='L6' name='L6'></a><meta name='generator' content='GLOBAL-6.6.14' /> <a id='L7' name='L7'></a><meta http-equiv='Content-Style-Type' content='text/css' /> <a id='L8' name='L8'></a><link rel='stylesheet' type='text/css' href='../style.css' /> <a id='L9' name='L9'></a></head> <a id='L10' name='L10'></a><body> <a id='L11' name='L11'></a><a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/24353.html'>as</a>/<a href='../files/24412.html'>sample</a>/outl.casl</h2> <a id='L12' name='L12'></a><em class='comment'>/* [&lt;][&gt;][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> <a id='L13' name='L13'></a><hr /> <a id='L14' name='L14'></a><pre> <a id='L15' name='L15'></a><a id='L1' name='L1'></a> 1 ;;; GR1に格納された値を、10進数の整数値(0〜65535)として表示 <a id='L16' name='L16'></a><a id='L2' name='L2'></a> 2 ;;; 依存プログラム: DIVL, REV <a id='L17' name='L17'></a><a id='L3' name='L3'></a> 3 OUTL START <a id='L18' name='L18'></a><a id='L4' name='L4'></a> 4 RPUSH <a id='L19' name='L19'></a><a id='L5' name='L5'></a> 5 LAD GR2,10 ; GR2に10進数の「10」を格納。 <a id='L20' name='L20'></a><a id='L6' name='L6'></a> 6 XOR GR0,GR0 ; GR0 &lt;- 0 <a id='L21' name='L21'></a><a id='L7' name='L7'></a> 7 XOR GR4,GR4 ; 整数値の長さ <a id='L22' name='L22'></a><a id='L8' name='L8'></a> 8 AND GR1,GR1 ; GR1をテスト <a id='L23' name='L23'></a><a id='L9' name='L9'></a> 9 JZE ZERO ; GR1が0の場合、ZEROにジャンプ <a id='L24' name='L24'></a><a id='L10' name='L10'></a> 10 STI CPL GR1,GR2 ; ループ先頭。(GR1 &lt; GR2)の場合は、ループ脱出 <a id='L25' name='L25'></a><a id='L11' name='L11'></a> 11 JMI STLST ; ↓ <a id='L26' name='L26'></a><a id='L12' name='L12'></a> 12 CALL DIVL ; GR1とGR2の、商をGR0、剰余をGR3に格納 <a id='L27' name='L27'></a><a id='L13' name='L13'></a> 13 LD GR1,GR3 ; GR1にGR3をコピー <a id='L28' name='L28'></a><a id='L14' name='L14'></a> 14 LD GR1,NCHAR,GR1 ; GR1を文字に変換 <a id='L29' name='L29'></a><a id='L15' name='L15'></a> 15 ST GR1,STR,GR4 ; STR + GR4 &lt;- (GR1) <a id='L30' name='L30'></a><a id='L16' name='L16'></a> 16 LAD GR4,1,GR4 ; GR4 &lt;- GR4 + 1 <a id='L31' name='L31'></a><a id='L17' name='L17'></a> 17 LD GR1,GR0 ; GR0をGR1にコピー <a id='L32' name='L32'></a><a id='L18' name='L18'></a> 18 JUMP STI ; ループ終端 <a id='L33' name='L33'></a><a id='L19' name='L19'></a> 19 STLST LD GR1,NCHAR,GR1 ; GR1を文字に変換 <a id='L34' name='L34'></a><a id='L20' name='L20'></a> 20 ST GR1,STR,GR4 ; STR + GR4 &lt;- (GR1) <a id='L35' name='L35'></a><a id='L21' name='L21'></a> 21 LAD GR4,1,GR4 ; GR4 &lt;- GR4 + 1 <a id='L36' name='L36'></a><a id='L22' name='L22'></a> 22 JUMP PRT ; PRTにジャンプ <a id='L37' name='L37'></a><a id='L23' name='L23'></a> 23 ZERO LD GR1,NCHAR ; 「0」をSTR領域に格納 GR1 &lt;- (NCHAR) <a id='L38' name='L38'></a><a id='L24' name='L24'></a> 24 ST GR1,STR,GR4 ; ↓ STR + GR4 &lt;- (GR1) <a id='L39' name='L39'></a><a id='L25' name='L25'></a> 25 LAD GR4,1,GR4 ; ↓ GR4 &lt;- GR4 + 1 <a id='L40' name='L40'></a><a id='L26' name='L26'></a> 26 PRT ST GR4,LEN ; LEN &lt;- GR4 <a id='L41' name='L41'></a><a id='L27' name='L27'></a> 27 LD GR2,LEN ; GR2にLENの値を格納 <a id='L42' name='L42'></a><a id='L28' name='L28'></a> 28 LAD GR1,STR ; GR1に文字列のアドレスを格納 <a id='L43' name='L43'></a><a id='L29' name='L29'></a> 29 CALL REV ; 文字列を逆順に並べ替え <a id='L44' name='L44'></a><a id='L30' name='L30'></a> 30 OUT STR,LEN ; 文字列を出力 <a id='L45' name='L45'></a><a id='L31' name='L31'></a> 31 RPOP <a id='L46' name='L46'></a><a id='L32' name='L32'></a> 32 RET <a id='L47' name='L47'></a><a id='L33' name='L33'></a> 33 STR DS 17 ; 符号付き2進数で表記した場合を想定し、17けた分のメモリを確保 <a id='L48' name='L48'></a><a id='L34' name='L34'></a> 34 LEN DS 1 <a id='L49' name='L49'></a><a id='L35' name='L35'></a> 35 NCHAR DC '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' <a id='L50' name='L50'></a><a id='L36' name='L36'></a> 36 END <a id='L51' name='L51'></a><a id='L37' name='L37'></a> 37 ;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う <a id='L52' name='L52'></a><a id='L38' name='L38'></a> 38 ;;; 入力 GR1:被除数 GR2:除数 <a id='L53' name='L53'></a><a id='L39' name='L39'></a> 39 ;;; 出力 GR0:商 GR3:剰余 <a id='L54' name='L54'></a><a id='L40' name='L40'></a> 40 ;;; (GR2 = 0)の場合、GR0 GR3とも0になり、オーバーフロー <a id='L55' name='L55'></a><a id='L41' name='L41'></a> 41 DIVL START <a id='L56' name='L56'></a><a id='L42' name='L42'></a> 42 PUSH 0,GR1 <a id='L57' name='L57'></a><a id='L43' name='L43'></a> 43 PUSH 0,GR2 <a id='L58' name='L58'></a><a id='L44' name='L44'></a> 44 PUSH 0,GR4 <a id='L59' name='L59'></a><a id='L45' name='L45'></a> 45 XOR GR0,GR0 ; GR0:商 初期化 <a id='L60' name='L60'></a><a id='L46' name='L46'></a> 46 XOR GR3,GR3 ; GR3:剰余 初期化 <a id='L61' name='L61'></a><a id='L47' name='L47'></a> 47 AND GR2,GR2 ; (GR2 = 0)の場合、DIVZEROへジャンプ <a id='L62' name='L62'></a><a id='L48' name='L48'></a> 48 JZE DIVZERO ; ↓ <a id='L63' name='L63'></a><a id='L49' name='L49'></a> 49 AND GR1,GR1 ; (GR1 = 0)の場合、FINへジャンプ <a id='L64' name='L64'></a><a id='L50' name='L50'></a> 50 JZE FIN ; ↓ <a id='L65' name='L65'></a><a id='L51' name='L51'></a> 51 ST GR2,Y ; YにGR2の初期値を保存 <a id='L66' name='L66'></a><a id='L52' name='L52'></a> 52 LAD GR4,1 ; GR4:対象ビットのインデックス 初期化 <a id='L67' name='L67'></a><a id='L53' name='L53'></a> 53 SL CPL GR2,GR1 ; ループ先頭。(GR2 &gt; GR1)の場合、LOOPへループ脱出 <a id='L68' name='L68'></a><a id='L54' name='L54'></a> 54 JPL LOOP ; ↓ <a id='L69' name='L69'></a><a id='L55' name='L55'></a> 55 SLL GR4,1 ; GR4を1回左シフト <a id='L70' name='L70'></a><a id='L56' name='L56'></a> 56 ST GR2,TMP ; GR2の値をTMPに退避 <a id='L71' name='L71'></a><a id='L57' name='L57'></a> 57 SLL GR2,1 ; GR2を1回左シフト <a id='L72' name='L72'></a><a id='L58' name='L58'></a> 58 JOV YOV ; オーバーフローの場合は、YOVへジャンプ <a id='L73' name='L73'></a><a id='L59' name='L59'></a> 59 JUMP SL ; ループ終端 <a id='L74' name='L74'></a><a id='L60' name='L60'></a> 60 YOV LD GR2,TMP ; GR2の値をTMPから復元 <a id='L75' name='L75'></a><a id='L61' name='L61'></a> 61 SRL GR4,1 ; GR4を1回右シフト <a id='L76' name='L76'></a><a id='L62' name='L62'></a> 62 JUMP LPIN ; LPINへジャンプ <a id='L77' name='L77'></a><a id='L63' name='L63'></a> 63 LOOP SRL GR4,1 ; ループ先頭。GR4を1回右シフト <a id='L78' name='L78'></a><a id='L64' name='L64'></a> 64 JZE SETMOD ; (GR4 = 0)の場合、SETMODへループ脱出 <a id='L79' name='L79'></a><a id='L65' name='L65'></a> 65 SRL GR2,1 ; GR2を1回右シフト <a id='L80' name='L80'></a><a id='L66' name='L66'></a> 66 CPL GR1,Y ; (GR1 &lt; Y)の場合、SETMODへループ脱出 <a id='L81' name='L81'></a><a id='L67' name='L67'></a> 67 JMI SETMOD ; ↓ <a id='L82' name='L82'></a><a id='L68' name='L68'></a> 68 CPL GR1,GR2 ; (GR1 &lt; GR2)の場合、ループ先頭へジャンプ <a id='L83' name='L83'></a><a id='L69' name='L69'></a> 69 JMI LOOP ; ↓ <a id='L84' name='L84'></a><a id='L70' name='L70'></a> 70 LPIN SUBL GR1,GR2 ; GR1 &lt;- GR1 - GR2 <a id='L85' name='L85'></a><a id='L71' name='L71'></a> 71 ADDL GR0,GR4 ; GR0 &lt;- GR0 + GR4 <a id='L86' name='L86'></a><a id='L72' name='L72'></a> 72 JUMP LOOP ; ループ終端 <a id='L87' name='L87'></a><a id='L73' name='L73'></a> 73 DIVZERO LAD GR3,#8000 ; 強制的にオーバーフローを発生させ、GR3 &lt;- 0 <a id='L88' name='L88'></a><a id='L74' name='L74'></a> 74 SLL GR3,1 ; ↓ <a id='L89' name='L89'></a><a id='L75' name='L75'></a> 75 JUMP FIN ; FIN へジャンプ <a id='L90' name='L90'></a><a id='L76' name='L76'></a> 76 SETMOD LD GR3,GR1 ; GR3 &lt;- GR1。剰余の設定 <a id='L91' name='L91'></a><a id='L77' name='L77'></a> 77 FIN POP GR4 <a id='L92' name='L92'></a><a id='L78' name='L78'></a> 78 POP GR2 <a id='L93' name='L93'></a><a id='L79' name='L79'></a> 79 POP GR1 <a id='L94' name='L94'></a><a id='L80' name='L80'></a> 80 RET <a id='L95' name='L95'></a><a id='L81' name='L81'></a> 81 Y DS 1 <a id='L96' name='L96'></a><a id='L82' name='L82'></a> 82 TMP DS 1 <a id='L97' name='L97'></a><a id='L83' name='L83'></a> 83 END <a id='L98' name='L98'></a><a id='L84' name='L84'></a> 84 ;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える <a id='L99' name='L99'></a><a id='L85' name='L85'></a> 85 ;;; 例: 12345 -&gt; 54321、54321- -&gt; -12345 <a id='L100' name='L100'></a><a id='L86' name='L86'></a> 86 ;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ <a id='L101' name='L101'></a><a id='L87' name='L87'></a> 87 ;;; 出力 (同上) <a id='L102' name='L102'></a><a id='L88' name='L88'></a> 88 REV START <a id='L103' name='L103'></a><a id='L89' name='L89'></a> 89 RPUSH <a id='L104' name='L104'></a><a id='L90' name='L90'></a> 90 LAD GR3,0 ; GR3の初期化 <a id='L105' name='L105'></a><a id='L91' name='L91'></a> 91 PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 <a id='L106' name='L106'></a><a id='L92' name='L92'></a> 92 JZE NEXT ; ↓ <a id='L107' name='L107'></a><a id='L93' name='L93'></a> 93 LD GR4,GR1 ; GR4 &lt;- GR1 <a id='L108' name='L108'></a><a id='L94' name='L94'></a> 94 ADDL GR4,GR3 ; GR4 &lt;- GR4 + GR3 <a id='L109' name='L109'></a><a id='L95' name='L95'></a> 95 LD GR5,0,GR4 ; GR5 &lt;- GR4アドレスの値 <a id='L110' name='L110'></a><a id='L96' name='L96'></a> 96 PUSH 0,GR5 ; GR5をプッシュ <a id='L111' name='L111'></a><a id='L97' name='L97'></a> 97 LAD GR3,1,GR3 ; GR3 &lt;- GR3 + 1 <a id='L112' name='L112'></a><a id='L98' name='L98'></a> 98 JUMP PU ; ループ終端 <a id='L113' name='L113'></a><a id='L99' name='L99'></a> 99 NEXT LAD GR3,0 ; GR3の初期化 <a id='L114' name='L114'></a><a id='L100' name='L100'></a> 100 PO CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 <a id='L115' name='L115'></a><a id='L101' name='L101'></a> 101 JZE FIN ; ↓ <a id='L116' name='L116'></a><a id='L102' name='L102'></a> 102 POP GR5 ; GR5にポップ <a id='L117' name='L117'></a><a id='L103' name='L103'></a> 103 LD GR4,GR1 ; GR4にGR1の値をコピー <a id='L118' name='L118'></a><a id='L104' name='L104'></a> 104 ADDL GR4,GR3 ; GR4 &lt;- GR4 + GR3 <a id='L119' name='L119'></a><a id='L105' name='L105'></a> 105 ST GR5,0,GR4 ; GR4のアドレス &lt;- GR5の値 <a id='L120' name='L120'></a><a id='L106' name='L106'></a> 106 LAD GR3,1,GR3 ; GR3 &lt;- GR3 + 1 <a id='L121' name='L121'></a><a id='L107' name='L107'></a> 107 JUMP PO ; ループ終端 <a id='L122' name='L122'></a><a id='L108' name='L108'></a> 108 FIN RPOP <a id='L123' name='L123'></a><a id='L109' name='L109'></a> 109 RET <a id='L124' name='L124'></a><a id='L110' name='L110'></a> 110 END <a id='L125' name='L125'></a></pre> <a id='L126' name='L126'></a><hr /> <a id='L127' name='L127'></a><a id='BOTTOM' name='BOTTOM'></a> <a id='L128' name='L128'></a><em class='comment'>/* [&lt;][&gt;][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> <a id='L129' name='L129'></a></body> <a id='L130' name='L130'></a></html> </pre> <hr /> <a id='BOTTOM' name='BOTTOM'></a> <em class='comment'>/* [<][>][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> </body> </html>