問題
問12 次のアセンブラプログラムの説明及びプログラムを読んで、設問1~3に答えよ。
(アセンブラ言語の仕様説明は、こちらを参照してください。)
〔プログラム1の説明〕
主プログラムから渡された二つの数字列(数字列1と数字列2)をそれぞれ正の10進数とみなして加算し、結果を数字列で返す副プログラムADDCである。二つの数字列の加算の例を図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〕