第9章(指令).ppt

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

2,条件转移指令: (1)累加器A判零转移指令(双字节指令) JZ rel ;若(A)=0,则PC=PC+2+rel ;若(A)≠0,则PC=PC+2 JNZ rel ;若(A)≠0,则PC=PC+2+rel ;若(A)=0,则PC=PC+2 (2)比较条件转移指令(3字节) a=data时:PC+3→PC,Cy=0 CJNE A, #data,rel adata时:PC+3+rel,Cy=0 CJNE Rn,#data,rel adata时:PC+3+rel,Cy=1 CJNE A,direct,rel CJNE @Ri,#data,rel 比较+转移的指令使编程更为方便。 【注意】: 1) 4条指令都是3字节指令,所以执行时PC+3→PC。 2) 指令的执行实际上就是做不回送的减法,通过Cy反映出 无符号数的两数的大小: Cy=0 则 X=Y; 若Cy=1 则XY 。 3) 若参加比较的是有符号数时,无法直接用Cy来判断。必须事先对符号进行判断,再根据四种情况具体处理。 a、当x、y均0时,同无符号数相同; b、当x、y均0时, 同无符号数相同; c、当x0,y0时,xy; d、当x0、y0时,xy; X0? Y0? Y0? Cy0? XY XY Y N N Y Y N N Y 应用举例 限幅程序,将A限定在50h~60h直接    CJNE A,#60H,Ab1;不等于60H跳转 LJMP Abret ;等于60H退出 Ab1: JC Abret1 ;CY=1,A60H,继续判断是否大于50H mov a,#60h ;CY=0,A60H,限幅 Abret: ret ;退出 Abret1: CJNE A,#50h,Abret2 ;不等于50H跳转 LJMP Abret ;等于50H退出 Abret2:JNC Abert ;CY=0,60hA50H,不变 MOV A,#50H ;CY=1,A50H,限幅 LJMP Abret   这是一个循环结构的程序,DJNZ指令又是决定整个循环是否结束的控制语句。 (3)减一条件转移指令 1, DJNZ Rn,rel ;Rn-1→Rn,若Rn≠0则PC+2+rel→PC 若Rn=0则PC+2→PC 2, DJNZ direct,rel ;(direct)-1→direct, 若(direct)≠0则PC+3+rel→PC 若(direct)= 0则PC+3→PC 注意:第一条指令为双字节,第二条指令为三字节。 指令本身先做一个带回送的减一运算操作,然后 根据运算的结果是否为零作为转移的条件 例9-5从P1.0输出15个方波 MOV R2, 30 ;方波数 PULSE: CPL P1.0 ;取反 DJNZ R2,PULSE ;R2-1不等于0循环 RET 3,子程序调用和返回指令 (一)子程序调用指令: 1,短调用指令 ACALL addr11 2, 长调用指令 LCALL addr16 (二)返回指令: ret retI (一)调用指令 1,短调用指令 ACALL addr11 (PC)+2→PC (SP)+1→SP, (PC)7~0→(SP) (SP)+1→SP, (PC)15~8→(SP) addr11 → PC10~0 2, 长调用指令 LCALL addr16 (PC)+3→PC (SP)+1→SP, (PC)7~0→(SP) (SP)+1→SP, (PC)15~8→(SP) addr16 → PC 子程序的调用包含两部分内容: a, 实现转入子程序的入口地址;这主要由调用语句中的addr11或addr16 实现。 b,子程序完成后,能够自动的返回;这是由调用语句执行时依靠堆栈操作已经将返回地址压栈保存,带返回时弹出送PC实现的。 (二)返回指令 格式:RET (子

文档评论(0)

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

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

1亿VIP精品文档

相关文档