第十三课 单片机指令(三).docVIP

  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文档。上传文档
查看更多
第十三课 单片机指令(三)

第十三课 单片机指令(三) ??算术、逻辑运算类指令也是单片机中极为重要的指令系统,在很多教科书中都把它们归为一类,实际上它们还是有区别的,为了让大家便于记忆,这里把它们分了开来。在单片机中,算术运算类指令有24 条;逻辑运算类指令有25 条。这一课我们先来讲解算术运算类指令,下面我们分别加以讲解: 一.算术运算类指令 1。不带进位的加法指令 (1)ADD A,Rn ;例:ADD A,R7 (2)ADD A,@Ri ;例:ADD A,@R1? (3)ADD A,direct;例:ADD A,30H? (4)ADD A,#data ;例:ADD A,#30H指令说明:这些指令的意思就是把后面的值与A 中的值相加,结果送到A 中去。举例:MOV A,30H ; ADD A,10H ;执行结果A=40H 2。带进位的加法指令 (1)ADDC A,Rn ;例:ADDC A,R7 (2)ADDC A,@Ri ;例:ADDC A,@R1 (3)ADDC A,direct;例:ADDC A,30H (4)ADDC A,#data ;例:ADDC A,#30H? 指令说明:这些指令的作用都是将A 中的值和其后面的值相加,并且加上进位位CY 中的值。为什么要这样做呢?我们知道51 单片机是一种8 位单片机,所以只能做8 位的数学运算,也就是说最大运算的范围只能是0-255 ,这在实际工作中是不够的,因此就要进行扩展,怎么扩展,就是将2 个8 位的数学运算合起来,成为一个16 位的运算,这样可以表达的数的范围就能达到0-65535 。如何合并呢?其实很简单,让我们看一个十进制数的加法例子:66+78 ,这两个数相加,我们根本不会在意它的过程,但事实上我们是这样做的:先做6+8 (低位),然后再做6+7 ,这是高位。做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法,之所以要分成两次来做,是因为这两个数超过了一位数所能表达的范置(0-9)。在做低位时产生了进位,我们通常的办法是在适当的位置点一下,然后在做高位加法时将这一点加进去;其实计算机中做16 位加法时同样如此,先做低8 位的,如果两数相加产生了进位,也要“点一下”做个标记,这个标记就是进位位CY,在PSW 中,我们前面已经讲过,在进行高位加法时将这个CY 加进去。例如做2 个16 进制数相加:1067H+10A0H ,先做67H+A0H=107H ,而107H 显然超过了0FFH ,因此最终保存在A 中的是7,而1 则进到了PSW 中的CY 位去了,换言之,CY 位就相当于是100H ,然后再做10H+10H+CY ,结果是21H ,所以最终的结果是2107H。 3。带借位的减法指令 (1)SUBB A,Rn ; (2)SUBB A,@Rn ; (3)SUBB A,direct; (4)SUBB A,#data ; 指令说明:没有不带借位的减法指令,如果需要做不带借位的减法指令(在做第一次相减时),只要将CY 清零即可。 4.乘法指令 (1)MUL AB ; 指令说明:此指令的功能是将A 和B 中的两个8 位无符号数相乘,两数相乘结果一般比较大,因此最终结果用1 个16 位数来表达,其中高8 位放在B 中,低8 位放在A 中。在乘积大于FFFFFH(65535)时,PSW 的0V 位置“1”(溢出),否则OV 为“0”,而CY 位总是为“0”。 例:(A)=4EH,(B)=5DH;MUL AB ;乘积是1C56H,所以在B 中放的是1CH,而A 中放的则是56H。 5.除法指令 (1)DIV AB(A/B) 指令说明:此指令的功能是将A 中的8 位无符号数除以B 中的8 位无符号数(什么是无符号数?简单的说就是没有负数的数,也就是整数,比如1,2,3,1.2,4.5 等等这样的数)。除法一般会出现小数,但计算机中可没法直接表达小数,它用的是我们小学生用的商和余数的概念,如13/5 ,其商是2,余数是3。除了以后,商放在A 中,余数放在B 中。CY 位和OV 位都是“0”,如果在做除法前B 中的值是00H,也就是除数为0,那么0V=1。 6.加1 指令 (1)INC A ;例如:A=20H INC A;?A=21H? (2)INC Rn ;例如:R7=20H INC A;?R7=21H? (3)INC direct;例如:30H=20H INC 30H;?30H=21H? (4)INC @Ri ; (5)INC DPTR ;例如:DPTR=20H INC DPTR;?DPTR=21H? 指令说明:从结果上看INC A 和ADD A,#1 差不多,但INC A 是单字节单周期指令,而ADD A,#1 则是双字节双周期指令,而且INC A

文档评论(0)

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

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

1亿VIP精品文档

相关文档