base:exponentiation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
base:exponentiation [2020-04-25 21:32] – verz | base:exponentiation [2020-06-04 19:36] (current) – verz | ||
---|---|---|---|
Line 26: | Line 26: | ||
; | ; | ||
; .A exponent | ; .A exponent | ||
- | ; | ||
; | ; | ||
; algo: if .A=0 res=1 | ; algo: if .A=0 res=1 | ||
; if .A=1 res=B | ; if .A=1 res=B | ||
- | ; | + | ; |
- | ; | B*B if E=2 | + | ; | B if E=1 |
- | ; Exp(B,E)= | B*Exp(B, | + | ; Exp(B,E)= | B*Exp(B, |
- | ; |_ Exp(B, | + | ; |_Exp(B, |
; | ; | ||
; ************************************ | ; ************************************ | ||
Line 46: | Line 45: | ||
Exponent | Exponent | ||
- | | + | |
- | beq res1 | + | beq res1 ; is E==0 ? |
+ | lda B | ||
+ | lsr | ||
+ | ora B+1 | ||
+ | beq resB ; if B==0 or B==1 then result=B | ||
+ | txa | ||
cmp #1 | cmp #1 | ||
bne ExpSub | bne ExpSub | ||
- | resB lda #0 ; E=1, result=B | + | |
+ | resB lda #0 ; E==1 | B==1 | B==0, result=B | ||
sta P+2 | sta P+2 | ||
sta P+3 | sta P+3 | ||
Line 58: | Line 63: | ||
sta P+1 | sta P+1 | ||
rts | rts | ||
+ | |||
res1 sta P+1 ; E=0, result=1 | res1 sta P+1 ; E=0, result=1 | ||
sta P+2 | sta P+2 | ||
Line 65: | Line 71: | ||
rts | rts | ||
- | ExpSub | + | ExpSub |
- | beq Sqr ; E is 2 | + | beq resB ; E is 1 |
- | | + | |
bcs ExpOdd | bcs ExpOdd | ||
+ | |||
ExpEven jsr ExpSub | ExpEven jsr ExpSub | ||
- | ldx #$FC | + | ldx #$3 |
- | _ldP lda <p-252,x ; multiply P by itself | + | _ldP lda p,x |
- | sta <m-252,x ; P is the result of a previous mult | + | sta m,x |
- | sta <n-252,x ; copy P in M and N | + | sta n,x |
- | | + | |
- | | + | |
jmp Mult32 | jmp Mult32 | ||
- | ExpOdd | + | |
+ | ExpOdd | ||
jsr ExpSub | jsr ExpSub | ||
- | ldx #$FC | + | ldx #$4 |
- | _ldD lda <p-252,x ; multiply P by B | + | _ldD lda <p-1,x ; multiply P by B |
- | sta <m-252,x ; P is the result of a previous mult | + | sta <m-1,x ; P is the result of a previous mult |
- | | + | |
bne _ldD | bne _ldD | ||
lda B ; copy B in N | lda B ; copy B in N | ||
Line 91: | Line 98: | ||
stx N+2 | stx N+2 | ||
stx N+3 | stx N+3 | ||
- | jmp Mult32 | ||
- | Sqr lda B ; multiply B by itself | ||
- | sta M ; copy B in M and N | ||
- | sta N | ||
- | lda B+1 | ||
- | sta M+1 | ||
- | sta N+1 | ||
- | lda #0 | ||
- | sta M+2 | ||
- | sta M+3 | ||
- | sta N+2 | ||
- | sta N+3 | ||
jmp Mult32 | jmp Mult32 | ||
base/exponentiation.txt · Last modified: 2020-06-04 19:36 by verz