問題

問12 次のアセンブラプログラムの説明及びプログラムを読んで、設問1~3に答えよ。
 (アセンブラ言語の仕様説明は、こちらを参照してください。)

〔プログラム1の説明〕

 主プログラムから渡された二つの数字列(数字列1と数字列2)をそれぞれ正の10進数とみなして加算し、結果を数字列で返す副プログラムADDCである。二つの数字列の加算の例を図1に示す。

図1 二つの数字列の加算の例
図1 二つの数字列の加算の例

(1)汎用レジスタGR1~GR5には、それぞれ次の内容が設定されて、主プログラムから渡される。

  GR1 : 数字列1の先頭アドレス
  GR2 : 数字列2の先頭アドレス
  GR3 : 結果領域の先頭アドレス
  GR4 : 数字列1の長さ(文字数)
  GR5 : 数字列2の長さ(文字数)

(2)数字は1語に1文字格納する。

(3)結果の数字列は結果領域に格納し、長さ(文字数)はGR0に設定して、主プログラムに返す。

(4)数字列1と数字列2の長さ(文字数)は、それぞれ1以上とする。

(5)数字列1と数字列2の左端の文字は“0”でないものとする。

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

〔プログラム1〕

プログラム1
[画像のクリックで拡大表示]