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

平成16年 秋期 基本情報技術者 午後 問13
問13   CASL

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

〔プログラムの説明〕

副プログラム TIME は,時刻1と時刻2の差を求める。 ここで,時刻は図1に示す形式の文字列とする。

h h m m s s

  図1 時刻の形式

hh は時,mm は分,ss は秒を表す。 00 ≦ hh ≦ 24,00 ≦ mm ≦ 59,00 ≦ ss ≦ 59とする。

(1) GR1 〜 GR3 には,それぞれ次の内容が設定されて,主プログラムから呼ばれる。

 GR1 : 時刻1の先頭アドレス

 GR2 : 時刻2の先頭アドレス

 GR3 : 結果(時刻2− 時刻1)を格納する領域の先頭アドレス

(2) 時刻1と時刻2は同一日付の時刻とし,000000 ≦ 時刻1< 時刻2≦ 240000 である。

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

基本情報技術者試験


〔プログラム〕

(行番号)
 1   TIME     START
 2            RPUSH
 3            LD      GR4,=5      ; ループカウンタ
 4            LD      GR7,=0      ; 下位けたへのけた下がりの調整値
 5            ADDL    GR1,GR4     ; GR1 ←時刻 1 の最終けたのアドレス
 6            ADDL    GR2,GR4     ; GR2 ←時刻 2 の最終けたのアドレス
 7            ADDL    GR3,GR4
 8   LOOP     LD      GR5,0,GR1   ; GR5 ←時刻 1 の 1 けた
 9            LD      GR6,0,GR2   ; GR6 ←時刻 2 の対応けた
10            SUBA    GR6,GR7     ; 下位けたへのけた下がりの調整
11            CPA     GR6,GR5
12            
13            LD      GR7,=0
14            JUMP    CALC
15   ADJUST   ADDA    GR6,ADD,GR4 ; 上位けたの 1 に相当する値を加算
16            
17   CALC     SUBA    GR6,GR5
18            OR      GR6,='0'    ; 文字コードに変換
19            ST      GR6,0,GR3
20            SUBA    GR4,=1
21            JMI     FINISH
22            LAD     GR1,-1,GR1
23            LAD     GR2,-1,GR2
24            LAD     GR3,-1,GR3
25            JUMP    LOOP
26   FINISH   RPOP
27            RET
28   ADD      DC      0,10,6,10,6,10
29            END

基本情報技術者試験


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

解答群

ア ADDA GR7,=1    イ JMI ADJUST

ウ JNZ ADJUST    エ JPL ADJUST

オ JZE ADJUST    カ LD GR7,=-1

キ LD GR7,=1    ク SUBA GR7,=1

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

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

基本情報技術者試験


設問2 時刻1と時刻2が次のとおりであるとき,行番号 15 の ADDA 命令は何回実行されるか。 正しい答えを,解答群の中から選べ。

   時刻 1: 143726

   時刻 2: 170125

解答群

ア 1    イ 2    ウ 3    エ 4    オ 5

カ 6

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

基本情報技術者試験


設問3 次に示す形式の8文字からなる時刻を処理できるように, 副プログラム TIME の行番号 3 と行番号 28 を変更した。 に入れる正しい答えを,解答群の中から選べ。

h h m m s s d d

ここで,dd は百分の一秒を表す。00 ≦ dd ≦ 99 とする。1日の終わりは
24000000 である。

〔プログラムの変更〕

(行番号)

解答群

ア 6,6     イ 6,10     ウ 10,6     エ 10,10

オ 10,100    カ 100,10    キ 100,100

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

基本情報技術者試験


設問4 副プログラム TIME(設問3による変更の前)を使用して, 駅伝競走のある区間の最高タイム(最小の所要時間)とそのチーム番号を出力する副プログラム
EKIDEN を作成した。 プログラム中の に入れる正しい答えを,解答群の中から選べ。

(1) チーム数は9で,チーム番号は1〜9である。

(2) 図2に示すとおりに設定された領域の先頭アドレスが GR1 に格納されて,主プログラムから呼ばれる。 図2のスタート時刻とゴール時刻は,図1に示す形式とする。

     図2 副プログラム EKIDEN の引数

(3) 出力形式は次のとおりとする。

n△hhmmss

n はチーム番号を表す文字,△ は間隔文字とする。

(4) 同タイムのチームが複数ある場合は,同タイムのチームのうち最小のチーム番号を出力する。

(5) 全チームとも,スタートした日のうちにゴールするものとする。

(6) 副プログラム EKIDEN から戻るとき,GR1 〜 GR7 の内容は元に戻す。

EKIDEN  START
        RPUSH
        LD     GR7,=5       ;最高タイムの初期値を設定
INIT    LD     GR0,MAX,GR7  ;   ”
        ST     GR0,BEST,GR7 ;   ”
        SUBA   GR7,=1       ;   ”
        JMI    BEGIN        ;   ”
        JUMP   INIT         ;   ”
BEGIN   LD     GR7,='1'     ;チーム番号
LOOP1   LAD    GR4,BEST     ; 最高タイム
        LAD    GR3,CTIME    ; 処理中のチームのタイムを設定する領域
        LAD    GR2,6,GR1    ; 処理中のチームのゴール時刻
        CALL   TIME         ; 処理中のチームのタイムを計算
        LD     GR5,=6       ; ループカウンタ
LOOP2   LD     GR0,0,GR3
        CPL    GR0,0,GR4    ; 処理中のチームのタイムと最高タイムを比較
        
        JPL    NEXT         ; 処理中のチームのタイム > 最高タイム
        LAD    GR3,1,GR3    ; 処理中のチームの次のけた
        LAD    GR4,1,GR4    ; 最高タイムの次のけた
        SUBA   GR5,=1
        JNZ    LOOP2
        JUMP   NEXT         ; 処理中のチームのタイム = 最高タイム
REP     ST     GR0,0,GR4    ;  処理中のチームのタイムを
        LAD    GR3,1,GR3    ;         最高タイムとする
        LAD    GR4,1,GR4    ;    ”
        LD     GR0,0,GR3    ;    ”
        SUBA   GR5,=1       ;    ”
         ;    ”
        ST     GR7,TEAM     ; 処理中のチームの番号を出力領域に設定
NEXT    CPA    GR7,='9'     ; 全チームの処理終了?
        JZE    FIN
        LAD    GR1,12,GR1   ; ポインタを次のチームへ進める
        ADDA   GR7,=1       ; チーム番号を表す文字コードに 1 を加算
        JUMP   LOOP1
FIN     OUT    TEAM,LENG
        RPOP
        RET
LENG    DC     8
TEAM    DS     1
        DC     ' '
BEST    DS     6
MAX     DC     '999999'
CTIME   DS     6
        END

解答群

ア JMI LOOP1    イ JMI REP     ウ JPL LOOP1

エ JPL REP     オ JZE LOOP1    カ JZE REP

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

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


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