long_add function
This commit is contained in:
parent
6c2e631e56
commit
6153bb3fb4
1
Makefile
1
Makefile
@ -28,6 +28,7 @@ LIBSRC = uart_init_.c uart_send_chr.c uart_send_str.c \
|
|||||||
long_tobcd__.c long_tobcd.c \
|
long_tobcd__.c long_tobcd.c \
|
||||||
bcd_tolong__.c bcd_tolong.c \
|
bcd_tolong__.c bcd_tolong.c \
|
||||||
long_addbyte__.c long_addbyte.c \
|
long_addbyte__.c long_addbyte.c \
|
||||||
|
long_add__.c long_add.c \
|
||||||
long_1cpl__.c long_invert__.c long_invert.c
|
long_1cpl__.c long_invert__.c long_invert.c
|
||||||
|
|
||||||
|
|
||||||
|
20
long_add.c
20
long_add.c
@ -9,23 +9,17 @@ uint8_t long_add(__idata uint8_t *v1, __idata uint8_t *v2,uint8_t len) __reentra
|
|||||||
__asm
|
__asm
|
||||||
mov a,_bp
|
mov a,_bp
|
||||||
add a,#0xfd
|
add a,#0xfd
|
||||||
mov sp,a
|
mov r0,a
|
||||||
pop ar1
|
mov a,@r0 ; *v2
|
||||||
pop ar7
|
mov r1,a
|
||||||
mov ar0,dpl
|
mov a,@r0 ; len
|
||||||
clr c
|
mov r7,a
|
||||||
001$:
|
mov r0,dpl
|
||||||
mov a,@r0
|
lcall long_invert
|
||||||
addc a,@r1
|
|
||||||
mov @r0,a
|
|
||||||
inc r0
|
|
||||||
inc r1
|
|
||||||
djnz r7,001$
|
|
||||||
mov dpl,#0x00
|
mov dpl,#0x00
|
||||||
jnc $002
|
jnc $002
|
||||||
inc dpl
|
inc dpl
|
||||||
$002:
|
$002:
|
||||||
mov sp,_bp
|
|
||||||
__endasm;
|
__endasm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
25
long_add__.c
Normal file
25
long_add__.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* @r0 = @r0+@r1
|
||||||
|
* r7=len
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void long_add__() __naked
|
||||||
|
{
|
||||||
|
__asm
|
||||||
|
long_add:
|
||||||
|
clr c
|
||||||
|
long_addc:
|
||||||
|
001$:
|
||||||
|
mov a,@r0
|
||||||
|
addc a,@r1
|
||||||
|
mov @r0,a
|
||||||
|
inc r0
|
||||||
|
inc r1
|
||||||
|
djnz r7,001$
|
||||||
|
ret
|
||||||
|
|
||||||
|
__endasm;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -90,6 +90,7 @@ uint8_t multest(uint8_t a, uint8_t b);
|
|||||||
|
|
||||||
void bcd_tolong(__idata uint8_t *bcdval, __idata uint8_t *binval, uint8_t bcdlen, uint8_t binlen) __reentrant;
|
void bcd_tolong(__idata uint8_t *bcdval, __idata uint8_t *binval, uint8_t bcdlen, uint8_t binlen) __reentrant;
|
||||||
void long_invert(__idata uint8_t *val, uint8_t len) __reentrant;
|
void long_invert(__idata uint8_t *val, uint8_t len) __reentrant;
|
||||||
|
uint8_t long_add(__idata uint8_t *v1, __idata uint8_t *v2,uint8_t len) __reentrant;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user