欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    51单片机汇编程序集.pdf

    • 资源ID:70322712       资源大小:136.25KB        全文页数:36页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机汇编程序集.pdf

    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、单字节折半查找程序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,ADDPHMOVDPH,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,R7;占用资源: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;占用资源: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 数据复制到内部数据复制到内部 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: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 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;堆栈需求: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 字节;出口: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;占用资源: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.双字节无符号数加法程序双字节无符号数加法程序(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 字节;出口:R0,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 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)=(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,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)=(R7R5R2R3R4);入口: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)=(R5R2R3R4)(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,R2MOVR2,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,R5MOVR5,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.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,R6MOVR0,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 余数余数 R7R7R7R7;入口: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.26.26.26.单字节无符号除法程序单字节无符号除法程序(R5R2R3R4/R7)=(R5)R2R3R4(R5R2R3R4/R7)=(R5)R2R3R4(R5R2R3R4/R7)=(R5)R2R3R4(R5R2R3R4/R7)=(R5)R2R3R4 余数余数 R7R7R7R7;入口:R2,R3,R4,R7;占用资源:ACC,B,F0;堆栈需求:3 字节;出口:(R5),R2,R3,R4,R7,OVNDIV41:MOVA,R5MOVB,R7DIVABPUSHAMOVR5,BMOVB,#18HNDV411:CLRCMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R5RLCAMOVR5,AMOVF0,CCLRCSUBBA,R7JBF0,NDV412JCNDV413NDV412:MOVR5,AINCR4NDV413:DJNZB,NDV411POPACLROVJZNDV414SETBOVNDV414:XCHA,R5MOVR7,ARET27.27.27.27.双字节无符号除法程序双字节无符号除法程序(R5R2R3R4/R6R7)=(R2)R3R4(R5R2R3R4/R6R7)=(R2)R3R4(R5R2R3R4/R6R7)=(R2)R3R4(R5R2R3R4/R6R7)=(R2)R3R4 余数余数 R6R7R6R7R6R7R6R7;入口:R5,R2,R3,R4,R6,R7;占用资源:ACC,B,F0;堆栈需求:4 字节;出口:(R2),R3,R4,R6,R7,OVNDIV42:MOVA,R1PUSHAMOVB,#00HNDV421:MOVA,R2CLRCSUBBA,R7MOVR1,AMOVA,R5SUBBA,R6JCNDV422MOVR5,AMOVA,R1MOVR2,AINCBSJMPNDV421NDV422:PUSHBMOVB,#10HNDV423:CLRCMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AXCHA,R5RLCAXCHA,R5MOVF0,CCLRCSUBBA,R7MOVR1,AMOVA,R5SUBBA,R6JBF0,NCV424JCNDV425NCV424:MOVR5,AMOVA,R1MOVR2,AINCR4NDV425:DJNZB,NDV423POPACLROVJNZNDV426SETBOVNDV426:XCHA,R2MOVR7,AMOVA,R5MOVR6,APOPAMOVR1,ARET28.28.28.28.N N N N 字节无符号除法程序字节无符号除法程序(组合组合)(R0/R1)=(R0)(R0/R1)=(R0)(R0/R1)=(R0)(R0/R1)=(R0);入口:R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN;堆栈需求:4 字节;出口:R0;NDIVMN:MOVA,MCLRCSUBBA,NMOVNCNT,AADDA,R0MOVR4,AXCHA,R0MOVR3,AMOVA,R1MOVR5,AMOVR2,#00HNDVMN1:MOVR7,NLCALL NSUBNMOVA,R5MOVR1,AJCNDVMN2INCR2SJMPNDVMN1NDVMN2:MOVR7,NLCALL NADDNMOVA,NCNTSWAPARRAMOVNCNT,ANDVMN3:MOVA,R3MOVR0,AMOVR7,MLCALL NRLCNMOVF0,CMOVA,R4MOVR0,AMOVA,R5MOVR1,AMOVR7,NLCALL NSUBNJBF0,NDVMN4JCNDVMN5NDVMN4:MOVA,R3MOVR0,AINCR0SJMPNDVMN6NDVMN5:MOVA,R5MOVR1,AMOVR7,NLCALL NADDNNDVMN6:DJNZNCNT,NDVMN3MOVA,R4MOVR1,AMOVA,R2MOVR1,AMOVA,R3MOVR0,ARET29.29.29.29.N N N N 字节无符号除法程序字节无符号除法程序(集成集成)(R0/R1)=(R0)(R0/R1)=(R0)(R0/R1)=(R0)(R0/R1)=(R0);入口:R0,R1,M,N;占用资源:ACC,R2,R3,R4,R5,R7,F0;堆栈需求:2 字节;出口:R0NDIVMN:MOVA,MCLRCSUBBA,NMOVB,AADDA,R0MOVR4,AXCHA,R0MOVR3,AMOVA,R1MOVR5,AMOVR2,#00HNDVMN1:MOVR7,NCLRCNDVMN2:MOVA,R0SUBBA,R1MOVR0,AINCR0INCR1DJNZR7,NDVMN2MOVA,R4MOVR0,AMOVA,R5MOVR1,AJCNDVMN3INCR2SJMPNDVMN1NDVMN3:MOVR7,NCLRCNDVMN4:MOVA,R0ADDCA,R1MOVR0,AINCR0INCR1DJNZR7,NDVMN4MOVA,#08HMULABMOVB,ANDVMN5:MOVA,R3MOVR0,AMOVR7,MCLRCNDVMN6:MOVA,R0RLCAMOVR0,AINCR0DJNZR7,NDVMN6MOVF0,CMOVA,R4MOVR0,AMOVA,R5MOVR1,AMOVR7,NCLRCNDVMN7:MOVA,R0SUBBA,R1MOVR0,AINCR0INCR1DJNZR7,NDVMN7JBF0,NDVMNBJCNDVMN8NDVMNB:MOVA,R3MOVR0,AINCR0SJMPNDVMNANDVMN8:MOVR7,NMOVA,R4MOVR0,AMOVA,R5MOVR1,ACLRCNDVMN9:MOVA,R0ADDCA,R1MOVR0,AINCR0INCR1DJNZR7,NDVMN9NDVMNA:DJNZB,NDVMN5MOVA,MCLRCSUBBA,NADDA,R3MOVR1,AMOVA,R2MOVR1,AMOVA,R3MOVR0,ARET30.30.30.30.N N N N 字节数据左移程序字节数据左移程序 RLC(R0)=(CFR0)RLC(R0)=(CFR0)RLC(R0)=(CFR0)RLC(R0)=(CFR0);入口:R0,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0,CFNRLCN:MOVB,R0CLRCNRLN1:MOVA,R0RLCAMOVR0,AINCR0DJNZR7,NRLN1MOVR0,BRET31.31.31.31.原码有符号双字节减法程序原码有符号双字节减法程序(R3R4-R6R7)=R3R4(R3R4-R6R7)=R3R4(R3R4-R6R7)=R3R4(R3R4-R6R7)=R3R4;入口:R3,R4,R6,R7;占用资源:ACC,DADD;堆栈需求:6 字节;出口:R3,R4,OVDSUB:MOVA,R6CPLACC.7MOVR6,ALCALL DADDRET32.32.32.32.原码有符号双字节加法程序原码有符号双字节加法程序(R3R4+R6R7)=R3R4(R3R4+R6R7)=R3R4(R3R4+R6R7)=R3R4(R3R4+R6R7)=R3R4;入口:R3,R4,R6,R7;占用资源:ACC,SR0,NADD,NSUB,CMPT;堆栈需求:4 字节;出口:R3,R4,OVDADD:MOVA,R3MOVC,ACC.7MOVSR0,CXRLA,R6MOVC,ACC.7MOVA,R3CLRACC.7MOVR3,AMOVA,R6CLRACC.7MOVR6,AJCDAB2LCALL NADDMOVA,R3JBACC.7,DABEDAB1:MOVC,SR0MOVACC.7,CMOVR3,ACLROVRETDABE:SETBOVRETDAB2:LCALL NSUBMOVA,R3JNBACC.7,DAB1LCALL CMPTCPLSR0SJMPDAB133.33.33.33.原码有符号双字节乘法程序原码有符号双字节乘法程序(R3R4*R6R7)=(R5R2R3R4)(R3R4*R6R7)=(R5R2R3R4)(R3R4*R6R7)=(R5R2R3R4)(R3R4*R6R7)=(R5R2R3R4);入口:R3,R4,R6,R7;占用资源:ACC,SR0,NMUL22;堆栈需求:4 字节;出口:R5,R2,R3,R4IMUL:MOVA,R3XRLA,R6MOVC,ACC.7MOVSR0,CMOVA,R3CLRACC.7MOVR3,AMOVA,R6CLRACC.7MOVR6,ALCALL NMUL22MOVA,R5MOVC,SR0MOVACC.7,CMOVR5,ARET34.34.34.34.原码有符号双字节除法程序原码有符号双字节除法程序(R5R2R3R4/R6R7)=(R3R4)(R5R2R3R4/R6R7)=(R3R4)(R5R2R3R4/R6R7)=(R3R4)(R5R2R3R4/R6R7)=(R3R4)余数余数(R6R7)(R6R7)(R6R7)(R6R7);入口:R5,R2,R3,R4;占用资源:ACC,SR0,NDIV42;堆栈需求:6 字节;出口:R3,R4,R6,R7,OVIDIV:MOVA,R5XRLA,R6MOVC,ACC.7MOVSR0,CMOVA,R5CLRACC.7MOVR5,AMOVA,R6CLRACC.7MOVR6,ALCALL NDIV42MOVA,R3JBACC.7,IDIVEJBOV,IDIVEMOVC,SR0MOVACC.7,CMOVR3,ARETIDIVE:SETBOVRET35.35.35.35.单字节顺序查找程序单字节顺序查找程序;入口:R0,R1,A,R7;占用资源:B;堆栈需求:2 字节;出口:R0,R1,AFINDB1:MOVB,AMOVDPL,R1MOVDPH,R0FINDB11:MOVXA,DPTRCJNEA,B,FINDB12MOVR1,DPLMOVR0,DPHCLRARETFINDB12:INCDPTRDJNZR7,FINDB11MOVA,#0FFHRET36.36.36.36.单字节顺序查找程序单字节顺序查找程序;入口:R0,R1,A,R6,R7;占用资源:B;堆栈需求:2 字节;出口:R0,R1,AFINDB2:MOVB,AMOVDPL,R1MOVDPH,R0MOVA,R7JZFINDB21INCR6FINDB21:MOVXA,DPTRCJNEA,B,FINDB22MOVR1,DPLMOVR0,DPHCLRARETFINDB22:INCDPTRDJNZR7,FINDB21DJNZR6,FINDB21MOVA,#0FFHRET37.37.37.37.双字节字符串顺序查找程序双字节字符串顺序查找程序;入口:R0,R1,R3,R4,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0,R1,AFINDS1:MOVDPL,R1MOVDPH,R0FINDS11:MOVXA,DPTRINCDPTRCLRCSUBBA,R4JNZFINDS12MOVXA,DPTRSUBBA,R3JNZFINDS12MOVA,DPLCLRCSUBBA,#01HMOVR1,AMOVA,DPHSUBBA,#00HMOVR0,ACLRARETFINDS12:DJNZR7,FINDS11MOVA,#0FFHRET38.38.38.38.双字节字符串顺序查找程序双字节字符串顺序查找程序;入口:R0,R1,R3,R4,R6,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0,R1,AFINDS2:MOVDPL,R1MOVDPH,R0MOVA,R7JZFINDS21INCR6FINDS21:MOVXA,DPTRINCDPTRCLRCSUBBA,R4JNZFINDS22MOVXA,DPTRSUBBA,R3JNZFINDS22MOVA,DPLCLRCSUBBA,#01HMOVR1,AMOVA,DPHSUBBA,#00HMOVR0,ACLRARETFINDS22:DJNZR7,FINDS21DJNZR6,FINDS21MOVA,#0FFHRET39.39.39.39.N N N N 字节字符串顺序查找程序字节字符串顺序查找程序;入口:ADDPH,ADDPL,R0,R6,R7,N;占用资源:ACC,B,R2,NCNT;堆栈需求:2 字节;出口:ADDPH,ADDPL,AFINDN:MOVA,R0MOVR2,AMOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,AMOVA,R7JZFINDN1INCR6FINDN1:MOVA,R2MOVR0,AMOVA,NMOVNCNT,AFINDN2:MOVXA,DPTRCLRCSUBBA,R0JNZFINDN3INCDPTRINCR0DJNZNCNT,FINDN2MOVA,DPLCLRCSUBBA,NMOVADDPL,AMOVA,DPHSUBBA,#00HMOVADDPH,ACLRARETFINDN3:CLRCMOVA,R0SUBBA,R2JNZFINDN4INCDPTRFINDN4:DJNZR7,FINDN1DJNZR6,FINDN1MOVA,#0FFHRET40.40.40.40.单字节最值查找程序单字节最值查找程序;入口:R0,R1,R6,R7;占用资源:ACC,B;堆栈需求:2 字节;出口:R0(最大值),R1(最小值),R2,R3,R4,R5FMAMIB:MOVDPL,R1MOVDPH,R0MOVXA,DPTRMOVR0,AMOVR1,AMOVA,DPLMOVR3,AMOVR5,AMOVA,DPHMOVR2,AMOVR4,AMOVA,R7JZFMMB1INCR6FMMB1:MOVXA,DPTRMOVB,ASETBCSUBBA,R0JCFMMB2MOVR0,BMOVR3,DPLMOVR2,DPHSJMPFMMB3FMMB2:MOVA,BCLRCSUBBA,R1JNCFMMB3MOVR1,BMOVR5,DPLMOVR4,DPHFMMB3:INCDPTRDJNZR7,FMMB1DJNZR6,FMMB1RET41.41.41.41.浮点数顺序查找程序浮点数顺序查找程序;入口:R0,R1,R2,R3,R4,R6,R7;占用资源:B,NCNT,FCMP;堆栈需求:2 字节;出口:R0,R1,AFINDF:MOVDPL,R1MOVDPH,R0MOVA,R7MOVB,AMOVNCNT,R6JZFINDF1INCNCNTFINDF1:MOVXA,DPTRINCDPTRMOVR5,AMOVXA,DPTRINCDPTRMOVR6,AMOVXA,DPTRINCDPTRMOVR7,ALCALL FCMPJNZFINDF2MOVA,DPLCLRCSUBBA,#03HMOVR1,AMOVA,DPHSUBBA,#00HMOVR0,ACLRARETFINDF2:DJNZB,FINDF1DJNZNCNT,FINDF1MOVA,#0FFHRET42.42.42.42.浮点数最值查找程序浮点数最值查找程序;入口:ADDPH,ADDPL,R6,R7;占用资源:ACC,B,NCNT,ITEMOV,EBMOV,MOVB,MOVR1,FCMP;堆栈需求:5 字节;出口:R0(最大值),R1(最小值),R2,R3,R4,R5FMAMIF:MOVA,ADDPLMOVR3,AMOVR5,AMOVDPL,AMOVA,ADDPHMOVR2,AMOVR4,AMOVDPH,AMOVB,R7MOVR7,#03HLCALL ITEMOVMOVR7,#03HLCALL IBMOVMOVA,BJZFMMF1INCNCNTFMMF1:PUSHBMOVXA,DPTRINCDPTRMOVR2,AMOVXA,DPTRINCDPTRMOVR3,AMOVXA,DPTRINCDPTRMOVR4,ALCALL MOVR1LCALL FCMPJNCFMMF2MOVA,R0XCHA,R1MOVR0,ALCALL MOVBMOVR5,DPLMOVR4,DPHMOVA,R0XCHA,R1MOVR0,ASJMPFMMF3FMMF2:MOVA,R0XCHA,R1MOVR0,ALCALL MOVR1LCALL FCMPMOVA,R0XCHA,R1MOVR0,AJZFMMF3JCFMMF3LCALL MOVBMOVR3,DPLMOVR2,DPHFMMF3:POPBDJNZB,FMMF1DJNZNCNT,FMMF1RET43.43.43.43.单字节折半查找程序单字节折半查找程序;入口:A,R0,R1,R6,R7;占用资源:B,R2;堆栈需求:2 字节;出口:R0,R1SEARCHB:MOVB,AMOVA,R1ADDA,R7MOVR7,AMOVA,R0ADDCA,R6MOVR6,AMOVA,R7SUBBA,#01HMOVR7,AJNCSECH1DECR6SECH1:MOVA,R7CLRCSUBBA,R1MOVA,R6SUBBA,R0JNCSECH2MOVA,#0FFHRETSECH2:MOVA,R7ADDA,R1MOVR2,AMOVA,R6ADDCA,R0RRCAMOVDPH,AMOVA,R2RRCAMOVDPL,AMOVXA,DPTRCLRCSUBBA,BJNCSECH3INCDPTRMOVR0,DPHMOVR1,DPLSJMPSECH1SECH3:JZSECH5MOVA,DPLSUBBA,#01HMOVR7,AJNCSECH4MOVR6,DPHDECR6SECH4:SJMPSECH1SECH5:MOVR0,DPHMOVR1,DPLCLRARET

    注意事项

    本文(51单片机汇编程序集.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开