单片机原理与接口技术 第3章 80C51单片微机的指令系统2.ppt

单片机原理与接口技术 第3章 80C51单片微机的指令系统2.ppt

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

第三章 80C51单片微机的 指令系统 Outline 3.3 算术运算类指令 3.4 逻辑运算类指令 3.5 控制程序转移类指令 CJNE指令执行流程图 3.6 布尔(位)操作类指令 CMP:CJNE A,30H , LOOP AJMP FH ;等于T30,转FH LOOP:JNC JW ;大于T30,降温 CJNE A,20 H,LOOP1 AJMP FH ;等于T20,转FH LOOP1:JC SW ;小于T20,升温 FH:… ;保温 AJMP CMP JW:… ;降温 AJMP CMP ? SW:… ;升温 AJMP CMP ? DJNZ Rn,rel DJNZ direct,rel ? 功能是:每执行一次本指令,先将指定的Rn或direct的内容减1,再判别其内容是否为0。 ◇不为0,转向目标地址,继续执行循环程序; ◇为0,则结束循环程序段,程序往下执行 3.5.3 循环转移指令 例:从P1.7引脚输出5个方波 MOV R2,#10 ;5个方波,10个状态 LOP:CPL P1.7 ;P1.7状态变反 DJNZ R2 ,LOP 将2000H单元开始的一批数据传送到从3000H开始的单元中,数据长度在内部RAM的30H中。 MOV DPTR,#2000H;源数据区首址 PUSH DPL ;源数据区首址压栈保护 PUSH DPH MOV DPTR,#3000H;目的数据区首址 MOV R6,DPL ;目的数据区首址存入寄存器 MOV R7,DPH 例12:数据块移动 LP: POP DPH ;取数据区地址指针 POP DPL MOVX A,@DPTR ;取源数 INC DPTR PUSH DPL PUSH DPH MOV DPL,R6 ;取目的数据区地址指针 MOV DPH,R7 MOVX @DPTR,A ;存入目的数据区 INC DPTR MOV R6,DPL MOV R7,DPH DJNZ 30H,LP ;若数据块未移完,则继续 POP DPH POP DPL SJMP $ 注意: 2000H和3000H都在外部RAM或I/O中,使用地址指针均为DPTR,注意DPTR的保护、恢复 ⒈ 绝对调用指令 ? ACALL addr11 a10 a 9 a8 1 0 0 0 1 a7----a0 无条件地调用首址为addr11处的子程序。操作不影响标志位。 ◆ 断点地址自动压栈:把PC加2以获得下一条指令的地址(当前PC),将这16位的地址压进堆栈(先PCL,后PCH),同时栈指针加2。然后将指令提供的 11位目标地址,送入PC10~PC0, PC15~PC11的值不变,程序转向子程序的首地址开始执行。目标地址由指令第1字节的高3位和指令第2字节所组成; 3.5.4 子程序调用指令 ◆ 所调用的子程序的首地址必须与ACALL后面指令的第1个字节在同一个2 KB区域内。 例:设(SP)=60H,(PC)=0123H,子程序SUBRTN的首地址为0456H。 执行指令为ACALL SUBRTN 机器码为91 56 执行结果为(PC)+2=0123H+2=0125H→(PC), ◆将(PC)=0125H压入堆栈: 25H压入(SP)+1=61H,01H压入(SP)十l=62H,(SP)=62H。 ◆ addr11 PC10–0 , PC=0456H 例:设(A)=A3H(1010 0011B), (R0)= 45H(0100 0l0lB)。 执行指令为 XRL A,R0 1 0 1 0 0 0 1 1 ⊕ 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 ? 执行结果为(A)=E6H(111001l0B)。 用于对目的操作数的某些位取反,也可以判两个数是否相等,若相等则结果为0。 ? 包括带进位C和不带进位C的循环左移和循环右移等4条指令。 对于带进位的循环移位,C的状态由移入的数位决定,其他状态标志位不受影响。 3.4.4

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档