1、51单片机汇编程序集2辛普生积分程序内部RAM数据排序程序(升序外部RAM数据排序程序(升序外部RAM浮点数排序程序(升序BCD小数转换为二进制小数(2位BCD小数转换为二进制小数(N位BCD整数转换为二进制整数(1位BCD整数转换为二进制整数(2位BCD整数转换为二进制整数(3位BCD整数转换为二进制整数(N位二进制小数(2位转换为十进制小数(分离BCD码二进制小数(M位转换为十进制小数(分离BCD码二进制整数(2位转换为十进制整数(分离BCD码二进制整数(2位转换为十进制整数(组合BCD码二进制整数(3位转换为十进制整数(分离BCD码二进制整数(3位转换为十进制整数(组合BCD码二进制整数
2、(M位转换为十进制整数(组合BCD码三字节无符号除法程序(R2R3R4/R7=(R2R3R4 余数R7 ;辛普生积分程序;入口: DPTR,N,COUNT;占用资源: A CC,R3,R4,R6,R7;堆栈需求: 2字节;出口: R3,R4SJF : MOV R7,NMOVX A,DPT RINC DPTRMOV R4,AMOV R3,#00HDEC R7SJF1 : MOVX A,DPT R INC DPTRCLR CRLC AMOV R6,ACLR ARLC AXCH A,R7JNB ACC.0,SJF2XCH A,R6RLC AXCH A,R6XCH A,R7RLC AXCH A,R7S
3、JF2 : XCH A,R7XCH A,R6ADD A,R4MOV R4,AMOV A,R6MOV R3,ADJNZ R7,SJF1SJF3 : MOVX A,DPT R ADD A,R4MOV R4,ACLR AADDC A,R3MOV R3,AMOV R7,#COUNT LCALL NMUL21MOV A,NMOV B,#03HMUL ABMOV R7,ALCALL NDIV31RETNMUL21 : MOV A,R4 MOV B,R7MUL ABMOV R4,AMOV A,BXCH A,R3MOV B,R7MUL ABMOV R3,ACLR AADDC A,BMOV R2,ACLR OV
4、RETNDIV31 : MOV B,#10H NDV311 : 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,A INC R4NDV313 : DJNZ B,NDV311 RET;内部RAM数据排序程序(升序 ;入口: R0(起始地址,N(数据个数 ;占用资源: A CC,B,R5,R6,R7;堆栈需求: 2字节;出口: R0ISELSORT : MOV R7,N DEC R7ISST1:
5、 MOV A,R7MOV R6,AMOV A,R0MOV R1,AMOV R2,AMOV B,R1ISST2: INC R1MOV A,R1CLR CSUBB A,BJC ISST3MOV A,R1MOV R2,AMOV B,R1ISST3: DJNZ R6,ISST2XCH A,R1MOV B,R2MOV R1,BMOV R1,ADJNZ R7,ISST1RET;外部RAM数据排序程序(升序;入口: A DDPH,ADDPL(起始地址,N(数据个数 ;占用资源: A CC,B,R0,R1,R5,R7;堆栈需求: 2字节;出口: A DDPH-ADDPLESELSORT : MOV R7,ND
6、EC R7ESST1: MOV A,R7MOV R6,AMOV DPL,ADDPLMOV R1,DPLMOV DPH,ADDPHMOV R0,DPHMOVX A,DPT RMOV B,AESST2: INC DPT RMOVX A,DPT RSUBB A,BJC ESST3MOV R0,DPLMOV R1,DPHMOVX A,DPT RMOV B,AESST3: DJNZ R6,ESST2MOVX A,DPT RXCH A,BMOVX DPT R,AMOV DPL,R0MOV DPH,R1MOV A,BMOVX DPT R,ADJNZ R7,ESST1RET;外部RAM浮点数排序程序(升序;入
7、口: A DDPH,ADDPL(起始地址,N(数据个数;占用资源: A CC,B,R0,R1,R2,R3,R4,R5,R6,R7,NCNT ;堆栈需求: 5字节;出口: A DDPH,ADDPLFSORT: MOV A,NMOV NCNT,ADEC NCNTFST1 : MOV B,NCNT MOV DPL,ADDPL MOV R1,DPLMOV DPH,ADDPH MOV R0,DPH MOVX A,DPT R MOV R2,AINC DPTRMOVX A,DPT R MOV R3,AINC DPTRMOVX A,DPT R MOV R4,AFST2 : INC DPTR MOVX A,DP
8、T R MOV R5,AINC DPTRMOVX A,DPT R MOV R6,AINC DPTRMOVX A,DPT R MOV R7,APUSH BLCALL FCMPPOP BJNC FST4MOV A,DPLCLR CSUBB A,#02HMOV R1,AMOV R0,DPHJNC FST3DEC R0FST3 : MOV A,R5 MOV R2,AMOV A,R6MOV R3,AMOV A,R7MOV R4,AFST4 : DJNZ B,FST2 MOV A,DPLCLR CSUBB A,#02HMOV DPL,AJNC FST5DEC DPHFST5 : MOV A,R2 MOVX
9、 DPT R,A INC DPTRMOV A,R3MOVX DPT R,AINC DPTRMOV A,R4MOVX DPT R,AMOV A,R0MOV P2,AMOV A,R5MOVX R1,AINC R1MOV A,R6MOVX R1,AINC R1MOV A,R7MOVX R1,ADJNZ NCNT,FST1RET;BCD小数转换为二进制小数(2位 ;入口: R0(低位首址,R7;占用资源: A CC,B,R5;堆栈需求: 2字节;出口: R3,R4PDT B : CLR AMOV R3,APDB1 : MOV A,R3 MOV B,#9AH MUL ABMOV R5,BXCH A,R4
10、MOV B,#19H MUL ABADD A,R4MOV A,R5ADDC A,BMOV R5,AMOV A,R0 MOV B,#9AH MUL ABADD A,R5MOV R4,ACLR AADDC A,BXCH A,R3MOV B,#19H MUL ABADD A,R4MOV R4,AMOV A,BMOV R3,AMOV A,R0MOV B,#19HMUL ABADD A,R3MOV R3,ADEC R0DJNZ R7,PDB1RET;BCD小数转换为二进制小数(N位 ;入口: R1(低位首址,M,N;占用资源: A CC,B,R2,R3,R7;堆栈需求: 2字节;出口: R0PDT BM
11、N : MOV A,R0MOV R2,AMOV A,R1MOV R3,AMOV B,NCLR APDBMN1 : MOV R0,AINC R0DJNZ B,PDBMN1MOV A,NSWAP ARR AMOV R7,APDBMN2 : MOV A,R2 MOV R0,AMOV A,R3MOV R1,AMOV B,MCLR CPDBMN3 : MOV A,R1 ADDC A,R1DA AJNB ACC.4,PDBMN4 SETB CCLR ACC.4PDBMN4 : MOV R1,A INC R1DJNZ B,PDBMN3MOV B,NPDBMN5 : MOV A,R0 RLC AMOV R0,
12、AINC R0DJNZ B,PDBMN5DJNZ R7,PDBMN2MOV A,R2MOV R0,ARET;BCD整数转换为二进制整数(1位 ;入口: R0(高位地址,R7;占用资源: A CC,B;堆栈需求: 2字节;出口: R4IDTB1: CLR AMOV R4,AIDB11: MOV A,R4MOV B,#0AHMUL ABADD A,R0INC R0MOV R4,ADJNZ R7,IDB11RET;BCD整数转换为二进制整数(2位 ;入口: R0(高位地址,R7;占用资源: A CC,B;堆栈需求: 2字节;出口: R3,R4IDTB2: CLR AMOV R3,AMOV R4,AI
13、DB21: MOV A,R4MOV B,#0AHMUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,AMOV A,R4ADD A,R0INC R0MOV R4,ACLR AADDC A,R3MOV R3,ADJNZ R7,IDB21RET;BCD整数转换为二进制整数(3位 ;入口: R0(高位地址,R7;占用资源: A CC,B;堆栈需求: 2字节;出口: R2,R3,R4 IDTB3: CLR A MOV R2,AMOV R3,AMOV R4,AIDB31: MOV A,R4 MOV B,#0AH MUL ABMOV R4,
14、AMOV A,BXCH A,R3MOV B,#0AH MUL ABADD A,R3MOV R3,ACLR AADDC A,BXCH A,R2MOV B,#0AH MUL ABADD A,R2MOV R2,AMOV A,R4ADD A,R0INC R0MOV R4,ACLR AADDC A,R3MOV R3,ACLR AADDC A,R2MOV R2,ADJNZ R7,IDB31RET;BCD整数转换为二进制整数(N位 ;入口: R1(高位地址,M,N;占用资源: A CC,B,R2,R7,NCNT,F0 ;堆栈需求: 2字节;出口: R0IDTBMN : MOV A,R0MOV R2,AMOV
15、 B,NCLR AIDBMN1 : MOV R0,AINC R0DJNZ B,IDBMN1MOV A,R2MOV R0,AMOV A,MMOV NCNT,AIDBMN2 : MOV R7,N CLR ACLR F0IDBMN3 : XCH A,R0 MOV B,#0AHMUL ABMOV C,F0ADDC A,R0MOV F0,CMOV R0,AINC R0MOV A,BDJNZ R7,IDBMN3 MOV A,R2MOV R0,AMOV A,R1INC R1ADD A,R0MOV R0,ADJNZ NCNT,IDBMN2 RET;二进制小数(2位转换为十进制小数(分离BCD码 ;入口: R3
16、,R4,R7;占用资源: A CC,B;堆栈需求: 3字节;出口: R0PBT D : MOV A,R7PUSH APBD1 : MOV A,R4MOV B,#0AHMUL ABMOV R4,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,ACLR AADDC A,BMOV R0,AINC R0DJNZ R7,PBD1POP AMOV R7,AMOV A,R0CLR CSUBB A,R7MOV R0,ARET;二进制小数(M位转换为十进制小数(分离BCD码 ;入口: R1,M,N;占用资源: A CC,B,R2,R3,R7,NCNT;堆栈需求: 2
17、字节;出口: R0PBT DMN : MOV A,R0MOV R2,AMOV A,R1MOV R3,AMOV A,NMOV NCNT,APBDMN1 : MOV R7,MCLR ACLR F0PBDMN2 : XCH A,R1MOV B,#0AHMUL ABMOV C,F0ADDC A,R1MOV F0,CMOV R1,AINC R1MOV A,BDJNZ R7,PBDMN2ADDC A,#00HMOV R0,AINC R0MOV A,R3MOV R1,ADJNZ NCNT,PBDMN1MOV A,R2MOV R0,ARET;二进制整数(2位转换为十进制整数(分离BCD码 ;入口: R3,R4
18、;占用资源: A CC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD21 : MOV NCNT,#00HMOV R2,#00HIBD211 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV R0,AINC R0INC NCNTMOV A,R3ORL A,R4JNZ IBD211MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(2位转换为十进制整数(组合BCD码 ;入口: R3,R4;占用资源: A CC,B,R7;堆栈需求: 3字节;出口: R0IBTD22 : MOV A,R0PUSH AMOV R7,#03
19、HCLR AIBD221 : MOV R0,AINC R0DJNZ R7,IBD221POP AMOV R0,AMOV R7,#10HIBD222 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV B,#03HIBD223 : MOV A,R0ADDC A,R0DA AMOV R0,AINC R0DJNZ B,IBD223POP AMOV R0,ADJNZ R7,IBD222RET;二进制整数(3位转换为十进制整数(分离BCD码 ;入口: R2,R3,R4;占用资源: A CC,R2,NDIV31;堆栈需求: 5字节;出口:
20、R0,NCNTIBTD31 : CLR AMOV NCNT,AIBD311 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV R0,AINC R0INC NCNTMOV A,R2ORL A,R3ORL A,R4JNZ IBD311MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(3位转换为十进制整数(组合BCD码 ;入口: R2,R3,R4;占用资源: A CC,B,R7;堆栈需求: 3字节;出口: R0IBTD32 : MOV A,R0PUSH AMOV R7,#04HCLR AIBD321 : MOV R0,A INC R0DJNZ
21、 R7,IBD321 POP AMOV R0,AMOV R7,#18HIBD322 : PUSH A CLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV B,#04HIBD323 : MOV A,R0 ADDC A,R0DA AMOV R0,AINC R0 DJNZ B,IBD323 POP A MOV R0,A DJNZ R7,IBD322 RET ;二进制整数(M 位转换为十进制整数(组合 BCD 码 ;入口: R1,M,N ;占用资源: ACC,B,R2,R3,R7 ;堆栈需求: 2 字节 ;出口
22、: R0 IBTDMN : MOV A,R0 MOV R2,A MOV A,R1 MOV R3,A MOV B,N CLR A IBDMN1 : MOV R0,A INC R0 DJNZ B,IBDMN1 MOV A,M SWAP A RR A CLR C MOV R7,A IBDMN2 : MOV A,R2 MOV R0,A MOV A,R3 MOV R1,A MOV B,M IBDMN3 : MOV A,R1 RLC A MOV R1,A INC R1 DJNZ B,IBDMN3 MOV B,N IBDMN4 : MOV A,R0 ADDC A,R0 DA A JNB ACC.4,IBDM
23、N5 SETB C CLR ACC.4 IBDMN5 : MOV R0,A INC R0 DJNZ B,IBDMN4 DJNZ R7,IBDMN2 MOV A,R2 MOV R0,A RET ;三字节无符号除法程序(R2R3R4/R7=(R2R3R4 余数 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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1