51单片机汇编程序库_第1页
51单片机汇编程序库_第2页
51单片机汇编程序库_第3页
51单片机汇编程序库_第4页
51单片机汇编程序库_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、首页| 基础教程 | 单片机设计实例 | 常用芯片 | 电子基础当前位置:单片机教程 单片机设计实例 浏览文章今天是:单片机设计实例51单片机汇编程序库作者:来源:本站原创点击数:更新时间:2007年09月07日下面是一些51单片机汇编语言编程常用到的子程序代码库,点击即可跳到您所需要的汇编程序位置,如要补充请联系我1、片内RAM初始化子程序2、片外RAM初始化子程序3、片外RAM初始化子程序(双字节个单元)4、内部RAM数据复制程序5、外部RAM数据复制程序6、外部RAM数据复制程序7、外部RAM数据复制到内部RAM程序8、限幅滤波程序9、中位值滤波程序10、N点算术平均滤波11、N点加权平

2、均滤波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、原码有符号双字节乘法程

3、序34、原码有符号双字节除法程序35、单字节顺序查找程序36、单字节顺序查找程序37、双字节字符串顺序查找程序38、双字节字符串顺序查找程序39、N字节字符串顺序查找程序40、单字节最值查找程序41、浮点数顺序查找程序42、浮点数最值查找程序43、单字节折半查找程序;片内RAM初始化子程序IBCLR :MOV A,R0MOV R1,ACLR AIBC1 :MOV R1,AINC R1DJNZ R7,IBC1RET;片外RAM初始化子程序EBCLR1 :MOV A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,ACLR CEBC11 :MOVX DPTR,AINC DPTRD

4、JNZ R7,EBC11RET;片外RAM初始化子程序(双字节个单元)EBCLR2 :MOV A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,AMOV A,R7JZ EBC21INC R6EBC21 :CLR AMOVX DPTR,AINC DPTRDJNZ R7,EBC21DJNZ R6,EBC21RET;内部RAM数据复制程序;入口 :R0,R7;占用资源:A;堆栈需求:2字节;出口 :R1IBMOV :MOV A,R0ADD A,R7MOV R0,AMOV A,R1ADD A,R7MOV R1,AIBM1 :DEC R0DEC R1MOV A,R0MOV R1,AD

5、JNZ R7,IBM1RET;外部RAM数据复制程序;入口 :ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0,R1EBMOV1 :MOV A,ADDPLADD A,R7MOV DPL,ACLR AADDC A,ADDPHMOV DPH,AMOV A,R7ADD A,R1XCH A,R0ADDC A,#00HMOV P2,AEBM11 :DEC R0CJNE R0,#0FFH,EBM12DEC P2EBM12 :DEC DPLMOV A,DPLCJNE A,#0FFH,EBM13DEC DPHEBM13 :MOVX A,R0MOVX DPTR,ADJNZ R7,E

6、BM11RET;外部RAM数据复制程序;入口 :ADDPH,ADDPL,R6,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0,R1EBMOV2 :MOV A,ADDPLADD A,R7MOV DPL,AMOV A,R6ADDC A,ADDPHMOV DPH,AMOV A,R7ADD A,R1XCH A,R0ADDC A,R6MOV P2,AMOV A,R7JZ EBM21INC R6EBM21 :DEC R0CJNE R0,#0FFH,EBM22DEC P2EBM22 :DEC DPLMOV A,DPLCJNE A,#0FFH,EBM23DEC DPHEBM23 :MOVX A,R0M

7、OVX DPTR,ADJNZ R7,EBM21DJNZ R6,EBM21RET;外部RAM数据复制到内部RAM程序;入口 :ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2字节;出口 :R0ITEMOV :MOV A,ADDPLADD A,R7MOV DPL,AMOV A,ADDPHADDC A,#00HMOV DPH,AMOV A,R0ADD A,R7MOV R0,AITEM1 :DEC R0DEC DPLMOV A,DPLCJNE A,#0FFH,ITEM2DEC DPHITEM2 :MOVX A,DPTRMOV R0,ADJNZ R7,ITEM1RET;限幅滤波程序;入口 :

