1 ;; 副プログラム ROTATE 2 ;; 連続する16語に格納した16 × 16 ドットの白黒の図形を,時計回りに90度回転する 3 ;; 1ドットを1ビットで表し,白は0,黒は1が格納されている。 4 ;; 1. 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。 5 ;; 2. 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。 6 ;; 3. 元の図形と回転した図形は,異なる領域に格納される。 7 ;; 4. 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。 8 ROTATE START 9 RPUSH 10 LD GR3,=16 11 LOOP1 LD GR4,=16 12 LD GR5,GR2 ; GR5 ← 結果の領域のアドレス 13 LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 14 LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 15 SRL GR7,1 16 SLL GR6,1 17 JOV ON 18 JUMP CONT 19 ON OR GR7,=#8000 20 CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 21 LAD GR5,1,GR5 22 SUBA GR4,=1 23 JNZ LOOP2 24 LAD GR1,1,GR1 25 SUBA GR3,=1 26 JNZ LOOP1 27 RPOP 28 RET 29 END