;Exam2012H24HaruSpring
;---------------------------
MAIN START
	LAD GR1,FIG1
	LAD GR2,FIG2
	LAD GR3,ANS
	LD GR4,LEN1
	LD GR5,LEN2
	CALL ADDC
	ST GR0,ALEN
	RET
FIG1 DC '9462'
FIG2 DC '673'
LEN1 DC 4
LEN2 DC 3
ANS  DS 7
ALEN DS 1
	END
;--------------------
ADDC START
	RPUSH
	CPA GR4,GR5   ; 文字数の比較
	JPL CONT
	PUSH 0,GR4    ;GR4 >= GR5 となるように
	LD GR4,GR5    ;数字列１と数字列２の
	POP GR5       ;ポインタの入れ替え
	PUSH 0,GR1;
	LD GR1,GR2;
	POP GR2;
CONT ADDA GR1,GR4 ;末桁のアドレスの次のアドレス
	ADDA GR2,GR5
	LD GR0,=0;
	PUSH 0
LOOP1 LAD GR2,-1,GR2  ;末桁のアドレス
	LD GR6,0,GR2     ;末桁の数字を取り出す
	AND GR6,=#000F   ;数値として取り出す
LOOP2 LAD GR1,-1,GR1
	ADDA GR6,0,GR1   ;１桁加算：数値と数字を加算して
	;数字としての加算結果を得る。
	ADDA GR6,GR0     ;桁上げフラグを加算
	CPA GR6,='9'     ;桁上げ？
	JPL CARRY
	LD GR0,=0      ;桁上げフラグをクリア
	JUMP NEXT
CARRY LD GR0,=1    ;桁上げフラグを設定
	SUBA GR6,=10   ; a 答え　ケ
NEXT PUSH 0,GR6    ;加算結果１桁を保存
	SUBA GR4,=1    ; b　答え　ア
	JZE END1
	SUBA GR5,=1    ; c　　答え　エ
	JPL LOOP1
	LD GR6,=0
	JUMP LOOP2
END1 LD GR0,GR0    ;左端を桁上げ？
	JZE NOCARRY
	LD GR1,='1' ;
LOOP3 ST GR1,0,GR3 ;左端に'1'を追加
	LAD GR3,1,GR3
NOCARRY POP GR1    ;加算結果１桁取り出し
	LD GR1,GR1
	JZE END2
	ADDA GR0,=1
	JUMP LOOP3
END2 RPOP
	RET
	END
;---------------------
