基本情報処理試験のフォルダを変更し、2018年春の分を追加
[YACASL2.git] / as / exam_fe / 2010_10 / Q12 / prevrs.casl
diff --git a/as/exam_fe/2010_10/Q12/prevrs.casl b/as/exam_fe/2010_10/Q12/prevrs.casl
new file mode 100644 (file)
index 0000000..66a6fbf
--- /dev/null
@@ -0,0 +1,20 @@
+PREVRS  START
+        RPUSH
+        LD    GR4,0,GR1     ; ビット列を保存
+        CALL  REVRS         ; ビット列のビットの並びを逆転
+        LD    GR5,0,GR1     ; GR5 ← 逆転したビット列
+        LD    GR6,=16
+        SUBA  GR6,GR3       ; GR6 ← 16 - q
+        SRL   GR5,0,GR2     ; 逆転した部分ビット列αを右端に移動
+        SLL   GR5,0,GR6     ; 逆転した部分ビット列αを左端に移動
+        SRL   GR5,0,GR2     ; 逆転した部分ビット列αを p ビットに移動
+        LD    GR6,=#8000
+        SRA   GR6,-1,GR3    ; q ビット連続した1の並びを作成
+        SRL   GR6,0,GR2
+        XOR   GR6,=#FFFF
+        AND   GR6,GR4       ; 元のビット列中の部分ビット列αにゼロを設定
+        OR    GR6,GR5
+        ST    GR6,0,GR1
+        RPOP
+        RET
+        END