8、A,SDAT,DELTY;占用资源:B;堆栈需求:2字节;出口 :AJUGFILT :MOV B,ACLR CSUBB A,SDATJNC JUGFT1CPL AINC AJUGFT1 :SETB ASUBB A,#DELTYJNC JUGFT3MOV A,SDATRETJUGFT3 :MOV A,BMOV SDAT,A RET;中位值滤波程序;入口 :ADDPH,ADDPL,N;占用资源:ESELSORT;堆栈需求:4字节;出口 :AMEDFILT :LCALL ESELSORTMOV A,NCLR CRRC AADD A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,A

9、JNC MEDFT1INC DPHMEDFT1 :MOVX A,DPTRRET;N点算术平均滤波;入口 :ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口 :AAVFILT :MOV A,ADDPLMOV DPL,AMOV A,ADDPHMOV DPH,ACLR AMOV R3,AMOV R4,AMOV R7,NAVFT1 :MOVX A,DPTRINC DPTRADD A,R4MOV R4,AJNC AVFT2INC R3AVFT2 :DJNZ R7,AVFT1MOV R7,NMOV R2,#00HLCALL NDIV31MOV A,R4RET;N点加权平均滤波;

10、入口 :ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2字节;出口 :AQAVFILT :CLR AMOV R3,AMOV R4,AMOV R7,NMOV P2,ADDPHMOV R1,ADDPLMOV DPTR,#QAVTABQAVFT1 :MOVC A,A+DPTRMOV B,AMOVX A,R1INC DPTRINC R1MUL ABADD A,R4MOV R4,AMOV A,BADDC A,R3MOV R3,ADJNZ R7,QAVFT1MOV A,R4JNB ACC.7,QAVFT2INC R3QAVFT2 :MOV A,R3RETQAVTAB :DB;一阶加权滞后

11、滤波程序;入口 :A,DELTY;占用资源:B,R3,R4;堆栈需求:2字节;出口 :ABQFILT :MOV B,ACLR AMOV DPTR,#ABTABMOVC A,A+DPTRMUL ABMOV R4,AMOV R3,BMOV A,#01HMOVC A,A+DPTRMOV B,DELTYMUL ABADD A,R4MOV R4,AMOV A,BADDC A,R3MOV R3,AMOV A,R4JNB ACC.7,FT1INC R3FT1 :MOV A,R3MOV DELTY,ARETBQTAB :DB 80H,80H;双字节取补程序 /(R3R4)=(R3R4);入口 :R3,R4;占

12、用资源:ACC;堆栈需求:2字节;出口 :R3,R4CMPT :MOV A,R4CPL AADD A,#01HMOV R4,AMOV A,R3CPL AADDC A,#00HMOV R3,ARET;N节取补程序 /(R0)=(R0);入口 :R0,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0NCMPTN :MOV B,R0SETB CNCPT1 :MOV A,R0CPL AADDC A,#00HMOV R0,AINC R0DJNZ R7,NCPT1MOV R0,BRET;双字节无符号数加法程序 (R3R4+R6R7)=(R3R4);入口 :R3,R4,R6,R7;占用资源:ACC

13、;堆栈需求:2字节;出口 :R3,R4,CFNADD :MOV A,R4ADD A,R7MOV R4,AMOV A,R3ADDC A,R6MOV R3,ARET;N字节无符号数加法程序 (R0+R1)=(R0);入口 :R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0,CFNADDN :MOV B,R0CLR CNADN1 :MOV A,R0ADDC A,R1MOV R0,AINC R0INC R1DJNZ R7,NADN1MOV R0,BRET;双字节无符号数减法程序 (R3R4-R6R7)=(R3R4);入口 :R3,R4,R6,R7;占用资源:ACC;堆栈需求:2字

14、节;出口 :R3,R4NSUB :MOV A,R4CLR CSUBB A,R7MOV R4,AMOV A,R3SUBB A,R6MOV R3,ARET;N字节无符号数减法程序 (R0-R1)=(R0);入口 :R0,R1,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0,CFNSUBN :MOV B,R0MOV R7,NCLR CNSUBN1 :MOV A,R0SUBB A,R1MOV R0,AINC R0INC R1DJNZ R7,NSUBN1MOV R0,BRET;单字节无符号数乘法程序 (R3R4*R7)=(R2R3R4);入口 :R3,R4,R7;占用资源:ACC,B;堆栈需

