平成31年春期「問12 アセンンブラ」の感想

平成31年春期「問12 アセンンブラ」の感想

感想

ビットシフト操作を含む問題でした。

プログラムの難易度が高い時、プログラムのコメントが丁寧で、プログラムの説明も丁寧になる。今回はその状態だ。

問題には、
・穴埋め箇所周辺のプログラム理解だけで解ける問題
・広範囲のプログラム理解が必要な問題
が存在する。

「a」と「c」は、穴埋め箇所周辺のプログラム理解だけで解ける問題で、
「b」と「d」は、広範囲のプログラム理解が必要な問題です。

「e」と「f」は、問題そのものの理解が難しいですが、問われている内容が分れば、プログラムを理解することなく解ける問題です。

「b」と「d」は難しいかと思います。
「b」と「d」の解答を諦めて、他の問題に注力するのも手かと思います。

簡単な解説

「a」

1語が16bitなので、相対アドレスとビットインデックスは、下記の式で表されます。
・「相対アドレス=ビット位置÷16」
・「ビットインデックス=ビット位置%16」(%は剰余)
「÷16」は、右方向に4bitシフトすることで得られます。

「c」

穴埋め箇所の前の処理「LD GR4,GR4」のコメントに「未処理のビットあり?」と記載され、穴埋め箇所の後ろに「未操作のビット...」と記載されています。
これらの情報から、GR4が0なら「未操作のビット...」の処理をスキップするものと推測されます。

穴埋めされていないプログラムに、ラベル「FIN」への分岐箇所がないこともヒントになります。

「e」

新たに作成された新しい「BITSON」プログラムに「CALL BITSOP」と記述されている。

「f」

問題文に
「「BITSON」は、GR7に「BITSOP」内で実行される関数アドレスを設定」
と記述されている。
GR7を含む選択肢が候補となる。

「b」「d」

前後の処理から類推は難しい。
マスク値を作る方法は、
・汎用レジスタの最上位ビットに1を設定し、
・右方向に算術シフトし、
・必要ならEORでビット反転する。
をイメージしてしむのですが、
このプログラムでは、
・汎用レジスタの最下位ビットに1を設定し、
・左方向に算術シフトし、
・1を引く
という方法を採用しています。
下位3ビットをONにするには、以下のようにビット操作しています。
   0000 0000 0000 0001 (1設定)
   0000 0000 0000 1000 (左に3bitシフト)
   0000 0000 0000 0111 (-1)
上位3ビットをONにするには、更に以下のようにビット操作しています。
   1110 0000 0000 0000 (左に(16-0-3)bitシフト)

0 件のコメント:

コメントを投稿

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

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