项目单元定点数运算程序设计实训.ppt

项目单元定点数运算程序设计实训.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目单元定点数运算程序设计实训

* * 项目单元4 80C51定点数运算程序设计实训 4.1训练要求 1.编写程序实现两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,30H单元存差的高8位,31H单元存差的低8位。 2.编写程序实现两个数的乘积运算,要求(R1R0)×(R0)=(R5R4R3) 4.2训练目的 使学生能够灵活运用算术运算指令进行数据加、减、乘、除运算操作 4.3相关知识 项目学习情境1 算术运算指令 1.加法指令 (1) 不带进位的加法指令 ADD加法指令的目的操作数是A,运算结果存放在A和Cy中。最高位有进位时,Cy=1,否则 Cy=0。加法指令除影响Cy外,还影响PSW的其他标志位,如AC、OV和P。 (2) 带进位的加法指令 指令的功能是把源操作数与累加器A的内容相加再与进位标志CY的值相加,结果送入目的操作数A中。加的进位标志CY的值是在该指令执行之前已经存在的进位标志的值,而不是执行该指令过程中产生的进位。 (3)BCD码调整指令 DA A 指令的功能是对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整。两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的压缩BCD码的和。调整要完成的任务是: ① 当累加器A中的低4位数出现了非BCD码(1010~1111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。 ② 当累加器A中的高4位数出现了非BCD码(1010~1111)或高4位产生进位(CY=1),则应在高4位加6调整,以产生高4位正确的BCD结果。 2.减法指令 减法指令的功能是将A中的数据减去源操作数中的数据和Cy,差存放在A中,运算过程影响PSW的标志位:CY、AC、P、OV。由于减法指令在执行时都会减Cy,在第一次执行减法操作时必须保证此时的Cy=0,否则,运算结果时错误的。 3.乘法指令 MUL AB ;累加器A与B寄存器相乘 该指令的功能是将累加器A与寄存器B中的无符号8位二进制数相乘 ,乘积的低8位留在累加器A中,高8位存放在寄存器B中。 ? 当乘积大于FFH时,溢出标志位(OV)=1。而标志CY总是被清0。 例:若(A)=50H,(B)=A0H,执行指令 MUL AB 之后,(A)=00H,(B)=32H,(OV)=1,(CY)=0。 4.除法指令 DIV AB ;累加器A除以寄存器B 该指令的功能是将累加器A中的无符号8位二进制数除以寄存器B中的无符号8位二进制数,商的整数部分存放在累加器A中,余数部分存放在寄存器B中。当除数为0时,则结果的A和B的内容不定,且溢出标志位(OV)=1。而标志CY总是被清0。 例:若(A)=FBH(251),(B)=12H(18),执行指DIV AB 之后,(A)=0DH,(B)=11H,(OV)=0,(CY)=0。 项目学习情境2 指令应用举例 1.加法指令举例 【例4-1】 已知两个双字节无符号数,分别存放在R0R1和R2R3中(高位在前),试编写程序求它们的和,结果存放在R6R4R5中。 AA:MOV A,R1 ;取一个加数的低8位 ADD A,R3 ;与另外一个数的低8位相加 MOV R5,A ;存低8位的和 MOV A,R0 ;取一个加数的高8位 ADDC A,R2 ;高8位相加,并加低8位相加时的Cy MOV R4,A ;存高8位的和 CLR A ;A清0 ADDC A,#0 ;0+0+Cy →A,取出高8位相加时的Cy MOV R6,A ;存进位 RET 多字节数相加运算,应预先分析结果可能占用的空间,分配足够的单元存放,本例中两个16位的无符号数相加的和可能会超过16位,就要占用3个字节。 对于有符号数的多字节加法,当采用补码形式的时候,程序和无符号数基本相同,只是在最高字节运算后,不是判别Cy,而是判断OV。当OV=1时,表示有符号数的运算超出了范围,这时可以将原先的两个有符号数扩充一个高字节,然后再编程计算。正数扩充高字节为00H,负

文档评论(0)

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

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

1亿VIP精品文档

相关文档