15、求:2字节;出口 :R2,R3,R4NMUL21 :MOV A,R4MOV B,R7MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,R7MUL ABADD A,R3MOV R3,ACLR AADDC A,BMOV R2,ACLR OVRET;单字节无符号数乘法程序 (R2R3R4*R7)=(R5R2R3R4);入口 :R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R5,R2,R3,R4NMUL31 :MOV A,R4MOV B,R7MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,R7MUL ABADD A,R3MOV

16、R3,ACLR AADDC A,BXCH A,R2MOV B,R7MUL ABADD A,R2MOV R2,ACLR AADDC A,BMOV R5,ACLR OVRET;单字节无符号数乘法程序 (R5R2R3R4*R7)=(R7R5R2R3R4);入口 :R5,R2,R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R7,R5,R2,R3,R4NMUL41 :MOV A,R4MOV B,R7MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,R7MUL ABADD A,R3MOV R3,ACLR AADDC A,BXCH A,R2MOV B,R7MUL AB

17、ADD A,R2MOV R2,ACLR AADDC A,BXCH A,R5MOV B,R7MUL ABADD A,R5MOV R5,ACLR AADDC A,BMOV R7,ACLR OVRET;双字节无符号数乘法程序 (R3R4*R6R7)=(R5R2R3R4);入口 :R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R5,R2,R3,R4NMUL22 :MOV A,R4MOV B,R7MUL ABXCH A,R4MOV R5,BMOV B,R6MUL ABADD A,R5MOV R5,ACLR AADDC A,BMOV R2,AMOV A,R3MOV B,R7MUL

18、 ABADD A,R5MOV R5,AMOV A,BADDC A,R2MOV R2,ACLR AADDC A,#00HXCH A,R3MOV B,R6MUL ABADD A,R2MOV R2,AMOV A,BADDC A,R3XCH A,R5MOV R3,ACLR OVRET;双字节无符号数乘法程序 (R2R3R4*R6R7)=(R1R5R2R3R4);入口 :R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R1,R5,R2,R3,R4NMUL32 :MOV A,R4MOV B,R7MUL ABXCH A,R4MOV R5,BMOV B,R6MUL ABADD A

19、,R5MOV R5,ACLR AADDC A,BMOV R1,AMOV A,R3MOV B,R7MUL ABADD A,R5MOV R5,AMOV A,BADDC A,R1MOV R1,ACLR AADDC A,#00HXCH A,R3MOV B,R6MUL ABADD A,R1MOV R1,AMOV A,BADDC A,R3XCH A,R5MOV R3,AMOV A,R2MOV B,R7MUL ABADD A,R1MOV R1,AMOV A,BADDC A,R5MOV R5,ACLR AADDC A,#00HXCH A,R2MOV B,R6MUL ABADD A,R5MOV R5,AMOV

20、A,BADDC A,R2XCH A,R1MOV R2,ACLR OVRET;N字节无符号数乘法程序 (R0*R1)=(R0);入口 :R0,R1,M,N;占用资源:ACC,B,R2,R5,R6,R7,NCNT;堆栈需求:2字节;出口 :R0NMULMN :MOV A,MADD A,R0MOV R5,AXCH A,R1XCH A,R5ADD A,NXCH A,R0MOV R6,AMOV B,MMOV NCNT,BNMLMN1 :DEC R0DEC R1CLR AXCH A,R1MOV R0,ADJNZ NCNT,NMLMN1MOV NCNT,BNMLMN2 :CLR AXCH A,R0MOV R

21、2,AMOV A,R6MOV R0,AMOV A,R5MOV R1,AMOV R7,NCLR CNMLMN3 :MOV A,R2MOV B,R1INC R1MUL ABADDC A,R0MOV R0,AINC R0MOV A,BADDC A,R0MOV R0,ADJNZ R7,NMLMN3INC R0INC R6DJNZ NCNT,NMLMN2MOV A,R0CLR CSUBB A,MSUBB A,NMOV R0,ARET;单字节无符号除法程序 (R2R3R4/R7)=(R2)R3R4 余数R7;入口 :R2,R3,R4,R7;占用资源:ACC,B,F0;堆栈需求:3字节;出口 :(R2),R

22、3,R4,R7,OVNDIV31 :MOV A,R2MOV B,R7DIV ABPUSH AMOV R2,BMOV B,#10HNDV311 :CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV F0,CCLR CSUBB A,R7JB F0,NDV312JC NDV313NDV312 :MOV R2,AINC R4NDV313 :DJNZ B,NDV311POP ACLR OVJZ NDV314SETB OVNDV314 :XCH A,R2MOV R7,ARET;单字节无符号除法程序 (R5R2R3R

