课件11 数据传送指令和算术运算指令.ppt

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

4、交换指令(共5条) 4.1 字节交换指令 XCH A, Rn ;(A)←→(Rn) XCH A, direct ;(A) ←→(direct) XCH A, @Ri ;(A) ←→((Ri)) 例: 设(R1)=30H,(30H)=45H,(A)=7FH,则执行指令: XCH A, @R1 结果:(A)=45H,而(30H)=7FH,从而实现了累加器A与内部数据存储器RAM中30H单元的数据交换。 4.2 半字节交换指令 XCHD A, @Ri ;(A0~3) ←→((Ri)0~3) ;各自的高4位不变 例: 设(30H)=6FH,(R0)=30H,(A)=0F6H,则执行指令 XCHD A, @Ri 结果:(A)=0FFH,(30H)=66H 数据交换指令除了影响始终跟踪A中数据奇偶性的P标志外,对PSW中其他标志位均无影响。 4.3 累加器A中高四位与低四位交换指令 SWAP A 该指令所执行的操作是累加器A中的高4位与低4位的内容互换,其结果仍存放在累加器A中。 例: 设(A)=0A5H),则执行指令: SWAP A 结果:(A)=5AH) 指令SWAP交换了A中高、低半字节(3~0和7~4),结果不影响标志寄存器PSW。 5、算术运算指令 51单片机的算术/逻辑运算部件(ALU)仅执行无符号二进制整数的算术运算。除了加1和减1指令外,算术运算结果将使进位标志(Cy)、半进位标志(AC)、溢出标志(OV)置位或复位。 算术运算类指令有加、减、乘、除法指令,增1和减1指令,十进制调整指令,共24条,使用时应注意判断各种结果对哪些标志位(CY、OV、AC、P)产生影响。 加法和减法指令的第一操作数都是A,并将运算结果放在A中 5.1 不带进位的加法指令(影响AC、C、OV、P) ADD A, Rn ;A←(A)+(Rn) ADD A, direct ;A ←(A)+(direct) ADD A, @Ri ;A ←(A)+((Ri)) ADD A, #data ;A ←(A)+#data 如果位7有进位输出,则置“1”进位CY;否则清“0”CY。如果位3有进位输出,置“1”辅助进位AC;否则清“0”AC。如果位6有进位输出而位7没有 或者位7有进位输出而位6没有,则置位溢出标志OV;否则清“0”OV。 举例:设(A)=0C3H,(R0)=0AAH,执行指令: ADD A,R0 结果: 和中1的个数为奇数时P=1,否则,P=0。 5.2 带进位加法指令(影响AC、C、OV、P) ADDC A, Rn ;A←(A)+(Rn)+(CY) ADDC A, direct ;A←(A)+(direct)+(CY) ADDC A, @Ri ;A←(A)+((Ri))+(CY) ADDC A, #data ;A←(A)+data +(CY) 例如求 5688H+2396H 低字节用ADD指令,高字节用ADDC指令 功能:将A中的值和其后面的值相加,并且加上进位位C中的值。说明:由于51系列单片机是一种8位机,只能做8位的数学运算,8位运算的范围只有0-255,实际工作中是不够的,要进行扩展,一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到0-65535。 5.3 增量指令 INC A ;(A)←(A)+1 INC direct ;(direct)←(direct)+1 INC @Ri ;((Ri))←((Ri))+1 INC Rn ;(Rn)←(Rn)+1 INC DPTR ;(DPTR)←(DPTR)+1 例: 设(A)=40H,(41H)=29H,则执行下列指令: INC A ;(A)←40H+1H INC 41H ;(41H)←29H+1H 结果:(A)=41H,(41H)=2AH 例: 设(R0)=56H,片内RAM单元(56H)=0FFH,(57H)=50H,则执行下列指令: INC @R0 ;(56H)←00H INC R0 ;(R0)←57H INC @R0 ;(57H)←51H 结果:(56H)=00H,(R0)=57H,(57H

文档评论(0)

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

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

1亿VIP精品文档

相关文档