第3章.指令系统[上new]详解.ppt

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 1、无符号数时:1101 0011B=D3H=211,1110 1000B=E8H=232。 211+232=443。 计算结果是:1 1011 1011B=1BBH=256+187=443。1是自然进位,存放在CY中。 2、有符号数(补码)时:1101 0011B其真值为-(0010 1101B)=-45,1110 1000B其真值为-(0001 1000B)=-24,则:-45+(-24)=-69。 * 4EH为78,5DH为93。78X93=7254,结果8位所表示的范围,即0FFH(256)。 * * 说明:BCD码采用四位二进制数编码,并且只采用了其中的十个编码,即0000~1001,分别代表BCD码0~9,而1010~1111为无效码。当相加结果大于9,说明已进入无效编码区;当相加结果有进位,说明已跳过无效编码区。凡结果进入或跳过无效编码区时,结果是错误的,相加结果均比正确结果小6(差6个无效编码) 。 * 注意:DA A指令不能简单地把累加器A中的十六进制数转化成BCD数!也不能直接用于十进制减法的调整!若两BCD数相减,应将减数先化为100的补数,两数相加,再用DA A调整。 因为,“DA A”不能用减法指令“SUBB” 之后,必须把SUBB指令变换成加法指令“ADD”,才能用DA A指令进行调整。 这里提到了“减法”变换成“加法”,就要借用时钟“倒拨”变成“正拨”的方法,倒拨15分钟,和正拨45分钟,效果相同。15和45就是以60为模的互补的数。 两位十进制数,是以100为模的,减去60,和加上40,效果是相同的。 两个BCD数(即:单字节)相减,可先将减数化为100的补数,再与被减数相加,即:“被减数-减数”变为“被减数+减数的补数”,然后用DA A调整指令。 100,可以分解写成99+1,可以写成(99+1=1001 1001BCD+1=1001 1010)9AH。 例如,被减数(如53BCD,即53H)存放在40H单元,减数(如12BCD,即12H)存放在41H单元中,(53H-12H)编写程序如下: CLR C MOV A,#9AH ;100送入A SUBB A, 41H ;100减去减数,得到减数的补数 ADD A, 40H ;使用加法 DA A ;调整为BCD数 MOV 42H,A ;结果(两BCD数相减的差)存入42H单元中 3.3.2 算术操作类指令 ADDC A,Rn ;(A)+(Rn)+CY→A。 1字节指令 ADDC A,direct ;(A)+(direct )+CY→A。 2字节指令 ADDC A,@Ri ;(A)+((Ri))+CY→A。 1字节指令 ADDC A,#data ;(A)+#data+CY→A。 2字节指令 对标志位的影响与ADD相同 说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0~255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到0~65535。 3.3.2 算术操作类指令 3. 带借位的减法指令 SUBB A,Rn ;(A)-(Rn)-CY→A。 1字节指令 SUBB A,direct ;(A)-(direct )-CY→A。 2字节指令 SUBB A,@Ri ;(A)-((Ri))-CY→A。 1字节指令 SUBB A,#data ;(A)-#data-CY→A。 2字节指令 若在使用“SUBB”指令前不知道“CY”值,则应先将“CY”清“0”。 P66.例:3-3 设累加器A的内容为0C9H,寄存器R2的内容为54H,进位标 志CY=1。执行指令“SUBB A,R2”的结果为(A)=74H, CY=0,AC=0,OV=1。 补码,其真值为-55 补码,其真值为-56 补码,其真值为84 补码,其真值为116 补码时:-55-1-(+84)=-140,超过了补码表示的范围 3.3.2 算术操作类指令 4.乘法指令 MUL AB ;(A)×(B)→B15~8 A7~0 。 1字节指令 功能:把累加器A和寄存器B中的两个8位无符号数相乘,所得 16位积的低8位存放在A中,积的高8位存放在B中。若 乘积0FFH(255),则“OV”置1;否则清0(即B的内容 为0)。CY总是被清0。 P66. 例3-4 (A)=4EH, (B)=5DH。执行指令:MUL AB 后,其结果是什 么? 3.3.2 算术操作

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档