23、4/R7)=(R5)R2R3R4 余数R7;入口 :R2,R3,R4,R7;占用资源:ACC,B,F0;堆栈需求:3字节;出口 :(R5),R2,R3,R4,R7,OVNDIV41 :MOV A,R5MOV B,R7DIV ABPUSH AMOV R5,BMOV B,#18HNDV411 :CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R5RLC AMOV R5,AMOV F0,CCLR CSUBB A,R7JB F0,NDV412JC NDV413NDV412 :MOV R5,AINC R4

24、NDV413 :DJNZ B,NDV411POP ACLR OVJZ NDV414SETB OVNDV414 :XCH A,R5MOV R7,ARET;双字节无符号除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余数R6R7;入口 :R5,R2,R3,R4,R6,R7;占用资源:ACC,B,F0;堆栈需求:4字节;出口 :(R2),R3,R4,R6,R7,OVNDIV42 :MOV A,R1PUSH AMOV B,#00HNDV421 :MOV A,R2CLR CSUBB A,R7MOV R1,AMOV A,R5SUBB A,R6JC NDV422MOV R5,AMOV A,R1M

25、OV R2,AINC BSJMP NDV421NDV422 :PUSH BMOV B,#10HNDV423 :CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AXCH A,R5RLC AXCH A,R5MOV F0,CCLR CSUBB A,R7MOV R1,AMOV A,R5SUBB A,R6JB F0,NCV424JC NDV425NCV424 :MOV R5,AMOV A,R1MOV R2,AINC R4NDV425 :DJNZ B,NDV423POP ACLR OVJNZ NDV426SETB OVN

26、DV426 :XCH A,R2MOV R7,AMOV A,R5MOV R6,APOP AMOV R1,ARET;N字节无符号除法程序(组合) (R0/R1)=(R0);入口 :R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN;堆栈需求:4字节;出口 :R0;NDIVMN :MOV A,MCLR CSUBB A,NMOV NCNT,AADD A,R0MOV R4,AXCH A,R0MOV R3,AMOV A,R1MOV R5,AMOV R2,#00HNDVMN1 :MOV R7,NLCALL NSUBNMOV A,R5MOV

27、 R1,AJC NDVMN2INC R2SJMP NDVMN1NDVMN2 :MOV R7,NLCALL NADDNMOV A,NCNTSWAP ARR AMOV NCNT,ANDVMN3 :MOV A,R3MOV R0,AMOV R7,MLCALL NRLCNMOV F0,CMOV A,R4MOV R0,AMOV A,R5MOV R1,AMOV R7,NLCALL NSUBNJB F0,NDVMN4JC NDVMN5NDVMN4 :MOV A,R3MOV R0,AINC R0SJMP NDVMN6NDVMN5 :MOV A,R5MOV R1,AMOV R7,NLCALL NADDNNDVMN

28、6 :DJNZ NCNT,NDVMN3MOV A,R4MOV R1,AMOV A,R2MOV R1,AMOV A,R3MOV R0,ARET;N字节无符号除法程序(集成) (R0/R1)=(R0);入口 :R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,F0;堆栈需求:2字节;出口 :R0NDIVMN :MOV A,MCLR CSUBB A,NMOV B,AADD A,R0MOV R4,AXCH A,R0MOV R3,AMOV A,R1MOV R5,AMOV R2,#00HNDVMN1 :MOV R7,NCLR CNDVMN2 :MOV A,R0SUBB A,R1MOV R

29、0,AINC R0INC R1DJNZ R7,NDVMN2MOV A,R4MOV R0,AMOV A,R5MOV R1,AJC NDVMN3INC R2SJMP NDVMN1NDVMN3 :MOV R7,NCLR CNDVMN4 :MOV A,R0ADDC A,R1MOV R0,AINC R0INC R1DJNZ R7,NDVMN4MOV A,#08HMUL ABMOV B,ANDVMN5 :MOV A,R3MOV R0,AMOV R7,MCLR CNDVMN6 :MOV A,R0RLC AMOV R0,AINC R0DJNZ R7,NDVMN6MOV F0,CMOV A,R4MOV R0,A

