欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网
全部分类
  • 图纸下载>
  • 教育资料>
  • 专业文献>
  • 应用文书>
  • 行业资料>
  • 生活休闲>
  • 办公材料>
  • 毕业设计>
  • ImageVerifierCode 换一换
    首页 人人文库网 > 资源分类 > PPT文档下载  

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

    • 资源ID:19200526       资源大小:416.81KB        全文页数:12页
    • 资源格式: PPT        下载积分:12积分
    扫码快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
    二维码
    微信扫一扫登录

    手机扫码下载

    请使用微信 或支付宝 扫码支付

    • 扫码支付后即可登录下载文档,同时代表您同意《人人文库网用户协议》

    • 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败

    • 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费

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

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

    项目单元4 80C51定点数运算程序设计实训,4.1训练要求 1编写程序实现两个16位数的减法:7F4DH2B4EH,结果存入内部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码(10101111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。 当累加器A中的高4位数出现了非BCD码(10101111)或高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,负数扩充的高字节为FFH。,【例4-2】已知两个字节有符号数(补码),分别存放在R1R0和R3R2中(高位在前),试编写程序求它们的和,结果存放在R5R4中。 START:MOV A,R0 ;取一个加数的低8位 ADD A,R2 ;与另外一个数的低8位相加 MOV R4,A ;存低8 位的和 MOV A,R1 ;取一个加数的高8 位 ADDC A,R3 ;高8位相加,并加低8位相加时的Cy MOV R5,A ;存高8位的和,需要判断OV RET 注意下面两条指令的区别: INC A ADD A,#1 这两条指令都实现将A中的数加1.第一条指令只影响PSW的标志位P,第二条指令会影响PSW的标志位:Cy、AC、OV、P。在有些情况下不能互换使用,后面的减法指令存在类似的情况。 【例4-3】已知一个原码表示的双字节有符号数(非负零)存放在R1R0(高位在前)中,试编写程序求它的补码,结果存放在R1R0中。 求一个表示的数的补码,首先要知道这个数的符号,正数的补码与原码相同,负数再按照求补的过程去运算。,START:MOV A,R1 ;取高8位 JNB ACC.7,AA ;高位为0,表示正数转移,不需变换 MOV A,R0 吗 ;取低8位 CPL A ;求反 ADD A,#1 ;加1 MOV R0,A ;存低8位 MOV A,R1 ;取高8位 CPL A ;求反 ADDC A,#0 ;加低8位的进位 SETB ACC.7 ;高位置1,负数 MOV R1,A ;存高8位 AA:RET 这个程序中的加1只能用ADD指令,因为要考虑低8位加1后的进位。 【例4-4】 已知两个BCD码表示的数,分别存放在R0R1和R2R3中(高位在前),试编写程序求它们的和,结果存放在R6R4R5中。,AA:MOV A,R1 ;取一个加数的低8位 ADD A,R3 ;与另外一个数的低8位相加 DA A ;低位和BCD码调整 MOV R5,A ;存低位的和 MOV A,R0 ;取一个加数的高8位 ADDC A,R2 ;高8位相加,并加低8位相加时的Cy DA A ;高位和BCD码调整 MOV R4,A ;存高位的和 CLR A ;A清0 ADDC A,#0 ;0+0+CyA,取出高8位相加时的Cy MOV R6,A ;存进位 RET 2减法指令举例 【例4-5】 已知两个双字节数,被减数存放在R0R1,减数存放在R3R2中(高位在前),试编写程序求它们的差,结果存放在R5R4中。 STRAT:CLR C ;清Cy MOV A,R0 ;取被减数的低8位 SUBB A,R2 ;减去减数的低8位 MOV R4,A ;存低8位的差 MOV A,R1 ;取被减数的高8位 SUBB A,R3 ;减去减数的高8位和低8位的借位 MOV R5,A ;存高8位的差 RET,3乘法指令举例 【例4-6】 已知两个无符号数分别存放在R1R0和R2中,试编写程序计算它们的积,结果存放在R5R4R3(高位在前)。 START:MOV A,R0 ;取被乘数的低8位 MOV B,R2 ;乘数 MUL AB ;相乘 MOV R3,A MOV R4,B ;存放积 MOV A,R1 ;取被乘数的高8位 MOV B,R2 ;乘数 MUL AB ;相乘 ADD A,R4 ;错位相加 MOV R4,A ;和回存 CLR A ;清A ADDC A,B ;进位加到高字节中 MOV R5,A ;存高字节 RET 4除法指令举例 【例4-7】 已知8位的二进制数存放在R0中,试编写程序将其转换为十进制数存放在R3R2R1中(高位在前)。 在单片机中十进制数只能以BCD码的形式存在,单字节的二进制数的范围为0255,若需要求出它的百位、十位和个位,就用它去除以100,商就是百位,余数再除以10,就得到十位数和个位数。程序如下:,START: MOV A,R0 ;二进制数送A作为被除数 MOV B,#100 ;除数100 DIV AB ;执行除法 MOV R3,A ;百位数送R3 MOV A,B ;余数送A作为被除数 MOV B,#10 ;除数10 DIV AB ;执行除法 MOV R2,A ;十位数送R2 MOV R1,B ;个位数送R1 RET 【例4-8】已知被除数在R1R0中,除数在R2中,试编写程序来求它们的商,结果存放在R4R3中(高位在前)。 解题思路:用被除数减除数,如果够减,商加1.再减除数,直到不够减为止,每减一次,商就加1,这样就可以求出商。程序如下:,START:MOV R4,#0 ;商高位清0 MOV R3,#0 ;商低位清0 AA:CLR C ;清Cy MOV A,R0 ;被除数低位 SUBB A,R2 ;减除数低位 MOV R0,A ;低位差回送 MOV A,R1 ;被除数高位 SUBB A,#0 ;减除数高位(0) MOV R1,A ;高位差回送,JC BB ;不够减转移退出 MOV A,R3 ;够减,商低位 ADD A,#1 ;加1 MOV R3,A ;商低位回送 MOV A,R4 ;商高位 ADDC A,#0 ;加进位 MOV R4,A ;商高位回送 SJMP AA ;重新执行减法 BB:RET,4.4软件编制要点及参考程序 1软件编制要点 80C51单片机提供的是字节运算指令,所以在处理多字节数的加减运算时,要合理的运用进位(借位)标志。 2参考程序,(1) ORG 0000H LJMP START ORG 0040H START:CLR CY MOV 30H,#7FH MOV 31H,#4DH MOV R0, #31H MOV A,R0 SUBB A ,#4E MOV R0,A ;保存低字节相减结果 DEC R0 MOV A, R0 SUBB A,#2BH MOV R0,A ;保存高字节相减结果 END,(2) ORG 0000H LJMP START ORG 0040H START:MOV A,R0 MOV B,R2 MUL AB MOV R3,A MOV R4,B MOV A,R1 MOV B,R2 MUL AB ADD A,R4 MOV R4,A CLR A ADDC A,B MOV R5,A RET,4.5实训基本任务 实训1: (1) 建工程:名称为 *.UV2说明:*不要用中文用英文 (2) 建源文件:名称为 *.asm 说明:*不要用中文用英文,且不能与工程名同 (3) 在工程中添加源文件说明:子程序紧接着主程序存放,必须在 END 指令前 (4) 调试并运行程序 (5) 调试并运行程序:观察内部RAM 30H、31H单元内容并验证结果 实训2: (1) 建工程:名称为 *.UV2说明:*不要用中文用英文 (2) 建源文件:名称为 *.asm 说明:*不要用中文用英文,且不能与工程名同 (3) 在工程中添加源文件说明:子程序紧接着主程序存放,必须在 END 指令前 (4) 对工程进行汇编、编译 (5) 调试并运行程序:观察寄存器R5、R4、R3中的内容并验证结果 4.6思考内容 4-1编写程序,实现双字节无符号数加法运算,要求 (R0R1)+(R6R7)(60H61H)。 4-2 .编写多字节无符号数的加法程序。设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相加后的结果要求存放在DATA2数据区。 4-3. 编写多字节无符号数的减法程序。设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。相减后的结果要求存放在DATA2数据区。 4-4.试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。 4-5编写程序实现双字节无符号数乘法(R3R4*R6R7)=(R5R2R3R4),4.7实训报告要求和考核标准 实训考核标准见表4-1,表4-1 实训考核标准,

    注意事项

    本文(项目单元480C51定点数运算程序设计实训.ppt)为本站会员(xt****7)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    网站客服QQ:2881952447     

    copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

    备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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