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

平成21年 春期 基本情報技術者 午後 問12
問12   CASL

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

〔プログラムの説明〕

 32 ビットの乗算を行う副プログラム MULS である。

(1) MULS は,32 ビットの被乗数と 16 ビットの乗数を受け取り,32 ビットの積を返す。 数値はすべて符号なし整数とし,積のオーバフローは考慮しない。

 被乗数と積は,それぞれ連続する2語に上位 16 ビット,下位 16 ビットの順に格納される。 それぞれの上位語のアドレスは,GR1 と GR3 に設定して渡される。

 乗数は GR2 に直接設定して渡される。

(2) 副プログラム MULS から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。

〔プログラム1〕

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ビット右にシフト
        
        JZE   FIN
        JUMP  NEXT         ; 加算処理をスキップ
ADD32   ADDL  GR6,GR4      ; 32ビット+32ビット→32ビット
        ADDL  GR7,GR5
        
        JUMP  NEXT 
ADJ1    ADDL  GR6,=1       ; けた上げ処理
NEXT    SLL   GR4,1        ; 被乗数(32ビット)を1ビット左にシフト
        
        JOV   ADJ2
        JUMP  LP
ADJ2    OR    GR4,=1
        JUMP  LP
FIN     ST    GR6,0,GR3    ; 乗算結果の格納
        ST    GR7,1,GR3
        RPOP
        RET
        END
設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア JMI  ADD32      イ JMI  LP

ウ JOV  ADD32      エ JOV  LP

オ JPL  ADD32      カ JPL  LP

b に関する解答群

ア JMI  ADJ1      イ JMI  ADJ2

ウ JOV   ADJ1      エ JOV  ADJ2

オ JPL  ADJ1      カ JPL  ADJ2

c に関する解答群

ア JNZ  LP       イ JPL  LP

ウ JZE  LP       エ SLL  GR5,1

オ SRA  GR5,1      力 SRL  GR5,1

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

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

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

基本情報技術者試験


設問2 MULS を利用して,32 ビット同士の乗算を行う副プログラム MUL を作成した。

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

(1) MUL は,被乗数と乗数を受け取り,積を返す。数値はすべて 32 ビットの符号なし整数とし, 積のオーバフローは考慮しない。

 被乗数,乗数,積は,それぞれ連続する2語に上位 16 ビット,下位 16 ビットの順に格納される。 それぞれの上位語のアドレスは,GR1,GR2,GR3 に設定して渡される。

(2) 副プログラム MUL から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。

〔プログラム2〕

MUL     START              ; 32ビット×32ビット→32ビット
        RPUSH
        PUSH  0,GR3
        PUSH  0,GR2
        LD    GR2,1,GR2    ; 乗数下位語を取り出してGR2に設定
        CALL  MULS         ; 被乗数×乗数下位語→積(A)
        POP   GR2
        
        LAD   GR3,SV       ; 結果の格納先として作業領域を設定
        CALL  MULS         ; 被乗数×乗数上位語→積(B)
        
        POP   GR3
        ADDL  GR6,0,GR3    ; 積(A)の上位語と積(B)の下位語を加算
        ST    GR6,0,GR3
        RPOP
        RET
SV      DS    2
        END

d に関する解答群

ア LD  GR1,0,GR1        イ LD  GR1,0,GR2

ウ LD  GR1,1,GR1        エ LD  GR2,0,GR1

オ LD  GR2,0,GR2        力 LD  GR2,1,GR1

e に関する解答群

ア LD  GR6,0,GR1       イ LD  GR6,0,GR2

ウ LD  GR6,0,GR3       エ LD  GR6,1,GR1

オ LD  GR6,1,GR2       力 LD  GR6,1,GR3

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

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


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