2009-02-10
评论5
楼主 2009/2/10 13:01:18
;双字节无符号数加法程序 (R3R4+R6R7)=(R3R4)
;入口: R3,R4,R6,R7
;占用资源: ACC
;堆栈需求: 2字节
;出口: R3,R4,CF
NADD : MOV A,R4
ADD A,R7
MOV R4,A
MOV A,R3
ADDC A,R6
MOV R3,A
RET
楼主 2009/2/10 13:01:35
;N字节无符号数加法程序 ([R0]+[R1])=([R0])
;入口: R0,R1,R7
;占用资源: ACC,B
;堆栈需求: 2字节
;出口: R0,CF
NADDN: MOV B,R0
CLR C
NADN1: MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,NADN1
MOV R0,B
RET
楼主 2009/2/10 13:01:51
;双字节无符号数减法程序 (R3R4-R6R7)=(R3R4)
;入口: R3,R4,R6,R7
;占用资源: ACC
;堆栈需求: 2字节
;出口: R3,R4
NSUB : MOV A,R4
CLR C
SUBB A,R7
MOV R4,A
MOV A,R3
SUBB A,R6
MOV R3,A
RET
楼主 2009/2/10 13:02:12
;原码有符号双字节减法程序 (R3R4-R6R7)=R3R4
;入口: R3,R4,R6,R7
;占用资源: ACC,DADD
;堆栈需求: 6字节
;出口: R3,R4,OV
DSUB : MOV A,R6
CPL ACC.7
MOV R6,A
LCALL DADD
RET
楼主 2009/2/10 13:02:35
;原码有符号双字节加法程序 (R3R4+R6R7)=R3R4
;入口: R3,R4,R6,R7
;占用资源: ACC,SR0,NADD,NSUB,CMPT
;堆栈需求: 4字节
;出口: R3,R4,OV
DADD : MOV A,R3
MOV C,ACC.7
MOV SR0,C
XRL A,R6
MOV C,ACC.7
MOV A,R3
CLR ACC.7
MOV R3,A
MOV A,R6
CLR ACC.7
MOV R6,A
JC DAB2
LCALL NADD
MOV A,R3
JB ACC.7,DABE
DAB1 : MOV C,SR0
MOV ACC.7,C
MOV R3,A
CLR OV
RET
DABE : SETB OV
RET
DAB2 : LCALL NSUB
MOV A,R3
JNB ACC.7,DAB1
LCALL CMPT
CPL SR0
SJMP DAB1