Happy numbers: Difference between revisions
Content deleted Content added
Not a robot (talk | contribs) Add Miranda |
Not a robot (talk | contribs) Add MACRO-11 |
||
Line 4,322: | Line 4,322: | ||
1 |
1 |
||
7 |
7 |
||
10 |
|||
13 |
|||
19 |
|||
23 |
|||
28 |
|||
31</pre> |
|||
=={{header|MACRO-11}}== |
|||
<syntaxhighlight lang="macro11"> .TITLE HAPPY |
|||
.MCALL .TTYOUT,.EXIT |
|||
HAPPY:: MOV #^D8,R5 ; 8 HAPPY NUMBERS |
|||
CLR R4 |
|||
1$: INC R4 |
|||
MOV R4,R0 |
|||
JSR PC,CHECK |
|||
BNE 1$ |
|||
MOV R4,R0 |
|||
JSR PC,PR0 |
|||
SOB R5,1$ |
|||
.EXIT |
|||
; CHECK IF R0 IS HAPPY: ZERO FLAG SET IF TRUE |
|||
CHECK: MOV #200,R1 |
|||
MOV #3$,R2 |
|||
1$: CLR (R2)+ |
|||
SOB R1,1$ |
|||
2$: INCB 3$(R0) |
|||
JSR PC,SUMSQ |
|||
TST 3$(R0) |
|||
BEQ 2$ |
|||
DEC R0 |
|||
RTS PC |
|||
3$: .BLKW 200 |
|||
; LET R0 = SUM OF SQUARES OF DIGITS OF R0 |
|||
SUMSQ: CLR R2 |
|||
1$: MOV #-1,R1 |
|||
2$: INC R1 |
|||
SUB #12,R0 |
|||
BCC 2$ |
|||
ADD #12,R0 |
|||
MOVB 3$(R0),R0 |
|||
ADD R0,R2 |
|||
MOV R1,R0 |
|||
BNE 1$ |
|||
MOV R2,R0 |
|||
RTS PC |
|||
3$: .BYTE ^D 0,^D 1,^D 4,^D 9,^D16 |
|||
.BYTE ^D25,^D36,^D49,^D64,^D81 |
|||
; PRINT NUMBER IN R0 AS DECIMAL. |
|||
PR0: MOV #4$,R1 |
|||
1$: MOV #-1,R2 |
|||
2$: INC R2 |
|||
SUB #12,R0 |
|||
BCC 2$ |
|||
ADD #72,R0 |
|||
MOVB R0,-(R1) |
|||
MOV R2,R0 |
|||
BNE 1$ |
|||
3$: MOVB (R1)+,R0 |
|||
.TTYOUT |
|||
BNE 3$ |
|||
RTS PC |
|||
.ASCII /...../ |
|||
4$: .BYTE 15,12,0 |
|||
.END HAPPY</syntaxhighlight> |
|||
{{out}} |
|||
<pre>1 |
|||
7 |
|||
10 |
10 |
||
13 |
13 |