网站大量收购独家精品文档,联系QQ:2885784924

汽车电控单元与接口技术2精品.ppt

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主程序如下: ORG 1000H SR: MOV A, 30H ; 将30H中的内容a送入A ACALL SQR ; 转求平方子程序SQR处执行 MOV R1, A ; 将a2结果送R1 MOV A, 31H ; 将31H中的内容b送入A ACALL SQR ; 转求平方子程序SQR处执行 ADD A, R1 ; a2+b2结果送A MOV 40H, A ; 结果送40H单元中 SJMP $ ; 程序执行完,“原地踏步” 求平方子程序如下(采用查平方表的方法): SQR: INC A MOVC A, @A+PC RET TABLE: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 END 2.5 程序设计举例 2.5.1 多字节算术运算程序 [例题10] 编制程序实现两位16进制数乘法运算: (R7R6)16×(R5R4)16→(R3R2R1R0)16 解:MCS-51乘法指令只能完成两个8位无符号数相乘,因此16位无符号数求积必须将它们分解成8位数相乘来实现。其方法有先乘后加和边乘边加两种。现以边乘边加为例设计。 程序如下: ORG 1000H DMUL: MOV A, R6 ; 第一个因数的低位送A MOV B, R4 ; 第二个因数的低位送B MUL AB ; 第一个因数的低位乘以第二个因数的低位 MOV R0, A ; 积的低位送R0 MOV R1, B ; 积的高位送R1 MOV A, R7 ; 第一个因数的高位送A MOV B, R4 ; 第二个因数的低位送B MUL AB ; 第一个因数的高位乘以第二个因数的低位 ADD A, R1 ; 部分积相加,形成进位Cy MOV R1, A ; 部分积相加送R1 MOV A, B ; 部分积的进位Cy加到高位 ADDC A, #00H MOV R2, A MOV A, R6 ; 第一个因数的低位送A MOV B, R5 ; 第二个因数的高位送B MUL AB ; 第一个因数的低位乘以第二个因数的高位 ADD A, R1 ; 部分积相加,形成进位Cy MOV R1, A ; 回送部分积 MOV A, R2 ADDC A, B ; 部分积相加 MOV R2, A ; 回送部分积 MOV A, #00H ; 部分积的进位Cy加到高位 ADDC A, #00H MOV R3, A ; 回送部分积 MOV A, R7 ; 第一个因数的高位送A MOV B, R5 ; 第二个因数的高位送B MUL AB ; 第一个因数的高位乘以第二个因数的高位 ADD A, R2 ; 部分积相加,形成进位Cy MOV R2, A ; 回送部分积 MOV A, R3 ADDC A, B ; 部分积相加 MOV R3, A ; 回送部分积 RET END 2.5.2 数制转换程序 [例题11] 将双字节二进制数转换成BCD码(十进制数)。 解:将二进制数转换成BCD码的数学模型为: (a15a14…a1a0)2=(a15×215+a14×214+…+a1×21+a0×20)10 上式右侧即为欲求的BCD码。它可作如下变换 (a15×214+a14×213+…+a1)×2+a0 括号里的内容可变为:(a15×213 +a14×212+a13×211+…+a2)×2+a1 括号里的内容可变为:(a15×212+a14×211+a13×210+…+a3)×2+a2 …… 经过16次的变换后,括号里的内容可变为: (0×2+a15)×2+a14 所以括号里的内容的通式为ai+1×2+ai,即为二进制数转换成BCD码的公因式。

文档评论(0)

w447750 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档