;Exam2013H25秋Prg1 数字列を数値に変換.txt
;-----------------------
MAIN START
	LAD GR1,M1
	CALL TOSEC
	ST GR0,SEC
	;-----------
	LAD GR1,MINSEC
	CALL TOSEC
	ST GR0,SEC2
	;----------------
	;以下は
	LD GR0,SEC
	LAD GR1,MS12
	CALL TOTIME
	;---------------
	LD GR0,SEC2
	LAD GR1,MINSEC2
	CALL TOTIME
	RET
M1 DC '2'
M2 DC '0'
S1 DC '3'
S2 DC '8'
SEC DS 1
MS12 DS 5
	;----------
MINSEC DC '2538'
SEC2 DS 1
MINSEC2 DS 5
	END
;------------------
;例えば１２３８秒を２０分３８秒に変換する。
TOTIME START
	RPUSH
	LD GR2,=3       ;ループ回数
	LAD GR3,VALUE2
LOOP3 LD GR4,0,GR3  ;ＧＲ４＜−−割る値
	LD GR5,=0
LOOP4 CPA GR0,GR4   ;ＧＲ０割るＧＲ４
	JMI NEXT
	ADDA GR5,=1
	SUBA GR0,GR4
	JUMP LOOP4
NEXT OR GR5,='0'    ;割り算結果の商を数値から数字に変換　
	;文字コードの規則性を利用している。参照：文字コード表
	ST GR5,0,GR1    ;答　カ
	LAD GR3,1,GR3
	LAD GR1,1,GR1
	SUBA GR2,=1
	JNZ LOOP3
	OR GR0,='0'    ; GR0の中に割り切れずに残った値
	;数値から数字に変換　参照：文字コード表
	ST GR0,0,GR1   ;　　　答　ア
	RPOP
	RET
VALUE2 DC 600,60,10
	END
;--------------------------------
;例えば２０分３８秒を１２３８秒に変換する。
TOSEC START
	RPUSH
	LD GR5,=0
	LD GR2,=4      ;ループ回数
	LAD GR3,VALUE1
LOOP1 LD GR0,0,GR1  ;ＧＲ０＜−−−時間の一桁
	AND GR0,=#000F  ;数値を取り出す
	ADDA GR0,GR5
	SUBA GR2,=1
	JZE FIN
	LD GR4,0,GR3  ;ＧＲ４＜−−−掛ける値
	LD GR5,=0
LOOP2 SRL GR4,1   ;以下でＧＲ０ＸＧＲ４を行う
	JOV INCR
	JNZ CONT   ;ゼロならば次の行を実行する　答え　イ
	LAD GR3,1,GR3
	LAD GR1,1,GR1
	JUMP LOOP1
INCR ADDA GR5,GR0
CONT SLL GR0,1
	JUMP LOOP2
FIN RPOP
	RET
VALUE1 DC 10,6,10
	END
;-------------------------
