51单片机汇编程序集.pdf
《51单片机汇编程序集.pdf》由会员分享,可在线阅读,更多相关《51单片机汇编程序集.pdf(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、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、双字
2、节无符号数乘法程序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、单字节折半查找程序
3、1.1.1.1.片内片内 RAMRAMRAMRAM 初始化子程序初始化子程序IBCLR:MOVA,R0MOVR1,ACLRAIBC1:MOVR1,AINCR1DJNZR7,IBC1RET2.2.2.2.片外片外 RAMRAMRAMRAM 初始化子程序初始化子程序EBCLR1:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,ACLRCEBC11:MOVXDPTR,AINCDPTRDJNZR7,EBC11RET3.3.3.3.片外片外 RAMRAMRAMRAM 初始化子程序初始化子程序(双字节个单元双字节个单元)EBCLR2:MOVA,ADDPLMOVDPL,AMOVA,AD
4、DPHMOVDPH,AMOVA,R7JZEBC21INCR6EBC21:CLRAMOVXDPTR,AINCDPTRDJNZR7,EBC21DJNZR6,EBC21RET4.4.4.4.内部内部 RAMRAMRAMRAM 数据复制程序数据复制程序;入口:R0,R7;占用资源:A;堆栈需求:2 字节;出口:R1IBMOV:MOVA,R0ADDA,R7MOVR0,AMOVA,R1ADDA,R7MOVR1,AIBM1:DECR0DECR1MOVA,R0MOVR1,ADJNZR7,IBM1RET5.5.5.5.外部外部 RAMRAMRAMRAM 数据复制程序数据复制程序;入口:ADDPH,ADDPL,R
5、7;占用资源:ACC;堆栈需求:2 字节;出口:R0,R1EBMOV1:MOVA,ADDPLADDA,R7MOVDPL,ACLRAADDCA,ADDPHMOVDPH,AMOVA,R7ADDA,R1XCHA,R0ADDCA,#00HMOVP2,AEBM11:DECR0CJNER0,#0FFH,EBM12DECP2EBM12:DECDPLMOVA,DPLCJNEA,#0FFH,EBM13DECDPHEBM13:MOVXA,R0MOVXDPTR,ADJNZR7,EBM11RET6.6.6.6.外部外部 RAMRAMRAMRAM 数据复制程序数据复制程序;入口:ADDPH,ADDPL,R6,R7;占用
6、资源:ACC;堆栈需求:2 字节;出口:R0,R1EBMOV2:MOVA,ADDPLADDA,R7MOVDPL,AMOVA,R6ADDCA,ADDPHMOVDPH,AMOVA,R7ADDA,R1XCHA,R0ADDCA,R6MOVP2,AMOVA,R7JZEBM21INCR6EBM21:DECR0CJNER0,#0FFH,EBM22DECP2EBM22:DECDPLMOVA,DPLCJNEA,#0FFH,EBM23DECDPHEBM23:MOVXA,R0MOVXDPTR,ADJNZR7,EBM21DJNZR6,EBM21RET7.7.7.7.外部外部 RAMRAMRAMRAM 数据复制到内部数
7、据复制到内部 RAMRAMRAMRAM 程序程序;入口:ADDPH,ADDPL,R7;占用资源:ACC;堆栈需求:2 字节;出口:R0ITEMOV:MOVA,ADDPLADDA,R7MOVDPL,AMOVA,ADDPHADDCA,#00HMOVDPH,AMOVA,R0ADDA,R7MOVR0,AITEM1:DECR0DECDPLMOVA,DPLCJNEA,#0FFH,ITEM2DECDPHITEM2:MOVXA,DPTRMOVR0,ADJNZR7,ITEM1RET8.8.8.8.限幅滤波程序限幅滤波程序;入口:A,SDAT,DELTY;占用资源:B;堆栈需求:2 字节;出口:AJUGFILT:
8、MOVB,ACLRCSUBBA,SDATJNCJUGFT1CPLAINCAJUGFT1:SETBASUBBA,#DELTYJNCJUGFT3MOVA,SDATRETJUGFT3:MOVA,BMOVSDAT,ARET9.9.9.9.中位值滤波程序中位值滤波程序;入口:ADDPH,ADDPL,N;占用资源:ESELSORT;堆栈需求:4 字节;出口:AMEDFILT:LCALL ESELSORTMOVA,NCLRCRRCAADDA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,AJNCMEDFT1INCDPHMEDFT1:MOVXA,DPTRRET10.10.10.10.N N N
9、N 点算术平均滤波点算术平均滤波;入口:ADDPH,ADDPL,N;占用资源:B,R3,R4;堆栈需求:2 字节;出口:AAVFILT:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,ACLRAMOVR3,AMOVR4,AMOVR7,NAVFT1:MOVXA,DPTRINCDPTRADDA,R4MOVR4,AJNCAVFT2INCR3AVFT2:DJNZR7,AVFT1MOVR7,NMOVR2,#00HLCALL NDIV31MOVA,R4RET11.11.11.11.N N N N 点加权平均滤波点加权平均滤波;入口:ADDPH,ADDPL,N;占用资源:B,R3,R4
10、;堆栈需求:2 字节;出口:AQAVFILT:CLRAMOVR3,AMOVR4,AMOVR7,NMOVP2,ADDPHMOVR1,ADDPLMOVDPTR,#QAVTABQAVFT1:MOVCA,A+DPTRMOVB,AMOVXA,R1INCDPTRINCR1MULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,ADJNZR7,QAVFT1MOVA,R4JNBACC.7,QAVFT2INCR3QAVFT2:MOVA,R3RETQAVTAB:DB12.12.12.12.一阶加权滞后滤波程序一阶加权滞后滤波程序;入口:A,DELTY;占用资源:B,R3,R4;堆栈需求:2
11、字节;出口:ABQFILT:MOVB,ACLRAMOVDPTR,#ABTABMOVCA,A+DPTRMULABMOVR4,AMOVR3,BMOVA,#01HMOVCA,A+DPTRMOVB,DELTYMULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,AMOVA,R4JNBACC.7,FT1INCR3FT1:MOVA,R3MOVDELTY,ARETBQTAB:DB80H,80H13.13.13.13.双字节取补程序双字节取补程序/(R3R4)=(R3R4)/(R3R4)=(R3R4)/(R3R4)=(R3R4)/(R3R4)=(R3R4);入口:R3,R4;占用资源:
12、ACC;堆栈需求:2 字节;出口:R3,R4CMPT:MOVA,R4CPLAADDA,#01HMOVR4,AMOVA,R3CPLAADDCA,#00HMOVR3,ARET14.14.14.14.N N N N 节取补程序节取补程序/(R0)=(R0)/(R0)=(R0)/(R0)=(R0)/(R0)=(R0);入口:R0,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0NCMPTN:MOVB,R0SETBCNCPT1:MOVA,R0CPLAADDCA,#00HMOVR0,AINCR0DJNZR7,NCPT1MOVR0,BRET15.15.15.15.双字节无符号数加法程序双字节无符号
13、数加法程序(R3R4+R6R7)=(R3R4)(R3R4+R6R7)=(R3R4)(R3R4+R6R7)=(R3R4)(R3R4+R6R7)=(R3R4);入口:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2 字节;出口:R3,R4,CFNADD:MOVA,R4ADDA,R7MOVR4,AMOVA,R3ADDCA,R6MOVR3,ARET16.16.16.16.N N N N 字节无符号数加法程序字节无符号数加法程序(R0+R1)=(R0)(R0+R1)=(R0)(R0+R1)=(R0)(R0+R1)=(R0);入口:R0,R1,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R
14、0,CFNADDN:MOVB,R0CLRCNADN1:MOVA,R0ADDCA,R1MOVR0,AINCR0INCR1DJNZR7,NADN1MOVR0,BRET17.17.17.17.双字节无符号数减法程序双字节无符号数减法程序(R3R4-R6R7)=(R3R4)(R3R4-R6R7)=(R3R4)(R3R4-R6R7)=(R3R4)(R3R4-R6R7)=(R3R4);入口:R3,R4,R6,R7;占用资源:ACC;堆栈需求:2 字节;出口:R3,R4NSUB:MOVA,R4CLRCSUBBA,R7MOVR4,AMOVA,R3SUBBA,R6MOVR3,ARET18.18.18.18.N
15、N N N 字节无符号数减法程序字节无符号数减法程序(R0-R1)=(R0)(R0-R1)=(R0)(R0-R1)=(R0)(R0-R1)=(R0);入口:R0,R1,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0,CFNSUBN:MOVB,R0MOVR7,NCLRCNSUBN1:MOVA,R0SUBBA,R1MOVR0,AINCR0INCR1DJNZR7,NSUBN1MOVR0,BRET19.19.19.19.单字节无符号数乘法程序单字节无符号数乘法程序(R3R4*R7)=(R2R3R4)(R3R4*R7)=(R2R3R4)(R3R4*R7)=(R2R3R4)(R3R4*R7)=
16、(R2R3R4);入口:R3,R4,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R2,R3,R4NMUL21:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BMOVR2,ACLROVRET20.20.20.20.单字节无符号数乘法程序单字节无符号数乘法程序(R2R3R4*R7)=(R5R2R3R4)(R2R3R4*R7)=(R5R2R3R4)(R2R3R4*R7)=(R5R2R3R4)(R2R3R4*R7)=(R5R2R3R4);入口:R2,R3,R4,R6,R7;占用资源:ACC
17、,B;堆栈需求:2 字节;出口:R5,R2,R3,R4NMUL31:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BXCHA,R2MOVB,R7MULABADDA,R2MOVR2,ACLRAADDCA,BMOVR5,ACLROVRET21.21.21.21.单字节无符号数乘法程序单字节无符号数乘法程序(R5R2R3R4*R7)=(R7R5R2R3R4)(R5R2R3R4*R7)=(R7R5R2R3R4)(R5R2R3R4*R7)=(R7R5R2R3R4)(R5R2R3R4*R7)=(R7R5
18、R2R3R4);入口:R5,R2,R3,R4,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R7,R5,R2,R3,R4NMUL41:MOVA,R4MOVB,R7MULABMOVR4,AMOVA,BXCHA,R3MOVB,R7MULABADDA,R3MOVR3,ACLRAADDCA,BXCHA,R2MOVB,R7MULABADDA,R2MOVR2,ACLRAADDCA,BXCHA,R5MOVB,R7MULABADDA,R5MOVR5,ACLRAADDCA,BMOVR7,ACLROVRET22.22.22.22.双字节无符号数乘法程序双字节无符号数乘法程序(R3R4*R6R7)=(R5R
19、2R3R4)(R3R4*R6R7)=(R5R2R3R4)(R3R4*R6R7)=(R5R2R3R4)(R3R4*R6R7)=(R5R2R3R4);入口:R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R5,R2,R3,R4NMUL22:MOVA,R4MOVB,R7MULABXCHA,R4MOVR5,BMOVB,R6MULABADDA,R5MOVR5,ACLRAADDCA,BMOVR2,AMOVA,R3MOVB,R7MULABADDA,R5MOVR5,AMOVA,BADDCA,R2MOVR2,ACLRAADDCA,#00HXCHA,R3MOVB,R6MULABADDA,R
20、2MOVR2,AMOVA,BADDCA,R3XCHA,R5MOVR3,ACLROVRET23.23.23.23.双字节无符号数乘法程序双字节无符号数乘法程序(R2R3R4*R6R7)=(R1R5R2R3R4)(R2R3R4*R6R7)=(R1R5R2R3R4)(R2R3R4*R6R7)=(R1R5R2R3R4)(R2R3R4*R6R7)=(R1R5R2R3R4);入口:R2,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R1,R5,R2,R3,R4NMUL32:MOVA,R4MOVB,R7MULABXCHA,R4MOVR5,BMOVB,R6MULABADDA,R5MO
21、VR5,ACLRAADDCA,BMOVR1,AMOVA,R3MOVB,R7MULABADDA,R5MOVR5,AMOVA,BADDCA,R1MOVR1,ACLRAADDCA,#00HXCHA,R3MOVB,R6MULABADDA,R1MOVR1,AMOVA,BADDCA,R3XCHA,R5MOVR3,AMOVA,R2MOVB,R7MULABADDA,R1MOVR1,AMOVA,BADDCA,R5MOVR5,ACLRAADDCA,#00HXCHA,R2MOVB,R6MULABADDA,R5MOVR5,AMOVA,BADDCA,R2XCHA,R1MOVR2,ACLROVRET24.24.24.24
22、.N N N N 字节无符号数乘法程序字节无符号数乘法程序(R0*R1)=(R0)(R0*R1)=(R0)(R0*R1)=(R0)(R0*R1)=(R0);入口:R0,R1,M,N;占用资源:ACC,B,R2,R5,R6,R7,NCNT;堆栈需求:2 字节;出口:R0NMULMN:MOVA,MADDA,R0MOVR5,AXCHA,R1XCHA,R5ADDA,NXCHA,R0MOVR6,AMOVB,MMOVNCNT,BNMLMN1:DECR0DECR1CLRAXCHA,R1MOVR0,ADJNZNCNT,NMLMN1MOVNCNT,BNMLMN2:CLRAXCHA,R0MOVR2,AMOVA,R
23、6MOVR0,AMOVA,R5MOVR1,AMOVR7,NCLRCNMLMN3:MOVA,R2MOVB,R1INCR1MULABADDCA,R0MOVR0,AINCR0MOVA,BADDCA,R0MOVR0,ADJNZR7,NMLMN3INCR0INCR6DJNZNCNT,NMLMN2MOVA,R0CLRCSUBBA,MSUBBA,NMOVR0,ARET25.25.25.25.单字节无符号除法程序单字节无符号除法程序(R2R3R4/R7)=(R2)R3R4(R2R3R4/R7)=(R2)R3R4(R2R3R4/R7)=(R2)R3R4(R2R3R4/R7)=(R2)R3R4 余数余数 R7R7
24、R7R7;入口: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,NDV312JCNDV313NDV312:MOVR2,AINCR4NDV313:DJNZB,NDV311POPACLROVJZNDV314SETBOVNDV314:XCHA,R2MOVR7,ARET26
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 汇编程序
限制150内