![]()
平成24年 春期 基本情報技術者 午後 問12
問12 CASL問12 次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラム1の説明〕 主プログラムから渡された二つの数字列(数字列1と数字列2)をそれぞれ正の 10 進数とみなして加算し, 結果を数字列で返す副プログラム ADDC である。二つの数字列の加算の例を図1に示す。 ![]() 図1 二つの数字列の加算の例 (1) 汎用レジスタ GR1 〜 GR5 には,それぞれ次の内容が設定されて,主プログラムから渡される。
GR1:数字列1の先頭アドレス GR2:数字列2の先頭アドレス GR3:結果領域の先頭アドレス GR4:数字列1の長さ(文字数) GR5:数字列2の長さ(文字数) (3) 結果の数字列は結果領域に格納し,長さ(文字数)は GR0 に設定して,主プログラムに返す。 (4) 数字列1と数字列2の長さ(文字数)は,それぞれ1以上とする。 (5) 数字列1と数字列2の左端の文字は,“0”でないものとする。 (6) 副プログラムから戻るとき,汎用レジスタ GR0 〜 GR7 の内容は元に戻す。 〔プログラム1〕 (行番号) 1 ADDC START 2 RPUSH 3 CPA GR4,GR5 4 JPL CONT 5 PUSH 0,GR4 ; 6 LD GR4,GR5 ; 7 POP GR5 ; GR4≧GR5 となるように 8 PUSH 0,GR1 ; 数字列1と数字列2のポインタ 9 LD GR1,GR2 ; を入替え 10 POP GR2 ; 11 CONT ADDA GR1,GR4 12 ADDA GR2,GR5 13 LD GR0,=0 ; 桁上げフラグを初期化 14 PUSH 0 ; スタックデータの終わりの印 15 LOOP1 LAD GR2,-1,GR2 16 LD GR6,0,GR2 17 AND GR6,=#000F 18 LOOP2 LAD GR1,-1,GR1 19 ADDA GR6,0,GR1 ; 1桁加算 20 ADDA GR6,GR0 ; 桁上げフラグを加算 21 CPA GR6,='9' ; 桁上げ? 22 JPL CARRY 23 LD GR0,=0 ; 桁上げフラグをクリア 24 JUMP NEXT 25 CARRY LD GR0,=1 ; 桁上げフラグを設定 26
設問1 プログラム1中の 解答群 エ SUBA GR5,=1 オ SUBA GR5,=9 カ SUBA GR5,=10 キ SUBA GR6,=1 ク SUBA GR6,=9 ケ SUBA GR6,=10
設問2 次の記述中の ![]()
図1の数字列1と数字列2を引数として副プログラム ADDC を実行した場合,
行番号 25 の LD 命令は 解答群
設問3 副プログラム ADDC を使用して,n 個 ( n ≧ 1 )の数字列を入力し, 総和を求めて数字列で出力するプログラム SUMC を作成した。n=5 の場合の例を図2に示す。
プログラム2中の なお,入力される数字列,総和は 256 桁以内に収まるものとする。
![]() 図2 数字列1〜5の総和の例 〔プログラム2〕 SUMC START LAD GR1,BUF1 ; 数字列1のポインタを設定 IN BUF1,LEN1 ; 最初の数字列を入力し数学列1とする LD GR4,LEN1 ; 数字列1の長さを設定 LAD GR3,BUF3 ; BUF3 を総和の領域として設定 LAD GR2,BUF2 ; 数字列2のポインタを設定 LOOP IN BUF2,LEN2 ; 次の数字列を入力し数字列2とする LD GR5,LEN2 ; 数字列2の長さを設定 JMI FIN1 ; 入力終了 CALL ADDC 解答群 エ LD GR3,GR0 オ LD GR4,GR0 カ LD GR5,GR0
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|