d2d7061da6dbb3694a188170d0849f913f8830c5
[YACASL2.git] / as / fe_tests / 2011_06 / Q12 / rotate2.casl
1 ROTATE  START
2         RPUSH
3         ST     GR3,N
4         LD     GR4,GR3
5         LD     GR5,GR1
6         LD     GR6,GR2
7         LD     GR7,=16
8         SUBA   GR7,GR3
9 SHIFT   LD     GR0,0,GR5
10         SLL    GR0,0,GR3
11         ST     GR0,0,GR6       ; 結果の領域 ← GR0
12         LAD    GR5,1,GR5       ; 元の図形の1語のアドレス更新
13         LAD    GR6,1,GR6       ; 結果の図形の1語のアドレス更新
14         SUBA   GR4,=1          ; n語処理済み?
15         JNZ    SHIFT
16 COPY    SUBA   GR7,=1          ; 残りの語の内容を結果の領域に複写
17         JMI    LOOP1
18         LD     GR0,0,GR5
19         ST     GR0,0,GR6
20         LAD    GR5,0,GR5
21         LAD    GR6,0,GR6
22         JUMP   COPY
23 N       DS     1
24 LOOP1   LD     GR4,N
25         LD     GR5,GR2         ; GR5 ← 結果の領域のアドレス
26         LD     GR6,0,GR1       ; GR6 ← 元の図形の先頭語の内容
27 LOOP2   LD     GR7,0,GR5       ; GR7 ← 結果の領域の1語の内容
28         SRL    GR7,1
29         SLL    GR6,1
30         JOV    ON
31         JUMP   CONT
32 ON      OR     GR7,=#8000
33 CONT    ST     GR7,0,GR5       ; 処理した1語を結果の領域に格納
34         LAD    GR5,1,GR5
35         SUBA   GR4,=1
36         JNZ    LOOP2
37         LAD    GR1,1,GR1
38         SUBA   GR3,=1
39         JNZ    LOOP1
40         RPOP
41         RET
42         END