51单片机学习05(算逻指令).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文档。上传文档
查看更多
51单片机学习05(算逻指令)

3.程序状态字寄存器PSW (标志寄存器) 记存CPU执行算术运算及某些操作的一些特征标志信息,以备后用 【例3-1】 (A)=53H,(R0)=FCH,执行指令 ADD A,R0 结果: (A)=4FH,Cy=1,Ac=0,OV=0,P=1 注意:运算中,由于位6和位7同时有进位,所以标志位OV=0。 【例3-2】 (A)= 85H,(R0)=20H,(20H)=AFH,执行指令: ADD A,@R0 结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1 注意:由于位7有进位,而位6无进位,所以标志位OV=1 【例3-3】 (A)=85H,(20H)=FFH,Cy=1,执行指令: ADDC A,20H 结果为:(A)=85H,Cy=1,Ac=1,OV=0,P=1 【例3-4】 (A)=56H,(R5)=67H,把它们看作为两个压缩的BCD数,进行BCD数的加法。执行指令: ADD A,R5 ;先按二进制加,得BDH DA A ;紧接着进行BCD调整,得23H且有向上进位 结果为:(A)=23H,Cy=1 (维持ADD后的Ac=1,OV=1),P=1。 可见,56+67=123,结果是正确的。 【例3-5】(A)=C9H,(R2)=54H,Cy=1,执行指令 SUBB A,R2 结果:(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位而位7无 向上借位) ,P=0 【例3-6】 (A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令 DEC A ;(A)-1→A = 0EH DEC R7 ;(R7)-1→R7 =18H DEC 30H ;(30H)-1→30H = FFH DEC @R1 ;((R1))-1→(R1) = FEH 结果为?(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1, 不影响其他标志 【例3-7】 (A)=FBH,(B)=12H,执行指令 DIV AB 结果为?(A)=0DH,(B)=11H,Cy=0,OV=0。 【例B3-7】编程序实现R1、R2中的双字节BCD数加上R3、R4中的双字节BCD数,三字节和值存放于R5、R6、R7中。 ORG 11A0H 11A0 EA MOV A,R2 ;取被加数低字节 11A1 2C ADD A,R4 ;加上加数低字节 11A2 D4 DA A ;十进制调整 11A3 FF MOV R7,A ;存和值的低字节 11A4 E9 MOV A,R1 ;取被加数高字节 11A5 3B ADDC A,R3 ;加上加数高字节及低字节的进位 11A6 D4 DA A ;十进制调整 11A7 FE MOV R6,A ;存和值的高字节 11A8 74 00 MOV A,#00H ;被加数与加数无第三字节,设其为0 11AA 34 00 ADDC A,#00H ;加上高字节向第三字节的进位 ;无需进行十进制调整(其结果为00H或01H) 11AC FD MOV R5,A ;存和值的第三字节 11AD 80 FE SJMP $ ;自循环暂停 11AF 【练习】如果是双字节数相加结果只需双字节呢? 如果是双字节二进制数相加(不是BCD数)呢? 如果是双字节二进制数相减结果为双字节二进制数呢? 如果是单字节二进制数相加结果为双字节呢? 如果是(31H)、(30H)的双字节数加上(41H)、(40H)中的双字节数,三字节结果存放于(52H)、(51H)、(50H)中,前者为高字节,如何编程。 ?二进制数的逻辑与运算 0^0=0 1^0=0 0^1=0 1^1=1 例: ?逻辑与运算常用来将一个数据的某些位清零(屏蔽),而保持其他位不变。 【例B3-8】将30H单元的低4位清零,高4位保持不变,可用下面指令实现。 ANL 30H,#0F0H 【例3-9 】 (A)=

文档评论(0)

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

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

1亿VIP精品文档

相关文档