CASLファイルのフォルダを変更
[YACASL2.git] / as / fe_tests / 2009_04 / Q12 / muls.casl
diff --git a/as/fe_tests/2009_04/Q12/muls.casl b/as/fe_tests/2009_04/Q12/muls.casl
new file mode 100644 (file)
index 0000000..21b70f3
--- /dev/null
@@ -0,0 +1,27 @@
+;平成21年 春期 基本情報技術者 午後 問12
+MULS    START                ; 32ビット×16ビット→32ビット
+        RPUSH
+        LAD     GR6,0        ; 積 上位語の初期化
+        LAD     GR7,0        ; 積 下位語の初期化
+        LD      GR4,0,GR1    ; 被乗数 上位語の取出し
+        LD      GR5,1,GR1    ; 被乗数 下位語の取出し
+LP      SRL     GR2,1        ; 乗数を1ビット右にシフト
+        JOV     ADD32
+        JZE     FIN
+        JUMP    NEXT         ; 加算処理をスキップ
+ADD32   ADDL    GR6,GR4      ; 32ビット+32ビット→32ビット
+        ADDL    GR7,GR5
+        JOV     ADJ1
+        JUMP    NEXT 
+ADJ1    ADDL    GR6,=1       ; けた上げ処理
+NEXT    SLL     GR4,1        ; 被乗数(32ビット)を1ビット左にシフト
+        SLL     GR5,1
+        JOV     ADJ2
+        JUMP    LP
+ADJ2    OR      GR4,=1
+        JUMP    LP
+FIN     ST      GR6,0,GR3    ; 乗算結果の格納
+        ST      GR7,1,GR3
+        RPOP
+        RET
+        END