第4篇80C51的指令系统.ppt

  1. 1、本文档共109页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
特殊传送指令(13条) 算术运算类指令举例——多位数加法 片外数据存储单元30H~33H存放有32位数据、40H~43H地址单元中也存放有32为数据,将此两个数相加,并把结果放到片内50H~53H单元中。 注:四个字节中数据的存放顺序是低地址放高位数据,存放的顺序如下 方法1——用直接寻址 MOV A, 33H ADD A, 43H MOV 53H, A MOV A,32H ADDC A, 42H MOV 52H, A ……… 方法2——间接寻址 MOV R0, #33H MOV R1, #43H SETB RS0 MOV R0, #53H CLR RS0 MOV A, @R0 ADD A, @R1 DEC R0 DEC R1 SETB RS0 MOV @R0, A DEC R0 方法3——循环结构 MOV R0, #33H MOV R1, #43H SETB RS0 MOV R0, #53H MOV R6, 4 CLR C L1: CLR RS0 MOV A, @R0 ADDC A, @R1 DEC R0 DEC R1 SETB RS0 MOV @R0, A DEC R0 DJNZ R6, L1 三、长转移指令 LJMP addr16 ;addr16→PC LJMP指令执行后,程序无条件地转向16位目标地址(addr16)处执行,该指令可以使程序从当前地址转移到64KB程序存储器地址空间的任意地址。 LCALL addr16 ;(PC)+3→PC ;(SP)+1→SP,(PC7~0)→(SP)(子程序断点低8位压入堆栈) ;(SP)+1→SP,(PC15~8)→(SP)(子程序断点高8位压入堆栈) ;addr16→PC 被调用的子程序可以在64KB范围内的任何位置。 例:设 (SP)=60H,标号K11的值为8000H,标号AAS的值为8200H,在执行指令: K11:ACALL AAS后结果为(SP)=62H (61H)=02H,(62H)=80H,(PC)=8200H 本 章 小 结 (1)寻址方式就是告诉你如何去寻找操作数,指令由操作码和操作数构成,操作码指明该指令要完成什么样的操作,操作数指出该操作的对象。 (2)80C51指令系统有7种寻址方式,即寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、变址寻址、相对寻址、位寻址,共有111条指令。 (3)数据传送类指令使用最多,执行结果一般不影响标志位,算术运算类指令执行结果均将影响CY、AC、OV标志,逻辑运算指令执行结果一般不影响标志位,只在涉及累加器A时,才会对奇偶标志P产生影响。控制转移类指令是改变程序走向的指令,分有条件与无条件2类,有条件转移类指令大都采用相对转移,位操作指令系统有自己的累加器CY,只限于在位址区操作。 四、散转移 JMP @A+DPTR ;(A)+(DPTR) →PC 可完成多条判跳指令的功能 例: 设累加器A中存放待处理命令的编号(0~n;n≤122),转移表首地址为PGTB,则执行以下程序后,将根据A内命令编号值使程序转到相应的处理程序入口。 RL A MOV DPTR, #PGTB JMP @ A+DPTR PGTB: AJMP PG0 ;A=0转向命令0处理入口 AJMP PG1 ;A=1转向命令1处理入口 . . . AJMP PGn ;A=n转向命令n处理入口 * * * * 4.6.2 条件转移指令 一、判零转移指令 JZ rel ; 若A=0,则PC+2+rel→PC(转移) 若A≠0,则PC+2→PC(继续执行) JNZ rel ; 若A≠0,则PC+2+rel→PC(转移) 若A=0,则PC+2→PC(继续执行) 源地址+字节数+rel=目标地址 rel =目标地址

文档评论(0)

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

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

1亿VIP精品文档

相关文档