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

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

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

 

〔プログラム1の説明〕

 64 ビット符号なし整数の加算を行う副プログラム ADD64 である。 64 ビット符号なし整数の主記憶への格納方法を,図1に示す。

 

図1 64 ビット符号なし整数の主記憶への格納方法

 

(1) GR1 及び GR2 には,それぞれ次の内容が設定されて,主プログラムから渡される。 GR1,GR2: 加算の対象となる二つの 64 ビット符号なし整数を格納する領域の 先頭アドレス。各領域はそれぞれ連続した4語から成る。  ここで,GR1 と GR2 の値が等しい場合を除き,GR1 と GR2 が 指し示す領域は重ならないものとする。

(2) 副プログラム ADD64 は,GR1 に設定されたアドレスから始まる連続した4語の領域に, 加算の結果を格納する。このとき,桁あふれは発生しないものとする。

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

 

〔プログラム1)

(行番号)

 1  ADD64    START
 2           RPUSH
 3           LD     GRØ,=Ø
 4           LAD    GR3,3,GR1
 5           LAD    GR4,3,GR2
 6  LOOP     LD     GR5,=Ø
 7           ADDL   GRØ,Ø,GR3
 8           JOV    OV1
 9           JUMP   NOV1
1Ø  OV1      
11  NOV1     ADDL   GRØ,Ø,GR4
12           JOV    OV2
13           JUMP   NOV2
14  OV2      
15  NOV2     ST     GRØ,Ø,GR3
16           LD     GRØ,GR5
17           
18           JZE    EXIT
19           SUBL   GR3,=1
2Ø           SUBL   GR4,=1
21           
22  EXIT     RPOP
23           RET
24           END

 

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

 

a,b に関する解答群 ア AND  GR5,=1       イ CPL  GR3,=Ø       ウ CPL  GR3,GR1

エ CPL  GR3,GR2       オ LD  GR5,=1

 

c に関する解答群 ア JOV  LOOP       イ JUMP  LOOP       ウ JZE  LOOP
解答 a ←クリックすると正解が表示されます

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

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

基本情報技術者試験


設問2  次の記述中の に入れる正しい答えを, 解答群の中から選べ。

 GR1 及び GR2 に設定したアドレスから始まる連続した4語の領域に, 図2のとおりに値を格納して副プログラム ADD64 を実行したとき, 行番号7の命令を2回目に実行した後の GRØ の値は である。

 

図2 主記憶に格納した値

 

d に関する解答群 ア #ØØØØ       イ #ØØØ1       ウ #2EØC

エ #2EØD       オ #3F1D       カ #3F1E

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

基本情報技術者試験


設問3  副プログラム ADD64 を使用して,32 ビット符号なし整数の乗算を 行う副プログラム MUL32 を作成した。 プログラム2中の に入れる正しい答えを,解答群の中から選べ。

 

〔プログラム2の説明〕

(1) 32 ビット符号なし整数の主記憶への格納方法を,図3に示す。

 

図3 32 ビット符号なし整数の主記憶への格納方法

 

(2) GR1 〜 GR3 には,それぞれ次の内容が設定されて,主プログラムから渡される。 GR1,GR2:乗算の対象となる二つの 32 ビット符号なし整数を格納する領域の 先頭アドレス。各領域はそれぞれ連続した2語から成る。

GR3:乗算結果となる 64 ビット符号なし整数を格納する領域の先頭アドレス。 領域は連続した4語から成る。

 ここで,GR1,GR2 及び GR3 が指し示す領域は互いに重ならないものとする。

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

 

〔プログラム2〕
MUL32     START
          RPUSH
          LAD   GR7,TEMP    ; 初期化
          LD    GRØ,Ø,GR1   ;  GR1 から始まる2語の領域の値を,
          ST    GRØ,2,GR7   ;  TEMP から始まる4語の領域のうちの
          LD    GRØ,1,GR1   ;  下位2語に格納
          ST    GRØ,3,GR7
          LD    GRØ,=Ø
          ST    GRØ,Ø,GR7   ;  TEMP から始まる4語の領域のうちの
          ST    GRØ,1,GR7   ;  上位2語に格納
          ST    GRØ,Ø,GR3
          ST    GRØ,1,GR3   ;  GR3 から始まる4語の領域の値に Ø を格納
          ST    GRØ,2,GR3
          ST    GRØ,3,GR3
          LD    GR5,=Ø      ; ループカウンタ
          LD    GR4,GR2     ; GR2 の値を GR4 に退避
LOOP      LD    GR6,GR5
          SUBL  GR6,=16
          
          LD    GRØ,Ø,GR2
          SRL   GRØ,Ø,GR6
          JUMP  TESTBIT
LOWORD    LD    GRØ,1,GR2
          SRL   GRØ,Ø,GR5
TESTBIT   AND   GRØ,=#ØØØ1
          JZE   EXITLOOP
          LD    GR1,GR3
          LAD   GR2,TEMP
          CALL  ADD64
EXITLOOP  CPL   GR5.=31
          JZE   EXIT
          ADDL  GR5,=1
          LAD   GR1,TEMP
          
          CALL  ADD64
          LD    GR2,GR4    ; GR4 に退避した値を GR2 に復帰
          JUMP  LOOP
EXIT      RPOP
          RET
TEMP      DS    4
          END

 

e,f に関する解答群 ア JMI  LOWORD       イ JNZ  LOWORD       ウ JPL  LOWORD

エ JZE  LOWORD       オ LAD  GR2,TEMP       カ LD  GR2,=1

キ LD  GR2,GR3       ク LD  GR2,TEMP

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

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


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