;Exam2011H23秋Prg2（私家版）
;３２ビット符号なし１０進数整数の
;l減算を用いた割り算
;---------------------
MAIN START
	LD GR1,VALHI
	LD GR2,VALLOW
	LAD GR3,DIVHI
	CALL DIV
	ST GR1,ANSHI
	ST GR2,ANSLOW
	ST GR4,AMARIHI
	ST GR5,AMARILOW
;-----------------------------
	LD GR1,VALHI
	LD GR2,VALLOW
	LAD GR3,VALSTR
	CALL BTOD2
;-----------------------------
	LD GR1,DIVHI
	LD GR2,DIVLOW
	LAD GR3,DIVSTR
	CALL BTOD2
;-----------------------------
	LD GR1,ANSHI
	LD GR2,ANSLOW
	LAD GR3,ANSSTR
	CALL BTOD2
;-----------------------------
	LD GR1,AMARIHI
	LD GR2,AMARILOW
	LAD GR3,AMARISTR
	CALL BTOD2
	RET
VALHI 	DC #0000    ;被除数上位１６ビット
VALLOW 	DC #054D   ;被除数下位１６ビット
DIVHI 	DC #0000   ; 除数の上位１６ビット
DIVLOW 	DC #0005 ;除数の下位１６ビット
ANSHI 	DS 1        ;商上位１６ビット
ANSLOW DS 1        ;商下位１６ビット
AMARIHI DS 1      ;余り上位１６ビット
AMARILOW DS 1     ;余り下位１６ビット
VALSTR 	DS 5
DIVSTR 	DS 5
ANSSTR 	DS 5 
AMARISTR DS 5
	END
;------------------------
BTOD2 START
	RPUSH
	LD GR6,GR3
	LAD GR7,4,GR3
	LAD GR3,UDAT   ;除数の初期設定
LP 	CALL DIV
	OR GR2,='0'    ;答え　イ
	ST GR2,0,GR6   ;１０進数字１文字格納　
	CPL GR6,GR7
	JZE FIN
	LAD GR6,1,GR6
	LD GR1,GR4     ;被除数の再設定
	LD GR2,GR5
	LAD GR3,2,GR3  ;答え　イ
	JUMP LP
FIN 	RPOP
	RET
UDAT 	DC 0
	DC 10000
	DC 0
	DC 1000
	DC 0
	DC 100
	DC 0
	DC 10
	DC 0
	DC 1
	END
;----------------------------

DIV START ;　減算を用いた３２ビット除算
	PUSH 0,GR6
	PUSH 0,GR7
	LD GR6,GR1 　　;被除数上位１６ビット
	LD GR7,GR2 　　;被除数下位１６ビット
	LD GR1,=#FFFF  ;商の初期化
	LD GR2,=#FFFF
LP 	LD GR4,GR6	　　　; GR1
	LD GR5,GR7 　　;GR2
	ADDL GR2,=1    ;商のカウントアップ
	JOV ADJ1
	JUMP CONT
ADJ1 	ADDL GR1,=1    ;a 答え　イ
CONT 	SUBL GR6,0,GR3
	JOV FIN
	SUBL GR7,1,GR3
	JOV ADJ2        ; b 答え　ウ
	JUMP LP
ADJ2 	SUBL GR6,=1
	JOV FIN
	JUMP LP
FIN 	POP GR7
	POP GR6
	RET
	END
;---------------------