30、MOV A,R5MOV R1,AMOV R7,NCLR CNDVMN7 :MOV A,R0SUBB A,R1MOV R0,AINC R0INC R1DJNZ R7,NDVMN7JB F0,NDVMNBJC NDVMN8NDVMNB :MOV A,R3MOV R0,AINC R0SJMP NDVMNANDVMN8 :MOV R7,NMOV A,R4MOV R0,AMOV A,R5MOV R1,ACLR CNDVMN9 :MOV A,R0ADDC A,R1MOV R0,AINC R0INC R1DJNZ R7,NDVMN9NDVMNA :DJNZ B,NDVMN5MOV A,MCLR CSUBB

31、A,NADD A,R3MOV R1,AMOV A,R2MOV R1,AMOV A,R3MOV R0,ARET;N字节数据左移程序 RLC(R0)=(CFR0);入口 :R0,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0,CFNRLCN :MOV B,R0CLR CNRLN1 :MOV A,R0RLC AMOV R0,AINC R0DJNZ R7,NRLN1MOV R0,BRET;原码有符号双字节减法程序 (R3R4-R6R7)=R3R4;入口 :R3,R4,R6,R7;占用资源:ACC,DADD;堆栈需求:6字节;出口 :R3,R4,OVDSUB :MOV A,R6CPL ACC

32、.7MOV R6,ALCALL DADDRET;原码有符号双字节加法程序 (R3R4+R6R7)=R3R4;入口 :R3,R4,R6,R7;占用资源:ACC,SR0,NADD,NSUB,CMPT;堆栈需求:4字节;出口 :R3,R4,OVDADD :MOV A,R3MOV C,ACC.7MOV SR0,CXRL A,R6MOV C,ACC.7MOV A,R3CLR ACC.7MOV R3,AMOV A,R6CLR ACC.7MOV R6,AJC DAB2LCALL NADDMOV A,R3JB ACC.7,DABEDAB1 :MOV C,SR0MOV ACC.7,CMOV R3,ACLR OV

33、RETDABE :SETB OVRETDAB2 :LCALL NSUBMOV A,R3JNB ACC.7,DAB1LCALL CMPTCPL SR0SJMP DAB1;原码有符号双字节乘法程序 (R3R4*R6R7)=(R5R2R3R4);入口 :R3,R4,R6,R7;占用资源:ACC,SR0,NMUL22;堆栈需求:4字节;出口 :R5,R2,R3,R4IMUL :MOV A,R3XRL A,R6MOV C,ACC.7MOV SR0,CMOV A,R3CLR ACC.7MOV R3,AMOV A,R6CLR ACC.7MOV R6,ALCALL NMUL22MOV A,R5MOV C,SR

34、0MOV ACC.7,CMOV R5,ARET;原码有符号双字节除法程序 (R5R2R3R4/R6R7)=(R3R4) 余数(R6R7);入口 :R5,R2,R3,R4;占用资源:ACC,SR0,NDIV42;堆栈需求:6字节;出口 :R3,R4,R6,R7,OVIDIV :MOV A,R5XRL A,R6MOV C,ACC.7MOV SR0,CMOV A,R5CLR ACC.7MOV R5,AMOV A,R6CLR ACC.7MOV R6,ALCALL NDIV42MOV A,R3JB ACC.7,IDIVEJB OV,IDIVEMOV C,SR0MOV ACC.7,CMOV R3,ARET

35、IDIVE :SETB OVRET;单字节顺序查找程序;入口 :R0,R1,A,R7;占用资源:B;堆栈需求:2字节;出口 :R0,R1,AFINDB1 :MOV B,AMOV DPL,R1MOV DPH,R0FINDB11 :MOVX A,DPTRCJNE A,B,FINDB12MOV R1,DPLMOV R0,DPHCLR ARETFINDB12 :INC DPTRDJNZ R7,FINDB11MOV A,#0FFHRET;单字节顺序查找程序;入口 :R0,R1,A,R6,R7;占用资源:B;堆栈需求:2字节;出口 :R0,R1,AFINDB2 :MOV B,AMOV DPL,R1MOV

