アセンブラ 過去問の解き方(平成28年度秋期)

設問1のa

問われている内容は?

穴埋め箇所に適する命令は?(要素走査)

3
4
5
6
7
8
9
10
       LD    GR4,GR2      ;GR4←n
LP     LD    GR2,0,GR1    ;次の要素をたどる
       JZE   FIN          ;n>N?
       SUBA  GR4,=1
       JZE   NEXT         ;要素nに達したか?
       [  a  ]
       JUMP  LP
NEXT   LD    GR3,LTBL,GR3

JMI FIN
LAD GR1,1,GR1
LAD GR4,1,GR4
LD GR1,GR2
LD GR1,0,GR2

穴埋め箇所の前後の処理、解答群からの推測

穴埋め箇所の前後の処理や解答群から、解答が絞りにくいので、〔プログラムの説明〕から処理を推測してみます。

〔プログラムの説明〕からの処理を推測

〔プログラムの説明〕から穴埋め箇所の処理を推測します。
推測される処理は、
次のリストのアドレス(GR2)を現リストのアドレス(GR1)とする。
です。
この処理に該当する選択肢は、「LD GR1,GR2」です。

3
4
5
6
7
8
9
10
       LD    GR4,GR2   ;要素n番目
LP     LD    GR2,0,GR1 ;次アドレスを取得
       JZE   FIN        ;現アドレスが0?
       SUBA  GR4,=1     ;要素番号減算
       JZE   NEXT       ;要素nに達したか?
       [  a  ]          ;次アドレスを現アドレスとする
       JUMP  LP         ;
NEXT   LD    GR3,LTBL,GR3

講評

設問1aではイと誤って解答した受験者が多く見受けられた。
また、ウ又はオと誤って解答した受験者が見受けられた。
GR1GR2の役割と要素をたどる"という操作の意味が理解できれば、正答できた。

設問1のb


問われている内容は?

穴埋め箇所に適する命令は?(要素挿入)

12
13
14
15
16
17
LINS   LD    GR4,GR2
       CALL  EGET      ;GR2←挿入される要素の先頭アドレス
       [  b  ]
       ST    GR4,0,GR2 ;挿入される要素の1語目を設定
       ST    GR0,1,GR2
       JUMP  FIN

LD GR4,0,GR1
LD GR4,0,GR2
ST GR2,0,GR1
ST GR2,0,GR2
ST GR4,0,GR1
ST GR4,0,GR2

穴埋め箇所の前後の処理、解答群からの推測

穴埋め箇所の前後の処理や解答群から、解答が絞りにくいので、〔プログラムの説明〕から処理を推測してみます。

〔プログラムの説明〕からの処理を推測

穴埋め箇所は、リスト挿入時の処理の一部です。
ソースをトレースして、獲得した領域をリストに挿入する処理に不足がないかを確認します。
推測される処理は、
現要素の次アドレスに新アドレス(GR2)設定する。
です。
GR2を設定する選択肢は、「ウ ST GR2,0,GR1」「エ ST GR2,0,GR2」です。
「エ ST GR2,0,GR2」は、GR2GR2+0に設定しているので除外され、「 ST GR2,0,GR1」が正解となります。

12
13
14
15
16
17
LINS   LD    GR4,GR2  ;現要素の次アドレス取得
       CALL  EGET      ;GR2←挿入される要素の先頭アドレス
       [  b  ] ;現要素の次アドレスに新アドレス設定
       ST    GR4,0,GR2 ;新要素に次アドレス格納
       ST    GR0,1,GR2 ;新要素に挿入値を格納
       JUMP  FIN

[行番号12]実行後

要素の最終


GR1
GR4=GR2=0



N


[行番号13]実行後

要素の最終

新規リスト
GR1
GR4=0
GR2→


N


[行番号14]実行後

要素の最終

新規リスト
GR1
GR2
GR2→


N


[行番号15,16]実行後

要素の最終

新規リスト
GR1
GR2
GR2→
GR4=0

N

GR0

講評

bではア又はイと誤って解答した受験者が見受けられた。
直前の命令で、GR2に、新たに挿入される要素の先頭アドレスが得られていることに気がつけば、正答できた。

設問1のc


問われている内容は?

穴埋め箇所に適する命令は?(要素削除)

18
19
20
LDEL   [  c  ]            ;GR4←要素n+1の先頭アドレス
       ST    GR4,0,GR1    ;要素n-11語目を再設定
       CALL  EFREE        ;削除された要素nの領域を解放

LD GR4,0,GR1
LD GR4,0,GR2
LD GR4,2,GR1
LD GR4,2,GR2
LD GR4,GR1
LD GR4,GR2

