--汇编语言程序设计新编.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
--汇编语言程序设计新编

第4章 汇编语言程序设计 教学目的 (1) 了解汇编语言编程的基础知识。 (2) 了解汇编语言程序设计的基本步骤和方法。 (3) 了解汇编语言目标程序效率高、占存储空间少、运行速度快、实时性强等特点。 (4) 掌握MCS-51汇编语言的顺序、分支、循环及子程序的结构、设计。 本章重点与难点 分支程序、循环程序的设计 子程序的编写与应用 结束 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 开始 将30H单元内的两位BCD码拆开并转换成ASCII码,存入RAM两个单元31H和32H中,高字节存32H。 例1 ORG 2000H MOV A,30H ;取值 ANL A,#0FH ;取低4位 ADD A,#30H ;转换成ASCII码 MOV 31H,A ;保存结果 MOV A,30H ;取值 SWAP A ;高4位与低4位互换 ANL A,#0FH ;取低4位(原高4位) ADD A,#30H ;转换成ASCII码 MOV 32H,A ;保存结果 SJMP $ END 设X、Y两个小于10的整数分别存于片内30H、31H单元,试求两数的平方和并将结果存于32H单元。 例2 结束 取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 开始 保存平方和 ORG 2000H MOV A,30H ;取30H单元数据 MOV B,A ;将X送入B寄存器 MUL AB ;求X2,结果在累加器中 MOV R1,A ;将结果暂存于R1寄存器中 MOV A,31H ;取31H单元数据 MOV B,A ;将Y送入B寄存器 MUL AB ;求Y2,结果在累加器中 ADD A,R1 ;求X2+ Y2 MOV 32H,A ;保存数据 SJMP $ ;暂停 END MOV DPTR, #2002H MOVX A, @DPTR MOV DPTR, #2004H MOVX @DPTR, A MOV DPTR, #2001H MOVX A, @DPTR MOV DPTR, #2003H MOVX @DPTR, A MOV DPTR, #2000H MOVX A, @DPTR MOV DPTR, #2002H MOVX @DPTR, A SJMP $ 例 3 将地址为2000H、2001H、2002H的片外数据存储器单元的内容分别传送到2002H、2003H、2004H存储单元中去。 例4 字节加法程序 被加数在内部RAM的50H、51H、52H单元中;加数在内部RAM 的53H、54H、55H单元中;相加之和存放在50H、51H、52H单元中,进位位存放在位寻址区的20H单元中。 INC R0 INC R1 MOV A, @R0 ADDC A, @R1 MOV @R0, A CLR A ADDC A, #00H MOV R0, #20H MOV @R0, A END MOV R0, #50H MOV R1, #53H MOV A, @R0 ADD A, @R1 MOV @R0, A INC R0 INC R1 MOV A, @R0 ADDC A, @R1 MOV @R0, A 例5 乘法运算 设被乘数为16位无符号数,低8位存放在地址为K的单元,高8位存放在地址为K+1的单元。乘数为8位无符号数,存放在M单元。编程求出二者乘积,并将乘积的0~7位存放在R1,8~15位存放在R2,16~23位存放在R3中。 16位无符号数与8位无符号数相乘的步骤示意如下: MOV R0, #K ;设置被乘数地址指针 MOV A, @R0 ;被乘数送A中 MOV B, M ;乘数送B中 MUL AB ;(K)×(M) MOV R1, A ;乘积的0~7位存入R1 MOV R2, B ;暂存积的8~15位 INC R0 ;指向被乘数高8位地址 MOV A, @R0 ;取被乘数高8位 MOV B, M ;乘数送B中 MUL AB ;(K+1)×(M) ADD A, R2 ;求得乘积的8~15位 MOV R2, A ;乘;积的8~15位存入R2 MOV A, B ADDC A, #00H ;求;得乘积的16~23位 MO

文档评论(0)

yy556911 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档