YACAL2: CASL2処理系
[YACASL2.git] / as / muls.casl
1 ;平成21年 春期 基本情報技術者 午後 問12
2 MAIN    START
3                 LAD             GR1,X
4                 LD              GR2,Y
5         LAD     GR3,A
6             CALL        MULS
7             RET
8 X               DC              10,30
9 Y               DC              4
10 A           DS          2
11                 END
12 MULS    START                ; 32ビット×16ビット→32ビット
13         RPUSH
14         LAD     GR6,0        ; 積 上位語の初期化
15         LAD     GR7,0        ; 積 下位語の初期化
16         LD      GR4,0,GR1    ; 被乗数 上位語の取出し
17         LD      GR5,1,GR1    ; 被乗数 下位語の取出し
18 LP      SRL     GR2,1        ; 乗数を1ビット右にシフト
19         JOV     ADD32
20         JZE     FIN
21         JUMP    NEXT         ; 加算処理をスキップ
22 ADD32   ADDL    GR6,GR4      ; 32ビット+32ビット→32ビット
23         ADDL    GR7,GR5
24         JOV     ADJ1
25         JUMP    NEXT 
26 ADJ1    ADDL    GR6,=1       ; けた上げ処理
27 NEXT    SLL     GR4,1        ; 被乗数(32ビット)を1ビット左にシフト
28         SLL     GR5,1
29         JOV     ADJ2
30         JUMP    LP
31 ADJ2    OR      GR4,=1
32         JUMP    LP
33 FIN     ST      GR6,0,GR3    ; 乗算結果の格納
34         ST      GR7,1,GR3
35         RPOP
36         RET
37         END