穴埋め箇所は、リスト削除時の処理の一部です。
ソースをトレースして、リストから削除する処理に不足がないかを確認します。
推測される処理は、
削除する要素の次アドレスをGR4に設定する。
です。
0番目にアドレスが格納されていることから、「ア LD GR4,0,GR1」「イ LD GR4,0,GR2」に絞られます。
行番号19のコメントより、GR1は削除要素の一つ前の要素アドレスなので、「ア LD GR4,0,GR1」は除外され、「 LD GR4,0,GR2」が正解となります。

[行番号18]実行前

N-1番目orROOT

N番目

N+1番目
GR1
要素nの領域アドレス
GR2
要素n+1の領域アドレス



N-1

N


[行番号18]実行後

N-1番目orROOT

N番目

N+1番目
GR1
要素nの領域アドレス
GR2
要素n+1の領域アドレス(=GR4)
GR4


N-1

N


[行番号19]実行後

N-1番目orROOT

N番目

N+1番目
GR1
要素n+1の領域アドレス(=GR4)
GR2
要素n+1の領域アドレス
GR4


N-1

N



講評

cではウ又はエと誤って解答した受験者が見受けられた。
ここでも、GR2の役割が理解できれば、正答できた。

設問2


問われている内容は?

プログラムのトレース結果

12
13
14
15
16
17
LINS   LD    GR4,GR2  ;現要素の次アドレス取得
       CALL  EGET      ;GR2←挿入される要素の先頭アドレス
       [  b  ] ;現要素の次アドレスに新アドレス設定
       ST    GR4,0,GR2 ;新要素に次アドレス格納
       ST    GR0,1,GR2 ;新要素に挿入値を格納
       JUMP  FIN

挿入する要素の先頭アドレス
要素2の先頭アドレス
要素3の先頭アドレス
O

〔プログラムの説明〕を確認

「n番目に挿入」とあるが、どこに挿入されるか再確認する。
(3)の②に、「挿入された要素がn番目になるように挿入される」と記述されています。
本問の場合、既存の要素2と要素3の間に要素が挿入されます。

トレースしてみる

既に「設問1のb」にてトレース済で、GR2には次の要素のアドレスが格納されることが分っている。
正解は、「ウ 要素3の先頭アドレス」になる。

[行番号12]実行後

N

N+1
GR1
GR2=GR4=N+1のアドレス
GR2=GR4→


N



講評

設問2では、ア又はイと誤って解答した受験者が見受けられた。
GR2は、但し、GR4に退避された後、行番号15で新たに挿入される要素の1語目が設定されることに気がつけば、正答できた。

設問3


問われている内容は?

プログラムのトレース結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MAIN   START
       LD    GR0,=1       ;挿入する値
       LD    GR2,=3       ;3番目となるように挿入
       LD    GR3,=0       ;挿入指示
       LAD   GR1,ROOT     ;ROOTアドレス
       CALL  LPROC
       LD    GR0,=2       ;挿入する値
       CALL  LPROC        ;3番目となるように挿入
       LD    GR3,=1       ;削除指示
       CALL  LPROC        ;3番目を削除
       RET
ROOT   DC    LIST
LIST   DC    E3,#000A     ;リストの最初の要素(要素1
E1     DC    E2,#000B
E2     DC    #0000,#000D  ;リストの最後の要素
E3     DC    E1,#000C
       END

α1
α2
E1
E2
0



トレースして操作内容を把握する

操作内容は以下のとおりです。
1.   3番目に挿入
2.   3番目に挿入
3.   3番目を削除

初期状態

LIST

E3

E1

E2

E3

E1

E2

#0000

#000A

#000C

#000B

#000D
3番目挿入後

LIST

E3

α1

E1

E2

E3

α1

E1

E2

#0000

#000A

#000C

#0001

#000B

#000D
3番目挿入後

LIST

E3

α2

α1

E1

E2

E3

α2

α1

E1

E2

#0000

#000A

#000C

#0001

#0001

#000B

#000D
3番目削除後

LIST

E3



α1

E1

E2

E3

α1



E1

E2

#0000

#000A

#000C



#0001

#000B

#000D

正解は、「アα1」になります。

講評

設問3では、オ以外に解答が分散した。
主記憶上に展開されたリストを、図示するなどの工夫をしてイメージできれば、正答できた。


0 件のコメント:

コメントを投稿

基本情報技術者試験 アセンブラ(CASL) 原稿 20210529

  基本情報技術者試験 アセンブラ(CASL) 簡単に5割 平成21年春期,平成21年秋期 平成21春期 平成21秋期 平成22春期 平成22秋期 平成21春期 概要 解き方 設問1-a 設問1-b 設問1-c 設問2-d...