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

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

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

〔プログラム1の説明〕

 文字列中の単語を切り出して,単語管理テーブルを作成する副プログラム GETTKN である。

(1) 文字列は英字,数字,空白文字のO文字以上の並びで,最後にピリオドが置かれる。 単語は,1文字以上の空白文字又はピリオドで区切られた英数字の並びである。 英字には,アルファベットの他に,ピリオド以外の記号を含むものとする。 文字列表記中の“△”は空白文字を示す。

(2) 単語管理テーブルには,文字列中に現れる単語ごとに,3語から成る要素を作成し, 単語の先頭アドレス,単語の長さ,単語の種別の順に格納する。種別は, 単語が数字だけから成るときは0,英字を含むときは1とする。単語の切出しが終了したとき, 単語管理テーブルの終端を示すマークとして −1 を格納する。

(3) 主プログラムは,文字列の先頭アドレスを GR1 に,単語管理テーブルの 先頭アドレスを GR2 に設定して,GETTKN を呼ぶ。

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

 副プログラム GETTKN の実行例を,図1に示す。

図1 副プログラム GETTKN の実行例

〔プログラム1〕

GETTKN  START
        RPUSH
        LD    GR3,=-1         ; 単語種別の初期化
        LAD   GR1,-1,GR1
LP      LAD   GR1,1,GR1
        LD    GR4,Ø,GR1       ; 文字を取り出す
        CPL   GR4,='.'
        JZE   FIN
        CPL   GR4,=' '
        JNZ   ALNUM
        CALL  SETTKN
        
ALNUM   LD    GR3,GR3         ; 単語の処理中?
        JPL   LP              ; 処理中の単語が英字を含む場合は LP ヘ
        JZE   ACHK            ; 処理中の単語が数字だけから成る場合は ACHK ヘ
        LD    GR3,=Ø          ; 次の単語の処理開始
                              ; 単語種別を“数字だけから成る”に設定
        LD    GR6,GR1         ; 先頭アドレスを退避
ACHK    CPL   GR4,='9'
        JPL   NEXT
        CPL   GR4,='Ø'
        JMI   NEXT
        JUMP  LP              ; 取り出した文字が数字の場合は LP ヘ
NEXT    LD    GR3,=1          ; 単語種別を“英字を含む”に設定
        JUMP  LP
FIN     CALL  SETTKN
        LD    GR5,=-1
        ST    GR5,Ø,GR2       ; 終端マークを格納
        RPOP
        RET
SETTKN  LD    GR3,Ø,GR3
        JMI   FIN2            ; 単語処理中でなければ何もしない
        ST    GR6,Ø,GR2       ; 単語の先頭アドレスを格納
        LD    GR5,GR1
        
        ST    GR5,1,GR2       ; 単語の長さを格納
        ST    GR3,2,GR2       ; 単語の種別を格納
        LD    GR3,=-1         ; 単語種別を初期化(処理中状態を解除)
        LAD   GR2,3,GR2
FIN2    RET
        END

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

a に関する解答群

ア JUMP  ACHK       イ JUMP  LP       ウ LAD  GR1,-1,GR1

エ LAD  GR1,1,GR1     オ LD  GR4,Ø,GR1       カ LD  GR4,1,GR1

b に関する解答群

ア ADDL  GR5,GR6       イ LAD  GR3,1,GR3       ウ SLL  GR3,1

エ SLL  GR5,1       オ  SRL  GR5,1       カ SUBL  GR5,GR6

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

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

基本情報技術者試験


設問2 次の文字列が与えられ,プログラム1のラベル NEXT が付いた命令を2度目に 実行した直後にGR4に設定されている文字として,正しい答えを,解答群の中から選べ。

解答群

ア 1       イ 2       ウ 3

エ A       オ B       カ C

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

基本情報技術者試験


設問3 GETTKN を使用して,指示に従い2数の和,差,積のいずれかを 求める副プログラム CALC を作成した。プログラム2中の に 入れる正しい答えを,解答群の中から選べ。

(1) 主プログラムは,文字列の先頭アドレスを GR1 に設定して,CALC を呼ぶ。 CALC は演算結果を GRØ に設定して呼出し元に戻る。文字列の形式を図2に示す。

図2 文字列の形式

(2) 数字文字列は 0 〜 65535 の整数(符号なしの数字文字列)で1文字以上の文字列とし, 演算子は加算(+),減算(−),乗算(*)を表す記号1文字とする。 演算はそれぞれ論理加算,論理減算,整数の乗算として実行し, 桁あふれは発生しないものとする。

(3) CALC は,GETTKN で切り出した数字だけから成る単語を2進数に変換するために, 別に用意された副プログラム DTOB を呼ぶ。

(4) DTOB は,数字文字列格納領域の先頭アドレスと文字列の長さが順に格納された2語から 成る領域の先頭アドレスが GR1 に設定されて,呼び出される。

 DTOB は数字文字列を2進数に変換し,GRØ に設定して呼出し元に戻る。

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

〔プログラム2〕

CALC    START
        RPUSH
        LAD   GR2,CTBL
        CALL  GETTKN
        
        CALL  DTOB             ; 数字文字列1を2進数に変換して
        LD    GR4,GRØ          ; GR4 に設定
        LD    GR1,3,GR2
        LD    GR3,Ø,GR1        ; GR3 ← 演算子の文字コード
        SUBL  GR3,='*'
        LAD   GR1,6,GR2
        CALL  DTOB             ; 数字文字列2を2進数に変換して
        LD    GR5,GRØ          ; GR5 に設定
        
        JUMP  Ø,GR3            ; 演算子で指定された処理にジャンプ
MULT    LD    GRØ,=Ø           ; 乗算
        LD    GR5,GR5
LP      JZE   FIN
        LD    GR3,GR5
        AND   GR3,=#ØØØ1       ; 乗数の最下位ビットのチェック
        JZE   NEXT
        ADDL  GRØ,GR4
NEXT    SLL   GR4,1            ; 被乗数を1ビット左論理シフト
        
        JUMP  LP
PLUS    ADDL  GR4,GR5          ; 加算
        LD    GRØ,GR4
        JUMP  FIN
MINUS   SUBL  GR4,GR5          ; 減算
        LD    GRØ,GR4
FIN     RPOP
        RET
CTBL    DS    1Ø               ; GETTKN 用単語管理テーブル
LTBL    DC    MULT             ; 演算の分岐先アドレステーブル
        DC    PLUS
        DS    1                ; ダミー
        DC    MINUS
        END

c に関する解答群

ア LAD  GR1,3,GR2       イ LD   GR1,Ø,GR2       ウ LD  GR1,CTBL

エ LD   GR1,GR2       オ LD   GR2,CTBL       カ LD  GR2,GR1

d に関する解答群

ア LAD  GR3,LTBL       イ LAD   GR3,LTBL,GR3       ウ LD  GR3,LTBL

エ LD   GR3,LTBL,GR3     オ SLL   GR3,1

e に関する解答群

ア ADDL  GRØ,GR5       イ ADDL   GR5,GR4       ウ LD  GR5,GR4

エ SLL   GR5,1        オ SRL   GR5,1

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

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

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


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