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 A IBC1 :MOV @R1,A INC R1 DJNZ R7,IBC1 RET 片外RAM初始化子程序 EBCLR1 :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A CLR C EBC11 :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 R6 EBC21 :CLR A MOVX @DPTR,A INC DPTR DJNZ R7,EBC21 DJNZ R6,EBC21 RET 内部RAM数据复制程序 入口 :R0,R7 占用资源:A 堆栈需求:2字节 出口 :R1 IBMOV :MOV A,R0 ADD A,R7 MOV R0,A MOV A,R1 ADD A,R7 MOV R1,A IBM1 :DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R7,IBM1 RET 外部RAM数据复制程序 入口 :ADDPH,ADDPL,R7 占用资源:ACC 堆栈需求:2字节 出口 :R0,R1 EBMOV1 :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,A EBM11 :DEC R0 CJNE R0,#0FFH,EBM12 DEC P2 EBM12 :DEC DPL MOV A,DPL CJNE A,#0FFH,EBM13 DEC DPH EBM13 :MOVX A,@R0 MOVX @DPTR,A DJNZ R7,EBM11 RET 外部RAM数据复制程序 入口 :ADDPH,ADDPL,R6,R7 占用资源:ACC 堆栈需求:2字节 出口 :R0,R1 EBMOV2 :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 R6 EBM21 :DEC R0 CJNE R0,#0FFH,EBM22 DEC P2 EBM22 :DEC DPL MOV A,DPL CJNE A,#0FFH,EBM23 DEC DPH EBM23 :MOVX A,@R0 MOVX @DPTR,A DJNZ R7,EBM21 DJNZ R6,EBM21 RET 外部RAM数据复制到内部RAM程序 入口 :ADDPH,ADDPL,R7 占用资源:ACC 堆栈需求:2字节 出口 :R0 ITEMOV :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,A ITEM1 :DEC R0 DEC DPL MOV A,DPL CJNE A,#0FFH,ITEM2 DEC DPH ITEM2 :MOVX A,@DPTR MOV @R0,A DJNZ R7,ITEM1 RET 限幅滤波程序 入口 :A,SDAT,DELTY 占用资源:B 堆栈需求:2字节 出口 :A JUGFILT :MOV B,A CLR C SUBB A,SDAT JNC JUGFT1 CPL A INC A JUGFT1 :SETB A SUBB A,#DELTY JNC JUGFT3 MOV A,SDAT RET JUGFT3 :MOV A,B MOV SDAT,A RET 中位值滤波程序 入口 :ADDPH,ADDPL,N 占用资源:ESELSORT 堆栈需求:4字节 出口 :A MEDFILT :LCALL ESELSORT MOV A,N CLR C RRC A ADD A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A JNC MEDFT1 INC DPH MEDFT1 :MOVX A,@DPTR RET N点算术平均滤波 入口 :ADDPH,ADDPL,N 占用资源:B,R3,R4 堆栈需求:2字节 出口 :A AVFILT :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A CLR A MOV R3,A MOV R4,A MOV R7,N AVFT1 :MOVX A,@DPTR INC DPTR ADD A,R4 MOV R4,A JNC AVFT2 INC R3 AVFT2 :DJNZ R7,AVFT1 MOV R7,N MOV R2,#00H LCALL NDIV31 MOV A,R4 RET N点加权平均滤波 入口 :ADDPH,ADDPL,N 占用资源:B,R3,R4 堆栈需求:2字节 出口 :A QAVFILT :CLR A MOV R3,A MOV R4,A MOV R7,N MOV P2,ADDPH MOV R1,ADDPL MOV DPTR,#QAVTAB QAVFT1 :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 R3 QAVFT2 :MOV A,R3 RET QAVTAB :DB 一阶加权滞后滤波程序 入口 :A,DELTY 占用资源:B,R3,R4 堆栈需求:2字节 出口 :A BQFILT :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 R3 FT1 :MOV A,R3 MOV DELTY,A RET BQTAB :DB 80H,80H 双字节取补程序 /(R3R4)=(R3R4) 入口 :R3,R4 占用资源:ACC 堆栈需求:2字节 出口 :R3,R4 CMPT :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字节 出口 :R0 NCMPTN :MOV B,R0 SETB C NCPT1 :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,CF NADD :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,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 双字节无符号数减法程序 (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 N字节无符号数减法程序 ([R0]-[R1])=([R0]) 入口 :R0,R1,R7 占用资源:ACC,B 堆栈需求:2字节 出口 :R0,CF NSUBN :MOV B,R0 MOV R7,N CLR C NSUBN1 :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,R4 NMUL21 :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,R4 NMUL31 :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,R4 NMUL41 :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,R4 NMUL22 :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,R4 NMUL32 :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字节 出口 :R0 NMULMN :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,B NMLMN1 :DEC R0 DEC R1 CLR A XCH A,@R1 MOV @R0,A DJNZ NCNT,NMLMN1 MOV NCNT,B NMLMN2 :CLR A XCH A,@R0 MOV R2,A MOV A,R6 MOV R0,A MOV A,R5 MOV R1,A MOV R7,N CLR C NMLMN3 :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,OV NDIV31 :MOV A,R2 MOV B,R7 DIV AB PUSH A MOV R2,B MOV B,#10H NDV311 :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 NDV313 NDV312 :MOV R2,A INC R4 NDV313 :DJNZ B,NDV311 POP A CLR OV JZ NDV314 SETB OV NDV314 :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,OV NDIV41 :MOV A,R5 MOV B,R7 DIV AB PUSH A MOV R5,B MOV B,#18H NDV411 :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 NDV413 NDV412 :MOV R5,A INC R4 NDV413 :DJNZ B,NDV411 POP A CLR OV JZ NDV414 SETB OV NDV414 :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,OV NDIV42 :MOV A,R1 PUSH A MOV B,#00H NDV421 :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 NDV421 NDV422 :PUSH B MOV B,#10H NDV423 :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 NDV425 NCV424 :MOV R5,A MOV A,R1 MOV R2,A INC R4 NDV425 :DJNZ B,NDV423 POP A CLR OV JNZ NDV426 SETB OV NDV426 :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,#00H NDVMN1 :MOV R7,N LCALL NSUBN MOV A,R5 MOV R1,A JC NDVMN2 INC R2 SJMP NDVMN1 NDVMN2 :MOV R7,N LCALL NADDN MOV A,NCNT SWAP A RR A MOV NCNT,A NDVMN3 :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 NDVMN5 NDVMN4 :MOV A,R3 MOV R0,A INC @R0 SJMP NDVMN6 NDVMN5 :MOV A,R5 MOV R1,A MOV R7,N LCALL NADDN NDVMN6 :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字节 出口 :R0 NDIVMN :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,#00H NDVMN1 :MOV R7,N CLR C NDVMN2 :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 NDVMN1 NDVMN3 :MOV R7,N CLR C NDVMN4 :MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R7,NDVMN4 MOV A,#08H MUL AB MOV B,A NDVMN5 :MOV A,R3 MOV R0,A MOV R7,M CLR C NDVMN6 :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 C NDVMN7 :MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R7,NDVMN7 JB F0,NDVMNB JC NDVMN8 NDVMNB :MOV A,R3 MOV R0,A INC @R0 SJMP NDVMNA NDVMN8 :MOV R7,N MOV A,R4 MOV R0,A MOV A,R5 MOV R1,A CLR C NDVMN9 :MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R7,NDVMN9 NDVMNA :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,CF NRLCN :MOV B,R0 CLR C NRLN1 :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,OV DSUB :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,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 原码有符号双字节乘法程序 (R3R4*R6R7)=(R5R2R3R4) 入口 :R3,R4,R6,R7 占用资源:ACC,SR0,NMUL22 堆栈需求:4字节 出口 :R5,R2,R3,R4 IMUL :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,OV IDIV :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 RET IDIVE :SETB OV RET 单字节顺序查找程序 入口 :R0,R1,A,R7 占用资源:B 堆栈需求:2字节 出口 :R0,R1,A FINDB1 :MOV B,A MOV DPL,R1 MOV DPH,R0 FINDB11 :MOVX A,@DPTR CJNE A,B,FINDB12 MOV R1,DPL MOV R0,DPH CLR A RET FINDB12 :INC DPTR DJNZ R7,FINDB11 MOV A,#0FFH RET 单字节顺序查找程序 入口 :R0,R1,A,R6,R7 占用资源:B 堆栈需求:2字节 出口 :R0,R1,A FINDB2 :MOV B,A MOV DPL,R1 MOV DPH,R0 MOV A,R7 JZ FINDB21 INC R6 FINDB21 :MOVX A,@DPTR CJNE A,B,FINDB22 MOV R1,DPL MOV R0,DPH CLR A RET FINDB22 :INC DPTR DJNZ R7,FINDB21 DJNZ R6,FINDB21 MOV A,#0FFH RET 双字节字符串顺序查找程序 入口 :R0,R1,R3,R4,R7 占用资源:ACC,B 堆栈需求:2字节 出口 :R0,R1,A FINDS1 :MOV DPL,R1 MOV DPH,R0 FINDS11 :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 RET FINDS12 :DJNZ R7,FINDS11 MOV A,#0FFH RET 双字节字符串顺序查找程序 入口 :R0,R1,R3,R4,R6,R7 占用资源:ACC,B 堆栈需求:2字节 出口 :R0,R1,A FINDS2 :MOV DPL,R1 MOV DPH,R0 MOV A,R7 JZ FINDS21 INC R6 FINDS21 :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 RET FINDS22 :DJNZ R7,FINDS21 DJNZ R6,FINDS21 MOV A,#0FFH RET N字节字符串顺序查找程序 入口 :ADDPH,ADDPL,R0,R6,R7,N 占用资源:ACC,B,R2,NCNT 堆栈需求:2字节 出口 :ADDPH,ADDPL,A FINDN :MOV A,R0 MOV R2,A MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A MOV A,R7 JZ FINDN1 INC R6 FINDN1 :MOV A,R2 MOV R0,A MOV A,N MOV NCNT,A FINDN2 :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 RET FINDN3 :CLR C MOV A,R0 SUBB A,R2 JNZ FINDN4 INC DPTR FINDN4 :DJNZ R7,FINDN1 DJNZ R6,FINDN1 MOV A,#0FFH RET 单字节最值查找程序 入口 :R0,R1,R6,R7 占用资源:ACC,B 堆栈需求:2字节 出口 :R0(最大值),R1(最小值),R2,R3,R4,R5 FMAMIB :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 R6 FMMB1 :MOVX A,@DPTR MOV B,A SETB C SUBB A,R0 JC FMMB2 MOV R0,B MOV R3,DPL MOV R2,DPH SJMP FMMB3 FMMB2 :MOV A,B CLR C SUBB A,R1 JNC FMMB3 MOV R1,B MOV R5,DPL MOV R4,DPH FMMB3 :INC DPTR DJNZ R7,FMMB1 DJNZ R6,FMMB1 RET 浮点数顺序查找程序 入口 :R0,R1,R2,R3,R4,R6,R7 占用资源:B,NCNT,FCMP 堆栈需求:2字节 出口 :R0,R1,A FINDF :MOV DPL,R1 MOV DPH,R0 MOV A,R7 MOV B,A MOV NCNT,R6 JZ FINDF1 INC NCNT FINDF1 :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 RET FINDF2 :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,R5 FMAMIF :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 NCNT FMMF1 :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 FMMF3 FMMF2 :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,DPH FMMF3 :POP B DJNZ B,FMMF1 DJNZ NCNT,FMMF1 RET 单字节折半查找程序 入口 :A,R0,R1,R6,R7 占用资源:B,R2 堆栈需求:2字节 出口 :R0,R1 SEARCHB :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 R6 SECH1 :MOV A,R7 CLR C SUBB A,R1 MOV A,R6 SUBB A,R0 JNC SECH2 MOV A,#0FFH RET SECH2 :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 SECH1 SECH3 :JZ SECH5 MOV A,DPL SUBB A,#01H MOV R7,A JNC SECH4 MOV R6,DPH DEC R6 SECH4 :SJMP SECH1 SECH5 :MOV R0,DPH MOV R1,DPL CLR A RET
根据很多 Java 程序员的“经验”来看,一个数据库表则对应着一个 domain 对象,所以很多程序.... Android编程精选 发表于 06-30 11:40 •
求助改电子针灸仪电路程序 现有的电子针疗仪只能2对贴片同时工作,需要改写程序做成8个部位自动循环按摩:第一秒肩颈按一下,第二秒腰背按一下,第三秒手臂... 发表于 06-28 19:07 • 542次
主要演示BL702/704/706系列mcu低功耗性能 1、主要演示BL702/704/706系列mcu低功耗性能低功耗模式:Running : Running 为 CPU 正常运行时的功耗,由客户应用代码... 发表于 06-28 18:19 • 3297次
如何安装一些经典的APP将firefly-rk3399改造成一台电视盒子 一、简介 这一节主要针对Adnroid系统进行一些性能测试,评测RK3399这颗六核处理器的整体性能和视频解码能力。最后,通... 发表于 06-28 16:21 • 1125次
基于51单片机的花样流水灯设计 花样流水灯就是让LED灯按照一定规律进行各种变化,流水灯在生活中也随处可见,例如在建筑物的棱角上装上.... 王子变青蛙_35400519 发表于 06-28 10:29 • 178次
HOLXI是哪一家的IC呀,用起来怎么样?? HOLXI是哪一家的MCU呀,有人用过吗?用起来怎么样??一般用在哪类产品上多一些呀? 发表于 06-27 10:01 • 959次
CH554的RAM空间不够用怎么解决? 沁恒原厂的各位大哥好!CH554的RAM空间是256+1k,现这空间已用完,请问有别的办法来加大吗? &nb... 发表于 06-27 06:37 •
关于C#课程总结 利用C#语言,我第一次设计成功一个窗体程序,这使我充满继续学习C#的兴趣。随着课程的深入,我越发感觉.... 发表于 06-23 15:14 •
以一个小的example来对比SpinalHDL Lib库的强大 在SpinalHDL的世界里,它基于core提供了丰富的Lib库,包含了Stream、Flow、Fragment、State Machine、Bus Slave Fa... 发表于 06-22 14:44 • 444次
试验带显示继电器32级步进遥控音量 1.应好友要求而试验。2.将上次的PGA2311改为继电器。3.应用R-2R电阻网络做音量调整核心。4.将数字地与模拟地彻底分开... 发表于 06-22 11:35 • 4785次
HS34M3212是一款内部集成标准拷贝程序的拷贝型芯片。其中射频接收部分解调基于ASK/OOK调制.... 华芯微电子 发表于 06-21 17:22 • 242次
STM32H750芯片 我有个STM32H750芯片,里面的程序有没有办法拿出来,懂的大神望回信。谢谢... 发表于 06-20 16:25 • 1935次
求助2410上电后如何将RAM映射到0x0处呢 2410上电后从0x0处执行,在bootloader中首先将ROM中的代码和数据搬到RAM中,然后如何将RAM映射到0x0处?看2410的文档,... 发表于 06-20 14:41 • 1454次
我们先简单地回顾一下 CPU 的工作机制,重新温习一下一些基本概念,因为我在查阅资料的过程发现一些网.... 程序员cxuan 发表于 06-20 10:10 • 234次
c++知识要点 第一章 开始1.1 编写一个简单的C++程序int main()return 0;.... 发表于 06-20 09:45 •
ch32v307想要RAM空间和ROM空间最大化,应该怎么做? 你好,我在使用ch32v307 时有个疑惑,默认情况下 ch32v307的ROM 256K,RAM 64K。通过相关配置可以变成 ROM 192KB... 发表于 06-20 07:39 • 108次
Merlin HugeCTR v3.6和v3.7版本新增内容介绍 Merlin HugeCTR(以下简称 HugeCTR)是 GPU 加速的推荐程序框架,旨在在多个 .... NVIDIA英伟达企业解决方案 发表于 06-17 09:28 • 171次
使用memheap内存管理算法对片内RAM和片外SDRAM进行管理的方法 在开发中由于单片机自带的 RAM 空间比较小,有时候需要扩展片外的 RAM 以供使用,RT-Th.... RT-Thread 操作系统 发表于 06-17 08:53 • 322次
“小马智行杯”广东省大学生程序设计竞赛决出胜负 6月5日,2022年“小马智行杯”广东省大学生程序设计竞赛(GDCPC)经过一天酣战,在线上顺利.... Pony.ai小马智行 发表于 06-16 11:44 • 292次
通过上面的图例,我们可以很清楚地看到,每一轮都会切换一批灯泡。关键是可能切换到之前已经切换过的灯泡,.... 算法与数据结构 发表于 06-16 09:30 • 187次
在标准C语言中编译出来的可执行程序 在标准C语言中,编译出来的可执行程序分为代码区(text)、数据区(data)和未初始化数据区(bs.... 嵌入式应用开发 发表于 06-16 09:01 • 257次
西门子1200/1500远程PLC程序的操作步骤及注意事项 工业智能远程控制终端GRM530能非常快捷的通过4G网络实现西门子1200/1500PLC和编程电脑.... PLC远程通讯 发表于 06-15 08:59 • 572次
提醒一下,用仿真器烧写DSP的FLASH程序完成后,给开发板断电, 然后拔掉仿真器和DSP开发板之间.... 封居强 发表于 06-14 09:57 • 174次
存储器数据的稳定可靠是MCU安全运行的基础,但环境因素和存储器本身的物理特性都可能造成存储器数据异常.... 科技绿洲 发表于 06-13 14:48 • 314次
基于51单片机的OLED显示图片文字 基于51单片机的OLED屏幕显示,可显示图片文字字母等。 王子变青蛙_35400519 发表于 06-12 00:43 • 1835次
蓝房子新式社区程序 ./oschina_soft/gitee-bluehouseapp.zip 发表于 06-10 11:24 •
如何使用Cortex-M MPU来提高嵌入式设备的安全性 Cortex-M 中的 MPU 是一个相当简单的设备。RTOS 负责在每次上下文切换时配置 MP.... 星星科技指导员 发表于 06-10 07:36 • 255次
程序包含了涂胶操作所必需的过程参数。在启动涂胶循环之前,上级控制装置选择程序,为涂胶循环确定常规过程.... 机器人及PLC自动化应用 发表于 06-07 10:24 • 236次
51单片机串口通讯仿真实验 实验目的1.掌握单片机串行口通信的程序设计,及简易三线式通讯的方法。2.了解实现串行通讯的硬.... 发表于 06-07 09:15 •
现场很多控制对象的活动具有对称性,尤其是一些具有互锁关系的动作,对应编写的逻辑处理也应具有对称性,例.... 工控论坛 发表于 06-07 09:11 • 417次
电源A题满分作品PCB+原理图+程序+论文 国赛 15 电源A题满分作品PCB+原理图+程序+论文资料分享 发表于 06-06 11:22 • 135次
51单片机精确延时程序合集 精确延时计算公式:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 发表于 06-06 09:35 •