基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

令和元年 秋期 基本情報技術者 午後 問12
問12   CASL

 次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。

 

〔プログラム1の説明〕

 符号が同一である二つの 16 ビットのパック 10 進数を加算する副プログラム ADDP1 である。 本問では,パック 10 進数は,3 桁の 10 進数の各桁をそれぞれ 4 ビットで表現し, 最下位の 4 ビットに符号として,正又は 0 の場合は 1100 を, 負の場合は 1101 を付与する数値表現とする。10 進数 246 を, パック 10 進数で表現した例を,図1に示す。

図1 1Ø 進数 246 のパック 1Ø 進数表現

 

 符号が同一である二つのパック 10 進数の加算例を,図2に示す。

 

図2 符号が同一である二つのパック 1Ø 進数の加算例

 

(1) 副プログラム ADDP1 は,加算の対象となる符号が同一である二つの 16 ビットの パック 10 進数が,GR1,GR2 に設定されて,呼び出される。

(2) 副プログラム ADDP1 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。ここで,加算において, 10 進数の百の位からの桁上がりは発生しないものとする。

 

〔プログラム1〕
ADDP1   START
        RPUSH
        ST     GR1,A
        ST     GR2,B
        LAD    GR3,4       ;ビット数カウンタの初期化
        a
        ST     GR1,RESULT  ;符号部を退避
        LD     GR1,A
        SRL    GR1,Ø,GR3
        LD     GR2,B
        SRL    GR2,Ø,GR3
LOOP    AND    GR1,=#ØØØF
        AND    GR2,=#ØØØF
        LAD    GRØ,Ø
        ADDL   GR1,GR2
        CPL    GR1,=1Ø     ;1Ø 以上の場合は桁上げ
        b
        SUBL   GR1,=1Ø
        LAD    GRØ,1
MERGE   c
        OR     GR1,RESULT  ;中間結果との併合
        LAD    GR3,4,GR3
        CPL    GR3,=16
        JZE    FIN         ;終了判定
        ST     GR1,RESULT  ;中間結果を退避
        LD     GR1,A
        SRL    GR1,Ø,GR3
        LD     GR2,B
        SRL    GR2,Ø,GR3
        ADDL   GR1,GRØ
        JUMP   LOOP
FIN     LD     GRØ,GR1
        RPOP
        RET
A       DS     1
B       DS     1
RESULT  DS     1
        END

 

設問1  プログラム1中の    に入れる正しい答えを,解答群の中から選べ。

 

a に関する解答群 ア AND  GR1,=#ØØØF    イ AND  GR1,=#FØØØ    ウ AND  GR1,=#FFFF

エ OR  GR1,=#ØØØF    オ OR  GR1,=#FØØØ    カ OR  GR1,=#FFFF

 

b に関する解答群 ア JMI  MERGE     イ JNZ  MERGE     ウ JPL  MERGE

エ JOV  MERGE     オ JZE  MERGE

 

c に関する解答群 ア SLA  GR1,Ø,GR3     イ SLL  GR1,Ø,GR3     ウ SLL  GR1,=4

エ SRA  GR1,Ø,GR3     オ SRL  GR1,Ø,GR3     カ SRL  GR1,=4

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

 

基本情報技術者試験


設問2  符号が異なる二つの 16 ビットのパック 10 進数を加算する副プログラム ADDP2 を作成した。 プログラム2中の    に入れる正しい答えを,解答群の中から選べ。 ここで,プログラム2中の ac には,設問1の正しい答えが入っているものとする。

 

〔プログラム2の説明〕

(1) 副プログラム ADDP2 は,加算の対象となる符号が異なる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。

(2) 副プログラム ADDP2 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。

 

〔プログラム2〕
ADDP2   START
        RPUSH
        CPL   GR1,GR2
        d
        LD    GR4,GR1
        LD    GR1,GR2
        LD    GR2,GR4
INI     ST    GR1,A
        ST    GR2,B
        LAD   GR3,4       ;ビット数カウンタの初期化
        a
        ST    GR1,RESULT  ;符号部を退避
        LD    GR1,A
        SRL   GR1,Ø,GR3
        LD    GR2,B
        SRL   GR2,Ø,GR3
LOOP    AND   GR1,=#ØØØF
        AND   GR2,=#ØØØF
        LAD   GRØ,Ø
        SUBL  GR1,GR2
        JPL   MERGE
        e
        ADDL  GR1,=1Ø
        LAD   GRØ,1
MERGE   c
        OR    GR1,RESULT
        LAD   GR3,4,GR3
        CPL   GR3,=16
        JZE   FIN         ;終了判定
        ST    GR1,RESULT  ;中間結果を退避
        LD    GR1,A
        SRL   GR1,Ø,GR3
        LD    GR2,B
        SRL   GR2,Ø,GR3
        f
        JUMP  LOOP
FIN     LD    GRØ,GR1
        CPL   GRØ,=#ØØØD
        JNZ   FIN2
        LAD   GRØ,#ØØØC
FIN2    RPOP
        RET
A       DS    1
B       DS    1
RESULT  DS    1
        END

 

d に関する解答群 ア JMI  INI     イ JNZ  INI     ウ JOV  INI

エ JPL  INI     オ JZE  INI

 

e に関する解答群 ア JMI  MERGE     イ JNZ  MERGE     ウ JOV  MERGE

エ JZE  MERGE     オ SLL  GR1,Ø,GR3     カ SRL  GR1,Ø,GR3

 

f に関する解答群 ア ADDA  GR1,GRØ     イ ADDL  GR1,=1     ウ ADDL  GR1,GRØ

コ ADDL  GR3,GRØ     オ SUBL  GR1,=1     カ SUBL  GR1,GRØ

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます

 

基本情報技術者試験


設問3 符号にかかわらず二つの 16 ビットのパック 10 進数を加算できるように, 符号の組合せによって副プログラム ADDP1 と ADDP2 を使い分ける副プログラム ADDP を作成した。 プログラム3中の    に入れる正しい答えを,解答群の中から選べ。

 

〔プログラム3の説明〕

(1) 副プログラム ADDP は,加算の対象となる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。

(2) 副プログラム ADDP の呼出し元に戻ったとき,加算結果は GRØ に入っている。

 

〔プログラム3〕
ADDP   START
       LD      GRØ,GR1
       g
       SRL     GRØ,1
       h
       CALL    ADDP1
       JUMP    FIN
P2     CALL    ADDP2
FIN    RET
       END

 

g に関する解答群 ア ADDL  GR1,=1     イ AND  GRØ,GR2     ウ OR  GR1,GR2

エ SUBL  GR1,=1     オ XOR  GRØ,GR2

 

h に関する解答群 ア JMI  P2      イ JNZ  P2      ウ JOV  P2

エ JPL  P2      オ JZE  P2

解答 g ←クリックすると正解が表示されます

解答 h ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]