Initial commit
This commit is contained in:
parent
89613a8bec
commit
4eae6e7023
24
long_xadd.c
Normal file
24
long_xadd.c
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
|
||||
|
||||
void long_xadd() __naked
|
||||
{
|
||||
__asm
|
||||
.globl long_xadd
|
||||
.globl long_xaddc
|
||||
long_xadd:
|
||||
clr c
|
||||
long_xaddc:
|
||||
movx a,@r1
|
||||
mov b,a
|
||||
movx a,@r0
|
||||
addc a,b
|
||||
movx @r0,a
|
||||
inc r0
|
||||
inc r1
|
||||
djnz r7,long_xaddc
|
||||
ret
|
||||
__endasm;
|
||||
}
|
||||
|
||||
|
69
long_xdiv.c
Normal file
69
long_xdiv.c
Normal file
@ -0,0 +1,69 @@
|
||||
#include "mc8051fun.h"
|
||||
|
||||
/*
|
||||
* r0 = numerator
|
||||
* r1 = denominator
|
||||
* r2 = quotient (result)
|
||||
* r3 = rest
|
||||
* r7 = length in bytes
|
||||
*/
|
||||
void long_xdiv() __naked
|
||||
{
|
||||
__asm
|
||||
.globl long_xdiv
|
||||
long_xdiv:
|
||||
|
||||
mov r5,AR7 ;#0x01
|
||||
push AR0
|
||||
mov r0,AR3
|
||||
lcall long_xset_zero
|
||||
pop AR0
|
||||
|
||||
mov r4,AR1
|
||||
clr c
|
||||
mov a,r0
|
||||
addc a,r5 ;#DIGITS-1
|
||||
mov r0,a
|
||||
003$:
|
||||
movx a,@r0
|
||||
mov r6,#8
|
||||
002$:
|
||||
rlc a
|
||||
push ACC
|
||||
push AR0
|
||||
|
||||
mov r0,AR3 ;#_rest
|
||||
mov r7,AR5 ;#DIGITS
|
||||
lcall long_xrlc
|
||||
|
||||
mov r0,AR3 ;#_rest
|
||||
; mov r1,#_val1
|
||||
mov r7,AR5 ;#DIGITS
|
||||
push AR1
|
||||
lcall long_xsub
|
||||
pop AR1
|
||||
|
||||
jnc 001$
|
||||
mov r0,AR3 ;#_rest
|
||||
; mov r1,#_val1
|
||||
mov r7,AR5 ;#DIGITS
|
||||
push AR1
|
||||
lcall long_xadd
|
||||
pop AR1
|
||||
setb c
|
||||
001$:
|
||||
cpl c
|
||||
mov r0,AR2 ; #_result
|
||||
mov r7,AR5 ;#DIGITS
|
||||
lcall long_xrlc
|
||||
|
||||
pop AR0
|
||||
pop ACC
|
||||
djnz r6,002$
|
||||
djnz r0,003$
|
||||
ret
|
||||
|
||||
__endasm;
|
||||
}
|
||||
|
||||
|
21
long_xrlc.c
Normal file
21
long_xrlc.c
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
void long_xrlc() __naked
|
||||
{
|
||||
__asm
|
||||
.globl long_xrlc
|
||||
|
||||
long_xrlc:
|
||||
movx a,@r0
|
||||
rlc a
|
||||
movx @r0,a
|
||||
inc r0
|
||||
djnz r7,long_xrlc
|
||||
ret
|
||||
|
||||
__endasm;
|
||||
}
|
||||
|
||||
|
17
long_xset.c
Normal file
17
long_xset.c
Normal file
@ -0,0 +1,17 @@
|
||||
|
||||
|
||||
void long_xset() __naked
|
||||
{
|
||||
__asm
|
||||
.globl long_xset_zero
|
||||
.globl long_xset
|
||||
|
||||
long_xset_zero:
|
||||
mov a,#0x00
|
||||
long_xset:
|
||||
movx @r0,a
|
||||
djnz r7,long_xset
|
||||
__endasm;
|
||||
}
|
||||
|
||||
|
28
long_xsub.c
Normal file
28
long_xsub.c
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
|
||||
/**
|
||||
* @r0=@r0-@r1
|
||||
* r7=len
|
||||
*/
|
||||
void long_xsub() __naked
|
||||
{
|
||||
__asm
|
||||
.globl long_xsub
|
||||
.globl long_xsubb
|
||||
long_xsub:
|
||||
clr c
|
||||
long_xsubb:
|
||||
movx a,@r1
|
||||
mov b,a
|
||||
movx a,@r0
|
||||
subb a,b
|
||||
movx @r0,a
|
||||
inc r0
|
||||
inc r1
|
||||
djnz r7,long_xsubb
|
||||
ret
|
||||
|
||||
__endasm;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user