1、片内RAM初始化子程序2、片外RAM初始化子程序3、片外RAM初始化子程序(双字节个单元)4、内部RAM数据复制程序5、外部RAM数据复制程序6、外部RAM数据复制程序7、外部RAM数据复制到内部RAM程序8、限幅滤波程序9、中位值滤波程序10、N点算术平均滤波11、N点加权平均滤波12、一阶加权滞后滤波程序13、双字节取补程序14、N节取补程序15、双字节无符号数加法程序16、N字节无符号数加法程序17、双字节无符号数减法程序18、N字节无符号数减法程序19、单字节无符号数乘法程序20、单字节无符号数乘法程序21、单字节无符号数乘法程序22、双字节无符号数乘法程序23、双字节无符号数乘法程序24、N字节无符号数乘法程序25、单字节无符号除法程序26、单字节无符号除法程序27、双字节无符号除法程序28、N字节无符号除法程序(组合)29、N字节无符号除法程序30、N字节数据左移程序31、原码有符号双字节减法程序32、原码有符号双字节加法程序33、原码有符号双字节乘法程序34、原码有符号双字节除法程序35、单字节顺序查找程序36、单字节顺序查找程序37、双字节字符串顺序查找程序38、双字节字符串顺序查找程序39、N字节字符串顺序查找程序40、单字节最值查找程序41、浮点数顺序查找程序42、浮点数最值查找程序43、单字节折半查找程序;片内RAM初始化子程序IBCLR
:MOV
A,R0
MOV
R1,A
CLR
AIBC1
:MOV
@R1,A
INC
R1
DJNZ
R7,IBC1
RET;片外RAM初始化子程序EBCLR1
:MOV
A,ADDPL
MOV
DPL,A
MOV
A,ADDPH
MOV
DPH,A
CLR
CEBC11
:MOVX
@DPTR,A
INC
DPTR
DJNZ
R7,EBC11
RET;片外RAM初始化子程序(双字节个单元)EBCLR2
:MOV
A,ADDPL
MOV
DPL,A
MOV
A,ADDPH
MOV
DPH,A
MOV
A,R7
JZ
EBC21
INC
R6EBC21
:CLR
A
MOVX
@DPTR,A
INC
DPTR
DJNZ
R7,EBC21
DJNZ
R6,EBC21
RET;内部RAM数据复制程序;入口
:R0,R7;占用资源:A;堆栈需求:2字节;出口
:R1IBMOV
:MOV
A,R0
ADD
A,R7
MOV
R0,A
MOV
A,R1
ADD
A,R7
MOV
R1,AIBM1
:DEC
R0
DEC
R1
MOV
A,@R0
MOV
@R1,A
DJNZ
R7,IBM1
RET;外部RAM数据复制程序;入口
:ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口
:R0,R1EBMOV1
:MOV
A,ADDPL
ADD
A,R7
MOV
DPL,A
CLR
A
ADDC
A,ADDPH
MOV
DPH,A
MOV
A,R7
ADD
A,R1
XCH
A,R0
ADDC
A,#00H
MOV
P2,AEBM11
:DEC
R0
CJNE
R0,#0FFH,EBM12
DEC
P2EBM12
:DEC
DPL
MOV
A,DPL
CJNE
A,#0FFH,EBM13
DEC
DPHEBM13
:MOVX
A,@R0
MOVX
@DPTR,A
DJNZ
R7,EBM11
RET;外部RAM数据复制程序;入口
:ADDPH,ADDPL,R6,R7;占用资源:ACC;堆栈需求:2字节;出口
:R0,R1EBMOV2
:MOV
A,ADDPL
ADD
A,R7
MOV
DPL,A
MOV
A,R6
ADDC
A,ADDPH
MOV
DPH,A
MOV
A,R7
ADD
A,R1
XCH
A,R0
ADDC
A,R6
MOV
P2,A
MOV
A,R7
JZ
EBM21
INC
R6EBM21
:DEC
R0
CJNE
R0,#0FFH,EBM22
DEC
P2EBM22
:DEC
DPL
MOV
A,DPL
CJNE
A,#0FFH,EBM23
DEC
DPHEBM23
:MOVX
A,@R0
MOVX
@DPTR,A
DJNZ
R7,EBM21
DJNZ
R6,EBM21
RET;外部RAM数据复制到内部RAM程序;入口
:ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口
:R0ITEMOV
:MOV
A,ADDPL
ADD
A,R7
MOV
DPL,A
MOV
A,ADDPH
ADDC
A,#00H
MOV
DPH,A
MOV
A,R0
ADD
A,R7
MOV
R0,AITEM1
:DEC
R0
DEC
DPL
MOV
A,DPL
CJNE
A,#0FFH,ITEM2
DEC
DPHITEM2
:MOVX
A,@DPTR
MOV
@R0,A
DJNZ
R7,ITEM1
RET;限幅滤波程序;入口
:A,SDAT,DELTY;占用资源:B;堆栈需求:2字节;出口
:AJUGFILT
:MOV
B,A
CLR
C
SUBB
A,SDAT
JNC
JUGFT1
CPL
A
INC
AJUGFT1
:SETB
A
SUBB
A,#DELTY
JNC
JUGFT3
MOV
A,SDAT
RETJUGFT3
:MOV
A,B
MOV
SDAT,A
RET;中位值滤波程序;入口
:ADDPH,ADDPL,N;占用资源:ESELSORT;堆栈需求:4字节;出口
:AMEDFILT
:LCALL
ESELSORT
MOV
A,N
CLR
C
RRC
A
ADD
A,ADDPL
MOV
DPL,A
MOV
A,ADDPH
MOV
DPH,A
JNC
MEDFT1
INC
DPHMEDFT1
:MOVX
A,@DPTR
RET;N点算术平均滤波;入口
:ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口
:AAVFILT
:MOV
A,ADDPL
MOV
DPL,A
MOV
A,ADDPH
MOV
DPH,A
CLR
A
MOV
R3,A
MOV
R4,A
MOV
R7,NAVFT1
:MOVX
A,@DPTR
INC
DPTR
ADD
A,R4
MOV
R4,A
JNC
AVFT2
INC
R3AVFT2
:DJNZ
R7,AVFT1
MOV
R7,N
MOV
R2,#00H
LCALL
NDIV31
MOV
A,R4
RET;N点加权平均滤波;入口
:ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口
:AQAVFILT
:CLR
A
MOV
R3,A
MOV
R4,A
MOV
R7,N
MOV
P2,ADDPH
MOV
R1,ADDPL
MOV
DPTR,#QAVTABQAVFT1
:MOVC
A,@A+DPTR
MOV
B,A
MOVX
A,@R1
INC
DPTR
INC
R1
MUL
AB
ADD
A,R4
MOV
R4,A
MOV
A,B
ADDC
A,R3
MOV
R3,A
DJNZ
R7,QAVFT1
MOV
A,R4
JNB
ACC.7,QAVFT2
INC
R3QAVFT2
:MOV
A,R3
RETQAVTAB
:DB;一阶加权滞后滤波程序;入口
:A,DELTY;占用资源:B,R3,R4;堆栈需求:2字节;出口
:ABQFILT
:MOV
B,A
CLR
A
MOV
DPTR,#ABTAB
MOVC
A,@A+DPTR
MUL
AB
MOV
R4,A
MOV
R3,B
MOV
A,#01H
MOVC
A,@A+DPTR
MOV
B,DELTY
MUL
AB
ADD
A,R4
MOV
R4,A
MOV
A,B
ADDC
A,R3
MOV
R3,A
MOV
A,R4
JNB
ACC.7,FT1
INC
R3FT1
:MOV
A,R3
MOV
DELTY,A
RETBQTAB
:DB
80H,80H;双字节取补程序 /(R3R4)=(R3R4);入口
:R3,R4;占用资源:ACC;堆栈需求:2字节;出口
:R3,R4CMPT
:MOV
A,R4
CPL
A
ADD
A,#01H
MOV
R4,A
MOV
A,R3
CPL
A
ADDC
A,#00H
MOV
R3,A
RET;N节取补程序 /([R0])=([R0]);入口
:R0,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0NCMPTN
:MOV
B,R0
SETB
CNCPT1
:MOV
A,@R0
CPL
A
ADDC
A,#00H
MOV
@R0,A
INC
R0
DJNZ
R7,NCPT1
MOV
R0,B
RET;双字节无符号数加法程序 (R3R4+R6R7)=(R3R4);入口
:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2字节;出口
:R3,R4,CFNADD
:MOV
A,R4
ADD
A,R7
MOV
R4,A
MOV
A,R3
ADDC
A,R6
MOV
R3,A
RET;N字节无符号数加法程序 ([R0]+[R1])=([R0]);入口
:R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0,CFNADDN
:MOV
B,R0
CLR
CNADN1
:MOV
A,@R0
ADDC
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NADN1
MOV
R0,B
RET;双字节无符号数减法程序 (R3R4-R6R7)=(R3R4);入口
:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2字节;出口
:R3,R4NSUB
:MOV
A,R4
CLR
C
SUBB
A,R7
MOV
R4,A
MOV
A,R3
SUBB
A,R6
MOV
R3,A
RET;N字节无符号数减法程序 ([R0]-[R1])=([R0]);入口
:R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0,CFNSUBN
:MOV
B,R0
MOV
R7,N
CLR
CNSUBN1
:MOV
A,@R0
SUBB
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NSUBN1
MOV
R0,B
RET;单字节无符号数乘法程序 (R3R4*R7)=(R2R3R4);入口
:R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R2,R3,R4NMUL21
:MOV
A,R4
MOV
B,R7
MUL
AB
MOV
R4,A
MOV
A,B
XCH
A,R3
MOV
B,R7
MUL
AB
ADD
A,R3
MOV
R3,A
CLR
A
ADDC
A,B
MOV
R2,A
CLR
OV
RET;单字节无符号数乘法程序 (R2R3R4*R7)=(R5R2R3R4);入口
:R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R5,R2,R3,R4NMUL31
:MOV
A,R4
MOV
B,R7
MUL
AB
MOV
R4,A
MOV
A,B
XCH
A,R3
MOV
B,R7
MUL
AB
ADD
A,R3
MOV
R3,A
CLR
A
ADDC
A,B
XCH
A,R2
MOV
B,R7
MUL
AB
ADD
A,R2
MOV
R2,A
CLR
A
ADDC
A,B
MOV
R5,A
CLR
OV
RET;单字节无符号数乘法程序 (R5R2R3R4*R7)=(R7R5R2R3R4);入口
:R5,R2,R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R7,R5,R2,R3,R4NMUL41
:MOV
A,R4
MOV
B,R7
MUL
AB
MOV
R4,A
MOV
A,B
XCH
A,R3
MOV
B,R7
MUL
AB
ADD
A,R3
MOV
R3,A
CLR
A
ADDC
A,B
XCH
A,R2
MOV
B,R7
MUL
AB
ADD
A,R2
MOV
R2,A
CLR
A
ADDC
A,B
XCH
A,R5
MOV
B,R7
MUL
AB
ADD
A,R5
MOV
R5,A
CLR
A
ADDC
A,B
MOV
R7,A
CLR
OV
RET;双字节无符号数乘法程序 (R3R4*R6R7)=(R5R2R3R4);入口
:R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R5,R2,R3,R4NMUL22
:MOV
A,R4
MOV
B,R7
MUL
AB
XCH
A,R4
MOV
R5,B
MOV
B,R6
MUL
AB
ADD
A,R5
MOV
R5,A
CLR
A
ADDC
A,B
MOV
R2,A
MOV
A,R3
MOV
B,R7
MUL
AB
ADD
A,R5
MOV
R5,A
MOV
A,B
ADDC
A,R2
MOV
R2,A
CLR
A
ADDC
A,#00H
XCH
A,R3
MOV
B,R6
MUL
AB
ADD
A,R2
MOV
R2,A
MOV
A,B
ADDC
A,R3
XCH
A,R5
MOV
R3,A
CLR
OV
RET;双字节无符号数乘法程序 (R2R3R4*R6R7)=(R1R5R2R3R4);入口
:R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R1,R5,R2,R3,R4NMUL32
:MOV
A,R4
MOV
B,R7
MUL
AB
XCH
A,R4
MOV
R5,B
MOV
B,R6
MUL
AB
ADD
A,R5
MOV
R5,A
CLR
A
ADDC
A,B
MOV
R1,A
MOV
A,R3
MOV
B,R7
MUL
AB
ADD
A,R5
MOV
R5,A
MOV
A,B
ADDC
A,R1
MOV
R1,A
CLR
A
ADDC
A,#00H
XCH
A,R3
MOV
B,R6
MUL
AB
ADD
A,R1
MOV
R1,A
MOV
A,B
ADDC
A,R3
XCH
A,R5
MOV
R3,A
MOV
A,R2
MOV
B,R7
MUL
AB
ADD
A,R1
MOV
R1,A
MOV
A,B
ADDC
A,R5
MOV
R5,A
CLR
A
ADDC
A,#00H
XCH
A,R2
MOV
B,R6
MUL
AB
ADD
A,R5
MOV
R5,A
MOV
A,B
ADDC
A,R2
XCH
A,R1
MOV
R2,A
CLR
OV
RET;N字节无符号数乘法程序 ([R0]*[R1])=([R0]);入口
:R0,R1,M,N;占用资源:ACC,B,R2,R5,R6,R7,NCNT;堆栈需求:2字节;出口
:R0NMULMN
:MOV
A,M
ADD
A,R0
MOV
R5,A
XCH
A,R1
XCH
A,R5
ADD
A,N
XCH
A,R0
MOV
R6,A
MOV
B,M
MOV
NCNT,BNMLMN1
:DEC
R0
DEC
R1
CLR
A
XCH
A,@R1
MOV
@R0,A
DJNZ
NCNT,NMLMN1
MOV
NCNT,BNMLMN2
:CLR
A
XCH
A,@R0
MOV
R2,A
MOV
A,R6
MOV
R0,A
MOV
A,R5
MOV
R1,A
MOV
R7,N
CLR
CNMLMN3
:MOV
A,R2
MOV
B,@R1
INC
R1
MUL
AB
ADDC
A,@R0
MOV
@R0,A
INC
R0
MOV
A,B
ADDC
A,@R0
MOV
@R0,A
DJNZ
R7,NMLMN3
INC
R0
INC
R6
DJNZ
NCNT,NMLMN2
MOV
A,R0
CLR
C
SUBB
A,M
SUBB
A,N
MOV
R0,A
RET;单字节无符号除法程序 (R2R3R4/R7)=(R2)R3R4 余数R7;入口
:R2,R3,R4,R7;占用资源:ACC,B,F0;堆栈需求:3字节;出口
R2),R3,R4,R7,OVNDIV31
:MOV
A,R2
MOV
B,R7
DIV
AB
PUSH
A
MOV
R2,B
MOV
B,#10HNDV311
:CLR
C
MOV
A,R4
RLC
A
MOV
R4,A
MOV
A,R3
RLC
A
MOV
R3,A
MOV
A,R2
RLC
A
MOV
R2,A
MOV
F0,C
CLR
C
SUBB
A,R7
JB
F0,NDV312
JC
NDV313NDV312
:MOV
R2,A
INC
R4NDV313
:DJNZ
B,NDV311
POP
A
CLR
OV
JZ
NDV314
SETB
OVNDV314
:XCH
A,R2
MOV
R7,A
RET;单字节无符号除法程序 (R5R2R3R4/R7)=(R5)R2R3R4 余数R7;入口
:R2,R3,R4,R7;占用资源:ACC,B,F0;堆栈需求:3字节;出口
R5),R2,R3,R4,R7,OVNDIV41
:MOV
A,R5
MOV
B,R7
DIV
AB
PUSH
A
MOV
R5,B
MOV
B,#18HNDV411
:CLR
C
MOV
A,R4
RLC
A
MOV
R4,A
MOV
A,R3
RLC
A
MOV
R3,A
MOV
A,R2
RLC
A
MOV
R2,A
MOV
A,R5
RLC
A
MOV
R5,A
MOV
F0,C
CLR
C
SUBB
A,R7
JB
F0,NDV412
JC
NDV413NDV412
:MOV
R5,A
INC
R4NDV413
:DJNZ
B,NDV411
POP
A
CLR
OV
JZ
NDV414
SETB
OVNDV414
:XCH
A,R5
MOV
R7,A
RET;双字节无符号除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余数R6R7;入口
:R5,R2,R3,R4,R6,R7;占用资源:ACC,B,F0;堆栈需求:4字节;出口
R2),R3,R4,R6,R7,OVNDIV42
:MOV
A,R1
PUSH
A
MOV
B,#00HNDV421
:MOV
A,R2
CLR
C
SUBB
A,R7
MOV
R1,A
MOV
A,R5
SUBB
A,R6
JC
NDV422
MOV
R5,A
MOV
A,R1
MOV
R2,A
INC
B
SJMP
NDV421NDV422
:PUSH
B
MOV
B,#10HNDV423
:CLR
C
MOV
A,R4
RLC
A
MOV
R4,A
MOV
A,R3
RLC
A
MOV
R3,A
MOV
A,R2
RLC
A
MOV
R2,A
XCH
A,R5
RLC
A
XCH
A,R5
MOV
F0,C
CLR
C
SUBB
A,R7
MOV
R1,A
MOV
A,R5
SUBB
A,R6
JB
F0,NCV424
JC
NDV425NCV424
:MOV
R5,A
MOV
A,R1
MOV
R2,A
INC
R4NDV425
:DJNZ
B,NDV423
POP
A
CLR
OV
JNZ
NDV426
SETB
OVNDV426
:XCH
A,R2
MOV
R7,A
MOV
A,R5
MOV
R6,A
POP
A
MOV
R1,A
RET;N字节无符号除法程序(组合) ([R0]/[R1])=([R0]);入口
:R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN;堆栈需求:4字节;出口
:R0;NDIVMN
:MOV
A,M
CLR
C
SUBB
A,N
MOV
NCNT,A
ADD
A,R0
MOV
R4,A
XCH
A,R0
MOV
R3,A
MOV
A,R1
MOV
R5,A
MOV
R2,#00HNDVMN1
:MOV
R7,N
LCALL
NSUBN
MOV
A,R5
MOV
R1,A
JC
NDVMN2
INC
R2
SJMP
NDVMN1NDVMN2
:MOV
R7,N
LCALL
NADDN
MOV
A,NCNT
SWAP
A
RR
A
MOV
NCNT,ANDVMN3
:MOV
A,R3
MOV
R0,A
MOV
R7,M
LCALL
NRLCN
MOV
F0,C
MOV
A,R4
MOV
R0,A
MOV
A,R5
MOV
R1,A
MOV
R7,N
LCALL
NSUBN
JB
F0,NDVMN4
JC
NDVMN5NDVMN4
:MOV
A,R3
MOV
R0,A
INC
@R0
SJMP
NDVMN6NDVMN5
:MOV
A,R5
MOV
R1,A
MOV
R7,N
LCALL
NADDNNDVMN6
:DJNZ
NCNT,NDVMN3
MOV
A,R4
MOV
R1,A
MOV
A,R2
MOV
@R1,A
MOV
A,R3
MOV
R0,A
RET;N字节无符号除法程序(集成) ([R0]/R[1])=([R0]);入口
:R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,F0;堆栈需求:2字节;出口
:R0NDIVMN
:MOV
A,M
CLR
C
SUBB
A,N
MOV
B,A
ADD
A,R0
MOV
R4,A
XCH
A,R0
MOV
R3,A
MOV
A,R1
MOV
R5,A
MOV
R2,#00HNDVMN1
:MOV
R7,N
CLR
CNDVMN2
:MOV
A,@R0
SUBB
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NDVMN2
MOV
A,R4
MOV
R0,A
MOV
A,R5
MOV
R1,A
JC
NDVMN3
INC
R2
SJMP
NDVMN1NDVMN3
:MOV
R7,N
CLR
CNDVMN4
:MOV
A,@R0
ADDC
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NDVMN4
MOV
A,#08H
MUL
AB
MOV
B,ANDVMN5
:MOV
A,R3
MOV
R0,A
MOV
R7,M
CLR
CNDVMN6
:MOV
A,@R0
RLC
A
MOV
@R0,A
INC
R0
DJNZ
R7,NDVMN6
MOV
F0,C
MOV
A,R4
MOV
R0,A
MOV
A,R5
MOV
R1,A
MOV
R7,N
CLR
CNDVMN7
:MOV
A,@R0
SUBB
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NDVMN7
JB
F0,NDVMNB
JC
NDVMN8NDVMNB
:MOV
A,R3
MOV
R0,A
INC
@R0
SJMP
NDVMNANDVMN8
:MOV
R7,N
MOV
A,R4
MOV
R0,A
MOV
A,R5
MOV
R1,A
CLR
CNDVMN9
:MOV
A,@R0
ADDC
A,@R1
MOV
@R0,A
INC
R0
INC
R1
DJNZ
R7,NDVMN9NDVMNA
:DJNZ
B,NDVMN5
MOV
A,M
CLR
C
SUBB
A,N
ADD
A,R3
MOV
R1,A
MOV
A,R2
MOV
@R1,A
MOV
A,R3
MOV
R0,A
RET;N字节数据左移程序 RLC([R0])=(CF[R0]);入口
:R0,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0,CFNRLCN
:MOV
B,R0
CLR
CNRLN1
:MOV
A,@R0
RLC
A
MOV
@R0,A
INC
R0
DJNZ
R7,NRLN1
MOV
R0,B
RET;原码有符号双字节减法程序 (R3R4-R6R7)=R3R4;入口
:R3,R4,R6,R7;占用资源:ACC,DADD;堆栈需求:6字节;出口
:R3,R4,OVDSUB
:MOV
A,R6
CPL
ACC.7
MOV
R6,A
LCALL
DADD
RET;原码有符号双字节加法程序 (R3R4+R6R7)=R3R4;入口
:R3,R4,R6,R7;占用资源:ACC,SR0,NADD,NSUB,CMPT;堆栈需求:4字节;出口
:R3,R4,OVDADD
: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,DABEDAB1
:MOV
C,SR0
MOV
ACC.7,C
MOV
R3,A
CLR
OV
RETDABE
:SETB
OV
RETDAB2
:LCALL
NSUB
MOV
A,R3
JNB
ACC.7,DAB1
LCALL
CMPT
CPL
SR0
SJMP
DAB1;原码有符号双字节乘法程序 (R3R4*R6R7)=(R5R2R3R4);入口
:R3,R4,R6,R7;占用资源:ACC,SR0,NMUL22;堆栈需求:4字节;出口
:R5,R2,R3,R4IMUL
:MOV
A,R3
XRL
A,R6
MOV
C,ACC.7
MOV
SR0,C
MOV
A,R3
CLR
ACC.7
MOV
R3,A
MOV
A,R6
CLR
ACC.7
MOV
R6,A
LCALL
NMUL22
MOV
A,R5
MOV
C,SR0
MOV
ACC.7,C
MOV
R5,A
RET;原码有符号双字节除法程序 (R5R2R3R4/R6R7)=(R3R4) 余数(R6R7);入口
:R5,R2,R3,R4;占用资源:ACC,SR0,NDIV42;堆栈需求:6字节;出口
:R3,R4,R6,R7,OVIDIV
:MOV
A,R5
XRL
A,R6
MOV
C,ACC.7
MOV
SR0,C
MOV
A,R5
CLR
ACC.7
MOV
R5,A
MOV
A,R6
CLR
ACC.7
MOV
R6,A
LCALL
NDIV42
MOV
A,R3
JB
ACC.7,IDIVE
JB
OV,IDIVE
MOV
C,SR0
MOV
ACC.7,C
MOV
R3,A
RETIDIVE
:SETB
OV
RET;单字节顺序查找程序;入口
:R0,R1,A,R7;占用资源:B;堆栈需求:2字节;出口
:R0,R1,AFINDB1
:MOV
B,A
MOV
DPL,R1
MOV
DPH,R0FINDB11
:MOVX
A,@DPTR
CJNE
A,B,FINDB12
MOV
R1,DPL
MOV
R0,DPH
CLR
A
RETFINDB12
:INC
DPTR
DJNZ
R7,FINDB11
MOV
A,#0FFH
RET;单字节顺序查找程序;入口
:R0,R1,A,R6,R7;占用资源:B;堆栈需求:2字节;出口
:R0,R1,AFINDB2
:MOV
B,A
MOV
DPL,R1
MOV
DPH,R0
MOV
A,R7
JZ
FINDB21
INC
R6FINDB21
:MOVX
A,@DPTR
CJNE
A,B,FINDB22
MOV
R1,DPL
MOV
R0,DPH
CLR
A
RETFINDB22
:INC
DPTR
DJNZ
R7,FINDB21
DJNZ
R6,FINDB21
MOV
A,#0FFH
RET;双字节字符串顺序查找程序;入口
:R0,R1,R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0,R1,AFINDS1
:MOV
DPL,R1
MOV
DPH,R0FINDS11
:MOVX
A,@DPTR
INC
DPTR
CLR
C
SUBB
A,R4
JNZ
FINDS12
MOVX
A,@DPTR
SUBB
A,R3
JNZ
FINDS12
MOV
A,DPL
CLR
C
SUBB
A,#01H
MOV
R1,A
MOV
A,DPH
SUBB
A,#00H
MOV
R0,A
CLR
A
RETFINDS12
:DJNZ
R7,FINDS11
MOV
A,#0FFH
RET;双字节字符串顺序查找程序;入口
:R0,R1,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0,R1,AFINDS2
:MOV
DPL,R1
MOV
DPH,R0
MOV
A,R7
JZ
FINDS21
INC
R6FINDS21
:MOVX
A,@DPTR
INC
DPTR
CLR
C
SUBB
A,R4
JNZ
FINDS22
MOVX
A,@DPTR
SUBB
A,R3
JNZ
FINDS22
MOV
A,DPL
CLR
C
SUBB
A,#01H
MOV
R1,A
MOV
A,DPH
SUBB
A,#00H
MOV
R0,A
CLR
A
RETFINDS22
:DJNZ
R7,FINDS21
DJNZ
R6,FINDS21
MOV
A,#0FFH
RET;N字节字符串顺序查找程序;入口
:ADDPH,ADDPL,R0,R6,R7,N;占用资源:ACC,B,R2,NCNT;堆栈需求:2字节;出口
:ADDPH,ADDPL,AFINDN
:MOV
A,R0
MOV
R2,A
MOV
A,ADDPL
MOV
DPL,A
MOV
A,ADDPH
MOV
DPH,A
MOV
A,R7
JZ
FINDN1
INC
R6FINDN1
:MOV
A,R2
MOV
R0,A
MOV
A,N
MOV
NCNT,AFINDN2
:MOVX
A,@DPTR
CLR
C
SUBB
A,@R0
JNZ
FINDN3
INC
DPTR
INC
R0
DJNZ
NCNT,FINDN2
MOV
A,DPL
CLR
C
SUBB
A,N
MOV
ADDPL,A
MOV
A,DPH
SUBB
A,#00H
MOV
ADDPH,A
CLR
A
RETFINDN3
:CLR
C
MOV
A,R0
SUBB
A,R2
JNZ
FINDN4
INC
DPTRFINDN4
:DJNZ
R7,FINDN1
DJNZ
R6,FINDN1
MOV
A,#0FFH
RET;单字节最值查找程序;入口
:R0,R1,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口
:R0(最大值),R1(最小值),R2,R3,R4,R5FMAMIB
:MOV
DPL,R1
MOV
DPH,R0
MOVX
A,@DPTR
MOV
R0,A
MOV
R1,A
MOV
A,DPL
MOV
R3,A
MOV
R5,A
MOV
A,DPH
MOV
R2,A
MOV
R4,A
MOV
A,R7
JZ
FMMB1
INC
R6FMMB1
:MOVX
A,@DPTR
MOV
B,A
SETB
C
SUBB
A,R0
JC
FMMB2
MOV
R0,B
MOV
R3,DPL
MOV
R2,DPH
SJMP
FMMB3FMMB2
:MOV
A,B
CLR
C
SUBB
A,R1
JNC
FMMB3
MOV
R1,B
MOV
R5,DPL
MOV
R4,DPHFMMB3
:INC
DPTR
DJNZ
R7,FMMB1
DJNZ
R6,FMMB1
RET;浮点数顺序查找程序;入口
:R0,R1,R2,R3,R4,R6,R7;占用资源:B,NCNT,FCMP;堆栈需求:2字节;出口
:R0,R1,AFINDF
:MOV
DPL,R1
MOV
DPH,R0
MOV
A,R7
MOV
B,A
MOV
NCNT,R6
JZ
FINDF1
INC
NCNTFINDF1
:MOVX
A,@DPTR
INC
DPTR
MOV
R5,A
MOVX
A,@DPTR
INC
DPTR
MOV
R6,A
MOVX
A,@DPTR
INC
DPTR
MOV
R7,A
LCALL
FCMP
JNZ
FINDF2
MOV
A,DPL
CLR
C
SUBB
A,#03H
MOV
R1,A
MOV
A,DPH
SUBB
A,#00H
MOV
R0,A
CLR
A
RETFINDF2
:DJNZ
B,FINDF1
DJNZ
NCNT,FINDF1
MOV
A,#0FFH
RET;浮点数最值查找程序;入口
:ADDPH,ADDPL,R6,R7;占用资源:ACC,B,NCNT,ITEMOV,EBMOV,MOVB,MOVR1,FCMP;堆栈需求:5字节;出口
:[R0](最大值),[R1](最小值),R2,R3,R4,R5FMAMIF
:MOV
A,ADDPL
MOV
R3,A
MOV
R5,A
MOV
DPL,A
MOV
A,ADDPH
MOV
R2,A
MOV
R4,A
MOV
DPH,A
MOV
B,R7
MOV
R7,#03H
LCALL
ITEMOV
MOV
R7,#03H
LCALL
IBMOV
MOV
A,B
JZ
FMMF1
INC
NCNTFMMF1
:PUSH
B
MOVX
A,@DPTR
INC
DPTR
MOV
R2,A
MOVX
A,@DPTR
INC
DPTR
MOV
R3,A
MOVX
A,@DPTR
INC
DPTR
MOV
R4,A
LCALL
MOVR1
LCALL
FCMP
JNC
FMMF2
MOV
A,R0
XCH
A,R1
MOV
R0,A
LCALL
MOVB
MOV
R5,DPL
MOV
R4,DPH
MOV
A,R0
XCH
A,R1
MOV
R0,A
SJMP
FMMF3FMMF2
:MOV
A,R0
XCH
A,R1
MOV
R0,A
LCALL
MOVR1
LCALL
FCMP
MOV
A,R0
XCH
A,R1
MOV
R0,A
JZ
FMMF3
JC
FMMF3
LCALL
MOVB
MOV
R3,DPL
MOV
R2,DPHFMMF3
:POP
B
DJNZ
B,FMMF1
DJNZ
NCNT,FMMF1
RET;单字节折半查找程序;入口
:A,R0,R1,R6,R7;占用资源:B,R2;堆栈需求:2字节;出口
:R0,R1SEARCHB
:MOV
B,A
MOV
A,R1
ADD
A,R7
MOV
R7,A
MOV
A,R0
ADDC
A,R6
MOV
R6,A
MOV
A,R7
SUBB
A,#01H
MOV
R7,A
JNC
SECH1
DEC
R6SECH1
:MOV
A,R7
CLR
C
SUBB
A,R1
MOV
A,R6
SUBB
A,R0
JNC
SECH2
MOV
A,#0FFH
RETSECH2
:MOV
A,R7
ADD
A,R1
MOV
R2,A
MOV
A,R6
ADDC
A,R0
RRC
A
MOV
DPH,A
MOV
A,R2
RRC
A
MOV
DPL,A
MOVX
A,@DPTR
CLR
C
SUBB
A,B
JNC
SECH3
INC
DPTR
MOV
R0,DPH
MOV
R1,DPL
SJMP
SECH1SECH3
:JZ
SECH5
MOV
A,DPL
SUBB
A,#01H
MOV
R7,A
JNC
SECH4
MOV
R6,DPH
DEC
R6SECH4
:SJMP
SECH1SECH5
:MOV
R0,DPH
MOV
R1,DPL
CLR
A
RET
关闭
站长推荐
/3
文章评论(0条评论)
登录后参与讨论