- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DPJ第四章(定点数运算及数制转换)08年
§4 定点数运算及数制转换程序设计 主要内容 § 4. 1 加减运算程序 § 4. 2 乘除运算子程序 § 4.2.1 乘法运算子程序 § 4.2.1 乘法运算子程序 § 4.2.2 除法运算子程序 § 4.2.2 除法运算子程序 § 4.2.2 除法运算子程序 乘法运算子程序设计思想 “mpy8u”---8位*8位无符号乘法-程序 “mpy8s”: 8位*8位带符号乘法-布斯(Booth)算法 § 4. 3 数制转换子程序 § 4.3.1 “b16td5”--16位二进制转换成BCD码 § 4.3.1 “b16td5”——程序清单 § 4.3.1 “b16td5”——程序清单 § 4.3.1 “b16td5”——程序清单 § 4.3.2 “d5tb16” 五位BCD 到16位二进制的转换 “d5tb16” ----程序清单: “d5tb16” ----程序清单: § 4.3.3“yd5tb16” 五位压缩BCD 到16位二进制转换 § 4.4 开方运算程序设计 § 4.4.1 “kf16”——16位开方运算 “kf16”——程序清单 § 4.4.2 “kf32”——32位开方运算 * 定点数:是小数点固定的数。 分为:整数、小数、混合小数等。 小数或混合小数:可以用整数乘以10-n或2-n来表示。 例:十进制数12.56=1256*10-2 十六进制数1A.F8=1AF8*16-2 因此,可以将定点数先按整数运算,最后再考虑小数点的位置。本节主要讲解整数运算及数制转换程序。 另外,定点数又可分: 1. 无符号数--明确为正数的数,其符号省略了; 2. 带符号数--可能是正数、也可能是负数, (以补码表示,最高位为符号位)。 § 4. 1 加减运算程序 ; § 4. 2 乘除运算子程序 ; § 4. 3 数制转换子程序 ; § 4. 4 开方运算程序设计。 AT90S8535单片机 本身有加法和减法指令,可以直接调用相关指令来达到目的。 要求掌握16、32位加减法;16位带立即数加减法;16位比较、16位带立即数比较和16位取补程序。 例:要求 对r17:r16求补并回存。 思路:取反加1 。 可编程如下: beg16:com r16 com r17 subi r16, low(-1) sbci r17, high(-1) AT90S8535单片机没有乘法和除法指令。 教材列出的乘除运算子程有: 8 ,16 ,32 位带符号数、无符号数的运算子程。 可以编程实现,基本思路如下: 二进制数无符号乘法:用移位加法来实现; 无符号除法:用移位减法来实现。 而对有符号数则对符号位单独考虑。 4.2.1.1“mpy8u”——8位*8位无符号乘法 程序功能: r16 (被乘数)* r17(乘数)→r18:r17。 4.2.1.2“mpy8s”——8位*8位带符号乘法 程序功能: r16 (被乘数)*r17(乘数)→r18:r17。 4.2.1.3 mpy16u--16*16位无符号乘法 程序功能: r17:r16*r19:r18→r21:r20:r19:r18 。 4.2.1.4“mpy16s”——16*16位带符号乘法 程序功能: r17:r16*r19:r18→r21:r20:r19:r18 。 4.2.1.5“mpy32u”——32位*32位无符号乘法 程序功能:r19:r18:r17:r16*r23:r22:r21:r20 → r27:r26:r25:r24:r23:r22:r21:r20。 4.2.1.6“mpy32s”——32位*32位带符号乘法 程序功能:r19:r18:r17:r16*r23:r22:r21:r20 → r27:r26:r25:r24:r23:r22:r21:r20。 4.2.2.1“div8u”——8位/ 8位无符号除法 程序功能: r16 (被除数)/ r17(除数) 结果→ r16 (商),r15(余数)。 4.2.2.2“div8u”——8位/ 8位带符号除法 程序功能: r16 (被除数)/ r17(除数) →r16 (商) ,r15(余数)。 4.2.2.3“d16v8u”——16位/ 8位无符号除法 程序功能: (r16:r15)/ r17 →r16(商) ,r15(余数)。 4.2.2.4“div16u”——16位/ 16位无符号除法 程序功能:(r17:r16)/(r19:r18) →r17:r16 (商) ,r15:r14 (余数)。 4.2.2.5“div16s”——16位/ 16位带符号除法 程序功能:(r17:
文档评论(0)