|
5楼
楼主 |
发表于 2005-11-29 15:03:46
|
只看该作者
.s汇编文件
;多字节相加
;sum[number]+=add[number]
;void BytesAdd(uchar *sum,uchar *add,uchar number)
_BytesAdd::
clc ;c<-0
mov r26,r16
mov r27,r17 ;x<-sum
mov r30,r18
mov r31,r19 ;z<-add
ld r0,y ;r0<-number
balp:
ld r1,x
ld r2,z+
adc r1,r2 ;sum+=add+c
st x+,r1 ;store sum
dec r0
brne balp ;branch if number!=0
ret
;******************************************************
;多字节相减
;minuend[number]-=subtrahend[number]
;void BytesSub(uchar *minuend,uchar *subtrahend,uchar number)
_BytesSub::
clc ;c=0
mov r26,r16
mov r27,r17 ;x=minuend
mov r30,r18
mov r31,r19 ;z=subtrahend
ld r0,y ;r0=number
bslp:
ld r1,x
ld r2,z+
sbc r1,r2 ;minuend-=subtrahend+c
st x+,r1 ;store minuend
dec r0
brne bslp ;branch if number!=0
ret
;*******************************************************
C调用:
uchar sum[5],add[5];
uchar minuend[5],subtrahend[5];
BytesAdd(sum,add,5);//sum+=add,5bytes
BytesSub(minuend,subtrahend,5);//minuend-=subtrahend |
|