masterブランチをマージ
[YACASL2.git] / as / fe_tests / 2009_04 / Q12 / muls.casl
1 ;平成21年 春期 基本情報技術者 午後 問12
2 MULS    START                ; 32ビット×16ビット→32ビット
3         RPUSH
4         LAD     GR6,0        ; 積 上位語の初期化
5         LAD     GR7,0        ; 積 下位語の初期化
6         LD      GR4,0,GR1    ; 被乗数 上位語の取出し
7         LD      GR5,1,GR1    ; 被乗数 下位語の取出し
8 LP      SRL     GR2,1        ; 乗数を1ビット右にシフト
9         JOV     ADD32
10         JZE     FIN
11         JUMP    NEXT         ; 加算処理をスキップ
12 ADD32   ADDL    GR6,GR4      ; 32ビット+32ビット→32ビット
13         ADDL    GR7,GR5
14         JOV     ADJ1
15         JUMP    NEXT 
16 ADJ1    ADDL    GR6,=1       ; けた上げ処理
17 NEXT    SLL     GR4,1        ; 被乗数(32ビット)を1ビット左にシフト
18         SLL     GR5,1
19         JOV     ADJ2
20         JUMP    LP
21 ADJ2    OR      GR4,=1
22         JUMP    LP
23 FIN     ST      GR6,0,GR3    ; 乗算結果の格納
24         ST      GR7,1,GR3
25         RPOP
26         RET
27         END