36、DPH,R0MOV A,R7JZ FINDB21INC R6FINDB21 :MOVX A,DPTRCJNE A,B,FINDB22MOV R1,DPLMOV R0,DPHCLR ARETFINDB22 :INC DPTRDJNZ R7,FINDB21DJNZ R6,FINDB21MOV A,#0FFHRET;双字节字符串顺序查找程序;入口 :R0,R1,R3,R4,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0,R1,AFINDS1 :MOV DPL,R1MOV DPH,R0FINDS11 :MOVX A,DPTRINC DPTRCLR CSUBB A,R4JNZ FINDS12

37、MOVX A,DPTRSUBB A,R3JNZ FINDS12MOV A,DPLCLR CSUBB A,#01HMOV R1,AMOV A,DPHSUBB A,#00HMOV R0,ACLR ARETFINDS12 :DJNZ R7,FINDS11MOV A,#0FFHRET;双字节字符串顺序查找程序;入口 :R0,R1,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0,R1,AFINDS2 :MOV DPL,R1MOV DPH,R0MOV A,R7JZ FINDS21INC R6FINDS21 :MOVX A,DPTRINC DPTRCLR CSUBB A,R4J

38、NZ FINDS22MOVX A,DPTRSUBB A,R3JNZ FINDS22MOV A,DPLCLR CSUBB A,#01HMOV R1,AMOV A,DPHSUBB A,#00HMOV R0,ACLR ARETFINDS22 :DJNZ R7,FINDS21DJNZ R6,FINDS21MOV A,#0FFHRET;N字节字符串顺序查找程序;入口 :ADDPH,ADDPL,R0,R6,R7,N;占用资源:ACC,B,R2,NCNT;堆栈需求:2字节;出口 :ADDPH,ADDPL,AFINDN :MOV A,R0MOV R2,AMOV A,ADDPLMOV DPL,AMOV A,AD

39、DPHMOV DPH,AMOV A,R7JZ FINDN1INC R6FINDN1 :MOV A,R2MOV R0,AMOV A,NMOV NCNT,AFINDN2 :MOVX A,DPTRCLR CSUBB A,R0JNZ FINDN3INC DPTRINC R0DJNZ NCNT,FINDN2MOV A,DPLCLR CSUBB A,NMOV ADDPL,AMOV A,DPHSUBB A,#00HMOV ADDPH,ACLR ARETFINDN3 :CLR CMOV A,R0SUBB A,R2JNZ FINDN4INC DPTRFINDN4 :DJNZ R7,FINDN1DJNZ R6,F

40、INDN1MOV A,#0FFHRET;单字节最值查找程序;入口 :R0,R1,R6,R7;占用资源:ACC,B;堆栈需求:2字节;出口 :R0(最大值),R1(最小值),R2,R3,R4,R5FMAMIB :MOV DPL,R1MOV DPH,R0MOVX A,DPTRMOV R0,AMOV R1,AMOV A,DPLMOV R3,AMOV R5,AMOV A,DPHMOV R2,AMOV R4,AMOV A,R7JZ FMMB1INC R6FMMB1 :MOVX A,DPTRMOV B,ASETB CSUBB A,R0JC FMMB2MOV R0,BMOV R3,DPLMOV R2,DPH

41、SJMP FMMB3FMMB2 :MOV A,BCLR CSUBB A,R1JNC FMMB3MOV R1,BMOV R5,DPLMOV R4,DPHFMMB3 :INC DPTRDJNZ R7,FMMB1DJNZ R6,FMMB1RET;浮点数顺序查找程序;入口 :R0,R1,R2,R3,R4,R6,R7;占用资源:B,NCNT,FCMP;堆栈需求:2字节;出口 :R0,R1,AFINDF :MOV DPL,R1MOV DPH,R0MOV A,R7MOV B,AMOV NCNT,R6JZ FINDF1INC NCNTFINDF1 :MOVX A,DPTRINC DPTRMOV R5,AMOVX A,DPTRINC DPTRMOV R6,AMOVX A,DPTRINC DPTRMOV R7,ALCALL FCMPJNZ FINDF2MOV A,DPLCLR CSUBB A,#03HMOV R1,AMOV A,DPHSUBB A,#00HMOV R0,ACLR ARETFINDF2 :DJNZ B,FINDF1DJNZ NCNT,FINDF1MOV A,#0FFHRET;浮点数最值查找程序;入口 :ADDPH,ADDPL,R6,R7;占用资源:ACC,B,NCNT,ITEMOV,EBMOV,MOVB,MOVR1,FCMP;堆栈需求:5字节;出口 :R0(最大值),R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论