+++ /dev/null
-MAIN START
- LD GR1,I
- LAD GR2,10
- LAD GR5,0
-LOOP CPA GR1,GR2
- JMI NEXT
- CALL DIV
- ADDA GR4,Z
- ST GR4,STR,GR5
- LAD GR5,1,GR5
- LD GR1,GR3
- JUMP LOOP
-NEXT ADDA GR1,Z
- ST GR1,STR,GR5
- LAD GR5,1,GR5
- ST GR5,LEN
- OUT STR,LEN
- LAD GR1,STR
- LD GR2,LEN
- CALL REV
-PRT OUT STR,LEN
- RET
-I DC 15342
-Z DC '0'
-STR DS 5
-LEN DS 1
- END
-;GR1をGR2で割ったときの商をGR3、剰余をGR4に格納
-DIV LD GR4,GR1
- LAD GR3,0
-DLOOP CPA GR4,GR2
- JMI DFIN
- SUBL GR4,GR2
- LAD GR3,1,GR3
- JUMP DLOOP
-DFIN RET
- END
-;アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
-;例: 12345 -> 54321
-REV START
- PUSH 0,GR3
- PUSH 0,GR4
- PUSH 0,GR5
- LAD GR3,1
-RPU CPA GR2,GR3
- JMI RNEXT
- LD GR4,GR1
- ADDA GR4,GR3
- LD GR4,-1,GR4
- PUSH 0,GR4
- LAD GR3,1,GR3
- JUMP RPU
-RNEXT LAD GR3,1
-RPO CPA GR2,GR3
- JMI PFIN
- POP GR4
- LD GR5,GR1
- ADDA GR5,GR3
- ST GR4,-1,GR5
- LAD GR3,1,GR3
- JUMP RPO
-PFIN POP GR5
- POP GR4
- POP GR3
- RET
- END