51单片机汇编程序集2.docx

上传人:b****6 文档编号:7227999 上传时间:2023-01-22 格式:DOCX 页数:19 大小:16.67KB
下载 相关 举报
51单片机汇编程序集2.docx_第1页
第1页 / 共19页
51单片机汇编程序集2.docx_第2页
第2页 / 共19页
51单片机汇编程序集2.docx_第3页
第3页 / 共19页
51单片机汇编程序集2.docx_第4页
第4页 / 共19页
51单片机汇编程序集2.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

51单片机汇编程序集2.docx

《51单片机汇编程序集2.docx》由会员分享,可在线阅读,更多相关《51单片机汇编程序集2.docx(19页珍藏版)》请在冰豆网上搜索。

51单片机汇编程序集2.docx

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码

二进制整数(M位转换为十进制整数(组合BCD码

三字节无符号除法程序(R2R3R4/R7=(R2R3R4余数R7;辛普生积分程序

;入口:

DPTR,N,COUNT

;占用资源:

ACC,R3,R4,R6,R7

;堆栈需求:

2字节

;出口:

R3,R4

SJF:

MOVR7,N

MOVXA,@DPTR

INCDPTR

MOVR4,A

MOVR3,#00H

DECR7

SJF1:

MOVXA,@DPTRINCDPTR

CLRC

RLCA

MOVR6,A

CLRA

RLCA

XCHA,R7

JNBACC.0,SJF2

XCHA,R6

RLCA

XCHA,R6

XCHA,R7

RLCA

XCHA,R7

SJF2:

XCHA,R7

XCHA,R6

ADDA,R4

MOVR4,A

MOVA,R6

MOVR3,A

DJNZR7,SJF1

SJF3:

MOVXA,@DPTRADDA,R4

MOVR4,A

CLRA

ADDCA,R3

MOVR3,A

MOVR7,#COUNTLCALLNMUL21

MOVA,N

MOVB,#03H

MULAB

MOVR7,A

LCALLNDIV31

RET

NMUL21:

MOVA,R4MOVB,R7

MULAB

MOVR4,A

MOVA,B

XCHA,R3

MOVB,R7

MULAB

MOVR3,A

CLRA

ADDCA,B

MOVR2,A

CLROV

RET

NDIV31:

MOVB,#10HNDV311:

CLRC

MOVA,R4

RLCA

MOVR4,A

MOVA,R3

RLCA

MOVR3,A

MOVA,R2

RLCA

MOVR2,A

MOVF0,C

CLRC

SUBBA,R7

JBF0,NDV312

JCNDV313

NDV312:

MOVR2,AINCR4

NDV313:

DJNZB,NDV311RET

;内部RAM数据排序程序(升序;入口:

R0(起始地址,N(数据个数;占用资源:

ACC,B,R5,R6,R7

;堆栈需求:

2字节

;出口:

R0

ISELSORT:

MOVR7,NDECR7

ISST1:

MOVA,R7

MOVR6,A

MOVA,R0

MOVR1,A

MOVR2,A

MOVB,@R1

ISST2:

INCR1

MOVA,@R1

CLRC

SUBBA,B

JCISST3

MOVA,R1

MOVR2,A

MOVB,@R1

ISST3:

DJNZR6,ISST2

XCHA,@R1

MOVB,R2

MOVR1,B

MOV@R1,A

DJNZR7,ISST1

RET

;外部RAM数据排序程序(升序

;入口:

ADDPH,ADDPL(起始地址,N(数据个数;占用资源:

ACC,B,R0,R1,R5,R7

;堆栈需求:

2字节

;出口:

ADDPH-ADDPL

ESELSORT:

MOVR7,N

DECR7

ESST1:

MOVA,R7

MOVR6,A

MOVDPL,ADDPL

MOVR1,DPL

MOVDPH,ADDPH

MOVR0,DPH

MOVXA,@DPTR

MOVB,A

ESST2:

INCDPTR

MOVXA,@DPTR

SUBBA,B

JCESST3

MOVR0,DPL

MOVR1,DPH

MOVXA,@DPTR

MOVB,A

ESST3:

DJNZR6,ESST2

MOVXA,@DPTR

XCHA,B

MOVX@DPTR,A

MOVDPL,R0

MOVDPH,R1

MOVA,B

MOVX@DPTR,A

DJNZR7,ESST1

RET

;外部RAM浮点数排序程序(升序

;入口:

ADDPH,ADDPL(起始地址,N(数据个数

;占用资源:

ACC,B,R0,R1,R2,R3,R4,R5,R6,R7,NCNT;堆栈需求:

5字节

;出口:

ADDPH,ADDPL

FSORT:

MOVA,N

MOVNCNT,A

DECNCNT

FST1:

MOVB,NCNTMOVDPL,ADDPLMOVR1,DPL

MOVDPH,ADDPHMOVR0,DPHMOVXA,@DPTRMOVR2,A

INCDPTR

MOVXA,@DPTRMOVR3,A

INCDPTR

MOVXA,@DPTRMOVR4,A

FST2:

INCDPTRMOVXA,@DPTRMOVR5,A

INCDPTR

MOVXA,@DPTRMOVR6,A

INCDPTR

MOVXA,@DPTRMOVR7,A

PUSHB

LCALLFCMP

POPB

JNCFST4

MOVA,DPL

CLRC

SUBBA,#02H

MOVR1,A

MOVR0,DPH

JNCFST3

DECR0

FST3:

MOVA,R5MOVR2,A

MOVA,R6

MOVR3,A

MOVA,R7

MOVR4,A

FST4:

DJNZB,FST2MOVA,DPL

CLRC

SUBBA,#02H

MOVDPL,A

JNCFST5

DECDPH

FST5:

MOVA,R2MOVX@DPTR,AINCDPTR

MOVA,R3

MOVX@DPTR,A

INCDPTR

MOVA,R4

MOVX@DPTR,A

MOVA,R0

MOVP2,A

MOVA,R5

MOVX@R1,A

INCR1

MOVA,R6

MOVX@R1,A

INCR1

MOVA,R7

MOVX@R1,A

DJNZNCNT,FST1

RET

;BCD小数转换为二进制小数(2位;入口:

R0(低位首址,R7

;占用资源:

ACC,B,R5

;堆栈需求:

2字节

;出口:

R3,R4

PDTB:

CLRA

MOVR3,A

PDB1:

MOVA,R3MOVB,#9AHMULAB

MOVR5,B

XCHA,R4

MOVB,#19HMULAB

ADDA,R4

MOVA,R5

ADDCA,B

MOVR5,A

MOVA,@R0MOVB,#9AHMULAB

ADDA,R5

MOVR4,A

CLRA

ADDCA,B

XCHA,R3

MOVB,#19HMULAB

ADDA,R4

MOVR4,A

MOVA,B

MOVR3,A

MOVA,@R0

MOVB,#19H

MULAB

ADDA,R3

MOVR3,A

DECR0

DJNZR7,PDB1

RET

;BCD小数转换为二进制小数(N位;入口:

R1(低位首址,M,N

;占用资源:

ACC,B,R2,R3,R7

;堆栈需求:

2字节

;出口:

R0

PDTBMN:

MOVA,R0

MOVR2,A

MOVA,R1

MOVR3,A

MOVB,N

CLRA

PDBMN1:

MOV@R0,A

INCR0

DJNZB,PDBMN1

MOVA,N

SWAPA

RRA

MOVR7,A

PDBMN2:

MOVA,R2MOVR0,A

MOVA,R3

MOVR1,A

MOVB,M

CLRC

PDBMN3:

MOVA,@R1ADDCA,@R1

DAA

JNBACC.4,PDBMN4SETBC

CLRACC.4

PDBMN4:

MOV@R1,AINCR1

DJNZB,PDBMN3

MOVB,N

PDBMN5:

MOVA,@R0RLCA

MOV@R0,A

INCR0

DJNZB,PDBMN5

DJNZR7,PDBMN2

MOVA,R2

MOVR0,A

RET

;BCD整数转换为二进制整数(1位;入口:

R0(高位地址,R7

;占用资源:

ACC,B

;堆栈需求:

2字节

;出口:

R4

IDTB1:

CLRA

MOVR4,A

IDB11:

MOVA,R4

MOVB,#0AH

MULAB

ADDA,@R0

INCR0

MOVR4,A

DJNZR7,IDB11

RET

;BCD整数转换为二进制整数(2位;入口:

R0(高位地址,R7

;占用资源:

ACC,B

;堆栈需求:

2字节

;出口:

R3,R4

IDTB2:

CLRA

MOVR3,A

MOVR4,A

IDB21:

MOVA,R4

MOVB,#0AH

MULAB

MOVR4,A

MOVA,B

XCHA,R3

MOVB,#0AH

MULAB

ADDA,R3

MOVR3,A

MOVA,R4

ADDA,@R0

INCR0

MOVR4,A

CLRA

ADDCA,R3

MOVR3,A

DJNZR7,IDB21

RET

;BCD整数转换为二进制整数(3位;入口:

R0(高位地址,R7

;占用资源:

ACC,B

;堆栈需求:

2字节

;出口:

R2,R3,R4IDTB3:

CLRAMOVR2,A

MOVR3,A

MOVR4,A

IDB31:

MOVA,R4MOVB,#0AHMULAB

MOVR4,A

MOVA,B

XCHA,R3

MOVB,#0AHMULAB

ADDA,R3

MOVR3,A

CLRA

ADDCA,B

XCHA,R2

MOVB,#0AHMULAB

ADDA,R2

MOVR2,A

MOVA,R4

ADDA,@R0

INCR0

MOVR4,A

CLRA

ADDCA,R3

MOVR3,A

CLRA

ADDCA,R2

MOVR2,A

DJNZR7,IDB31

RET

;BCD整数转换为二进制整数(N位;入口:

R1(高位地址,M,N

;占用资源:

ACC,B,R2,R7,NCNT,F0;堆栈需求:

2字节

;出口:

R0

IDTBMN:

MOVA,R0

MOVR2,A

MOVB,N

CLRA

IDBMN1:

MOV@R0,A

INCR0

DJNZB,IDBMN1

MOVA,R2

MOVR0,A

MOVA,M

MOVNCNT,A

IDBMN2:

MOVR7,NCLRA

CLRF0

IDBMN3:

XCHA,@R0MOVB,#0AH

MULAB

MOVC,F0

ADDCA,@R0

MOVF0,C

MOV@R0,A

INCR0

MOVA,B

DJNZR7,IDBMN3MOVA,R2

MOVR0,A

MOVA,@R1

INCR1

ADDA,@R0

MOV@R0,A

DJNZNCNT,IDBMN2RET

;二进制小数(2位转换为十进制小数(分离BCD码;入口:

R3,R4,R7

;占用资源:

ACC,B

;堆栈需求:

3字节

;出口:

R0

PBTD:

MOVA,R7

PUSHA

PBD1:

MOVA,R4

MOVB,#0AH

MULAB

MOVR4,A

MOVA,B

XCHA,R3

MOVB,#0AH

MULAB

ADDA,R3

MOVR3,A

CLRA

ADDCA,B

MOV@R0,A

INCR0

DJNZR7,PBD1

POPA

MOVR7,A

MOVA,R0

CLRC

SUBBA,R7

MOVR0,A

RET

;二进制小数(M位转换为十进制小数(分离BCD码;入口:

R1,M,N

;占用资源:

ACC,B,R2,R3,R7,NCNT

;堆栈需求:

2字节

;出口:

R0

PBTDMN:

MOVA,R0

MOVR2,A

MOVA,R1

MOVR3,A

MOVA,N

MOVNCNT,A

PBDMN1:

MOVR7,M

CLRA

CLRF0

PBDMN2:

XCHA,@R1

MOVB,#0AH

MULAB

MOVC,F0

ADDCA,@R1

MOVF0,C

MOV@R1,A

INCR1

MOVA,B

DJNZR7,PBDMN2

ADDCA,#00H

MOV@R0,A

INCR0

MOVA,R3

MOVR1,A

DJNZNCNT,PBDMN1

MOVA,R2

MOVR0,A

RET

;二进制整数(2位转换为十进制整数(分离BCD码;入口:

R3,R4

;占用资源:

ACC,R2,NDIV31

;堆栈需求:

5字节

;出口:

R0,NCNT

IBTD21:

MOVNCNT,#00H

MOVR2,#00H

IBD211:

MOVR7,#0AH

LCALLNDIV31

MOVA,R7

MOV@R0,A

INCR0

INCNCNT

MOVA,R3

ORLA,R4

JNZIBD211

MOVA,R0

CLRC

SUBBA,NCNT

MOVR0,A

RET

;二进制整数(2位转换为十进制整数(组合BCD码;入口:

R3,R4

;占用资源:

ACC,B,R7

;堆栈需求:

3字节

;出口:

R0

IBTD22:

MOVA,R0

PUSHA

MOVR7,#03H

CLRA

IBD221:

MOV@R0,A

INCR0

DJNZR7,IBD221

POPA

MOVR0,A

MOVR7,#10H

IBD222:

PUSHA

CLRC

MOVA,R4

RLCA

MOVR4,A

MOVA,R3

RLCA

MOVR3,A

MOVB,#03H

IBD223:

MOVA,@R0

ADDCA,@R0

DAA

MOV@R0,A

INCR0

DJNZB,IBD223

POPA

MOVR0,A

DJNZR7,IBD222

RET

;二进制整数(3位转换为十进制整数(分离BCD码;入口:

R2,R3,R4

;占用资源:

ACC,R2,NDIV31

;堆栈需求:

5字节

;出口:

R0,NCNT

IBTD31:

CLRA

MOVNCNT,A

IBD311:

MOVR7,#0AH

LCALLNDIV31

MOVA,R7

MOV@R0,A

INCR0

INCNCNT

MOVA,R2

ORLA,R3

ORLA,R4

JNZIBD311

MOVA,R0

CLRC

SUBBA,NCNT

MOVR0,A

RET

;二进制整数(3位转换为十进制整数(组合BCD码;入口:

R2,R3,R4

;占用资源:

ACC,B,R7

;堆栈需求:

3字节

;出口:

R0

IBTD32:

MOVA,R0

PUSHA

MOVR7,#04H

CLRA

IBD321:

MOV@R0,AINCR0

DJNZR7,IBD321POPA

MOVR0,A

MOVR7,#18H

IBD322:

PUSHACLRC

MOVA,R4

RLCA

MOVR4,A

MOVA,R3

RLCA

MOVR3,A

MOVA,R2

RLCA

MOVR2,A

MOVB,#04H

IBD323:

MOVA,@R0ADDCA,@R0

DAA

MOV@R0,A

INCR0DJNZB,IBD323POPAMOVR0,ADJNZR7,IBD322RET;二进制整数(M位转换为十进制整数(组合BCD码;入口:

R1,M,N;占用资源:

ACC,B,R2,R3,R7;堆栈需求:

2字节;出口:

R0IBTDMN:

MOVA,R0MOVR2,AMOVA,R1MOVR3,AMOVB,NCLRAIBDMN1:

MOV@R0,AINCR0DJNZB,IBDMN1MOVA,MSWAPARRACLRC

MOVR7,AIBDMN2:

MOVA,R2MOVR0,AMOVA,R3MOVR1,AMOVB,MIBDMN3:

MOVA,@R1RLCAMOV@R1,AINCR1DJNZB,IBDMN3MOVB,NIBDMN4:

MOVA,@R0ADDCA,@R0DAAJNBACC.4,IBDMN5SETBCCLRACC.4IBDMN5:

MOV@R0,AINCR0DJNZB,IBDMN4DJNZR7,IBDMN2MOVA,R2MOVR0,ARET

;三字节无符号除法程序(R2R3R4/R7=(R2R3R4余数R7;入口:

R2,R3,R4,R7;占用资源:

ACC,B,F0;堆栈需求:

3字节;出口:

(R2,R3,R4,R7,OVNDIV31:

MOVA,R2MOVB,R7DIVABPUSHAMOVR2,BMOVB,#10HNDV311:

CLRCMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVF0,CCLRCSUBBA,R7JBF0,NDV312

JCNDV313NDV312:

MOVR2,AINCR4NDV313:

DJNZB,NDV311POPACLROVJZNDV314SETBOVNDV314:

XCHA,R2MOVR7,ARET

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1