<!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>as/app/pbm/rotate_nn_part.casl</title> <meta name='robots' content='noindex,nofollow' /> <meta name='generator' content='GLOBAL-6.6.5' /> <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/2861.html'>as</a>/<a href='../files/2862.html'>app</a>/<a href='../files/2864.html'>pbm</a>/rotate_nn_part.casl</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> 1 ;; 副プログラム ROTATE <a id='L2' name='L2'></a> 2 ;; 16 × 16 ドットの図形のうち 左上の n × n ドットの部分だけを時計回りに90度回転する <a id='L3' name='L3'></a> 3 ;; 1ドットを1ビットで表し,白は0,黒は1が格納されている。 <a id='L4' name='L4'></a> 4 ;; 値 n ( 1 <= n <= 16 )は GR3 に設定されて主プログラムから渡される。 <a id='L5' name='L5'></a> 5 ;; 1. 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。 <a id='L6' name='L6'></a> 6 ;; 2. 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。 <a id='L7' name='L7'></a> 7 ;; 3. 元の図形と回転した図形は,異なる領域に格納される。 <a id='L8' name='L8'></a> 8 ;; 4. 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。 <a id='L9' name='L9'></a> 9 ROTATE START <a id='L10' name='L10'></a> 10 RPUSH <a id='L11' name='L11'></a> 11 ST GR3,N ; nを保存 <a id='L12' name='L12'></a> 12 LD GR4,GR3 ; GR4 ← n <a id='L13' name='L13'></a> 13 LD GR5,GR1 ; GR5 ← 元の図形のアドレス <a id='L14' name='L14'></a> 14 LD GR6,GR2 ; GR6 ← 結果の領域のアドレス <a id='L15' name='L15'></a> 15 LD GR7,=16 <a id='L16' name='L16'></a> 16 SUBA GR7,GR3 ; GR7 ← 16-n <a id='L17' name='L17'></a> 17 SHIFT LD GR0,0,GR5 ; GR0 ← 元の図形の1語の内容 <a id='L18' name='L18'></a> 18 SLL GR0,0,GR3 <a id='L19' name='L19'></a> 19 ST GR0,0,GR6 ; 結果の領域 ← GR0 <a id='L20' name='L20'></a> 20 LAD GR5,1,GR5 ; 元の図形の1語のアドレス更新 <a id='L21' name='L21'></a> 21 LAD GR6,1,GR6 ; 結果の領域の1語のアドレス更新 <a id='L22' name='L22'></a> 22 SUBA GR4,=1 ; n語処理済み? <a id='L23' name='L23'></a> 23 JNZ SHIFT <a id='L24' name='L24'></a> 24 COPY SUBA GR7,=1 ; 残りの語の内容を結果の領域に複写 <a id='L25' name='L25'></a> 25 JMI LOOP1 <a id='L26' name='L26'></a> 26 LD GR0,0,GR5 <a id='L27' name='L27'></a> 27 ST GR0,0,GR6 <a id='L28' name='L28'></a> 28 LAD GR5,1,GR5 <a id='L29' name='L29'></a> 29 LAD GR6,1,GR6 <a id='L30' name='L30'></a> 30 JUMP COPY <a id='L31' name='L31'></a> 31 N DS 1 <a id='L32' name='L32'></a> 32 LOOP1 LD GR4,N <a id='L33' name='L33'></a> 33 LD GR5,GR2 ; GR5 ← 結果の領域のアドレス <a id='L34' name='L34'></a> 34 LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 <a id='L35' name='L35'></a> 35 LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 <a id='L36' name='L36'></a> 36 SRL GR7,1 <a id='L37' name='L37'></a> 37 SLL GR6,1 <a id='L38' name='L38'></a> 38 JOV ON <a id='L39' name='L39'></a> 39 JUMP CONT <a id='L40' name='L40'></a> 40 ON OR GR7,=#8000 <a id='L41' name='L41'></a> 41 CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 <a id='L42' name='L42'></a> 42 LAD GR5,1,GR5 <a id='L43' name='L43'></a> 43 SUBA GR4,=1 <a id='L44' name='L44'></a> 44 JNZ LOOP2 <a id='L45' name='L45'></a> 45 LAD GR1,1,GR1 <a id='L46' name='L46'></a> 46 SUBA GR3,=1 <a id='L47' name='L47'></a> 47 JNZ LOOP1 <a id='L48' name='L48'></a> 48 RPOP <a id='L49' name='L49'></a> 49 RET <a id='L50' name='L50'></a> 50 END </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>