平成19年春期基本情報技術者試験午後問9、アセンブラ言語
- 2016/12/09
- 12:00
問題文、解答、解説の順で掲載しております。
無料から学べる講座
http://ai-light.com/itkeiei/
ニコニコチャンネル
http://ch.nicovideo.jp/ai-light
YouTubeチャンネル
https://www.youtube.com/user/ailightcom
Access・Excel倶楽部
http://ai-light.com/accessclub/
株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************
次のアセンブラプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
〔プログラムの説明〕
副プログラムSYMTSTは,16ビットからなるビット列が左右対称かどうかを検査するプログラムである。図に左右対称なビット列の例を示す。
1 0 1 1 0 1 0 1 | 1 0 1 0 1 1 0 1 |
図 左右対称なビット列の例
(1) ビット列はGR1に設定されて,主プログラムから渡される。
(2) ビット列が左右対称であればGR0に1を,そうでなければ0を設定して主プログラムに返す。
(3) 副プログラムから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。
〔プログラム〕
(行番号)
1 SYMTST START
2 RPUSH
3 LD GR3,=8
4 LD GR2,GR1
5 LOOP SLL GR1,1
6 JOV OFLOW
7 SRL GR2,1 ; 右端のビットは1か?
8 JOV NG ; 1であれば左右対称でない。
9 JUMP OK
10 OFLOW SRL GR2,1
11 { a }
12 NG LD GR0,=0 ; 左右対称でない。
13 JUMP FIN
14 OK SUBA GR3,=1
15 { b }
16 LD GR0,=1 ; 左右対称である。
17 FIN RPOP
18 RET
19 END
設問1 プログラム中の{ }に入れる正しい答えを, 解答群の中から選べ。
解答群
ア JMI LOOP イ JOV NG ウ JOV OFLOW
エ JOV OK オ JPL LOOP カ JZE LOOP
設問2 ビット列が図のとおりであった場合,行番号17のマクロ命令RPOPの実行直前に おけるGR2の内容として正しい答えを,解答群の中から選べ。
解答群

設問3 ビット列が次のとおりであった場合(▲で示されるビットが左右対称ではない場合), 行番号10のSRL命令は何回実行されるか。正しい答えを,解答群の中から選べ。

解答群
ア 1 イ 2 ウ 3 エ 4
**************************************************
無料から学べる講座
http://ai-light.com/itkeiei/
ニコニコチャンネル
http://ch.nicovideo.jp/ai-light
YouTubeチャンネル
https://www.youtube.com/user/ailightcom
Access・Excel倶楽部
http://ai-light.com/accessclub/
株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************
**************************************************
解答
設問1 答 aエ 答 bオ 設問2 答 イ 設問3 答 ウ
**************************************************
解説
1行目のSTARTは、プログラムの先頭を定義している。
2行目のRPUSHは、GRの内容をGR1,GR2,・・・・GR7の順でスタックに格納する。
3行目は、GR3に8をセットする。
4行目は、GR1の内容をGR2にセットする。左右対称かを検査するビット列をGR2にもセットすることになる。
5行目は、GR1を1ビット左に論理シフトする。
図の左右対称なビット列の例は1ビット左に論理シフト結果として、以下のようになる。
0101101011010110 OF・・・1
OFにはレジスタから最後に送り出されたビットの値が設定される。
6行目は、オーバーフロー分岐でOFが1の時に分岐を行い、10行目に処理が移動する。図の例では分岐が起こる。
同様にして、10行目でGR1を1ビット右に論理シフトする。
図の左右対称なビット列の例は以下のようになる。
0110101101011010 OF・・・1
OFにはレジスタから最後に送り出されたビットの値が設定される。
{ a }
10行目は5・6行目でOFに1がセットされている場合に処理が行われる。よって、10行目の結果もOFに1がセットされていると左右対称となり、14行目に処理が移動する。
よって、解答はエとなる。
11行目の結果、処理が14行目に移動する。
14行目で算術減算を行い、GR3の値をマイナス1引く。GR3はカウンタの役割をしており、3行目でGR3に初期値として8をセットしておき順次マイナスしていく。
{ b }
1回目の処理でビットが左右対称かを確認して、左右対称ならGR3を7にして、ループする。処理は8回確認する必要がありその時のGR3は0となる。GR3が0となれば処理を終了すればよい。よって、解答はオとなる。
6行目でOFLOWに分岐しない場合、つまりは5行目で論理左シフトした際にOFに0がセットされていた場合には、7行目に処理が移り、GR2を論理右シフトする。
8行目で、OFに1がセットされていた場合には、左右非対称であるから処理が12行目に移り、その後に処理が終了する。また、OFに0がセットされていた場合には、左右対称であるから処理が14行目に移り、処理が続くことになる。
17行目のRPOPは、スタックから順にデータを取り出しGR7, GR6,・・・・GR1の順にデータを格納する。
18行目のRETは、呼び出し元へ戻る。
19行目のENDは、プログラムの終わりであることを定義する。
設問2
上記の説明より、GR1は論理左シフトを順次行っていき、GR2は論理右シフトを順次行っていく。また、シフトは左右対称の場合には8回の比較が行われる。よって、解答はイとなる。
設問3
10行目の論理右シフト命令は、5行目でGR1を左シフトした際に、OF(レジスタから最後に送り出されたビットの値)が1の時に、6行目の分岐条件で10行目に処理が移動する。
さらに11行目でビット列が非対称であった場合には、12行目のNG内に処理が移り、処理が終了する。
よって、解答はウとなる。
参考:平成19年春期基本情報技術者試験午後問9
**************************************************
無料から学べる講座
http://ai-light.com/itkeiei/
ニコニコチャンネル
http://ch.nicovideo.jp/ai-light
YouTubeチャンネル
https://www.youtube.com/user/ailightcom
Access・Excel倶楽部
http://ai-light.com/accessclub/
株式会社アイライト公式HP
http://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)
**************************************************
- 関連記事
-
- 平成19年春期基本情報技術者試験午後問9、アセンブラ言語 (2016/12/09)
- 平成17年春期基本情報技術者試験午後問9、アセンブラ言語 (2016/11/21)