网站大量收购独家精品文档,联系QQ:2885784924

第3章 指令系统及程序设计举例课程.ppt

第3章 指令系统及程序设计举例课程.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 指令系统及程序设计举例 ② 比较转移指令 (对无符号数) CJNE 目的,源 ,rel ;3字节指令 源与目的字节进行比较 (目的-源),若它们的值不等,则转移,同时将Cy清0或置 1。比较操作不影响原有操作数。 rel = (终地址—始地址—3 )补 i) CJNE A,direct ,rel ;A ≠ (direct),转移 Adirect, Cy =0 Adirect,Cy = 1 ii) CJNE A ,#data,rel ;A ≠ data,转移同上。 iii) CJNE Rn,#data,rel ; Rn ≠ data,转移同上。 iv) CJNE @Ri,#data,rel ;(Ri) ≠ data,转移同上。 2. 条件转移类指令 ——若条件满足,则程序转向指定的目标地址。 ① 累加器A判零转移指令 JZ rel ; A=0 转移 JNZ rel ; A ≠ 0 转移 例:设 R7=56H, 执行指令 CJNE R7, #60H, K1 ;R760H,?K1 且Cy=1 … K1: JC K3 ;Cy=1,判出R760H ? k3 … K3: 例:片内RAM ONE 和 TWO 两个单元中存有两个无符号数,将两个数中小的存入30H单元。 MOV A ,ONE CJNE A,TWO ,BIG SJMP STORE BIG: JC STORE MOV A,TWO STORE: MOV 30H,A ③ 循环转移指令 i) DJNZ Rn,rel ;PC+2 ? PC, Rn-1?Rn, ;当Rn≠0时,PC + rel?PC ;当Rn=0时,则结束循环,程序向下执行。 功能: (Rn - 1)不为零时转移,否则继续执行。 ii) DJNZ direct,rel ;(direct)-1,不为零时转移,否则继续执行。 例:软件延时。(在P1.7引脚上输出一个50us的脉冲) 利用DJNZ指令可在一程序中插入某些指令来实现软件延时。DJNZ执行时间为2个机器周期,这样循环1次可产生2个机器周期延时。(12M晶振时, 1个机器周期=1us。2×24+1=49us) CLR P1.7 ;P1.7输出变低电平 MOV R2 ,#18H ;1us ;赋循环初值24 HERE: DJNZ R2 ,HERE ;2us ; R2-1?R2,R2不为零 循环。 SETB P1.7 ;P1.7输出高电平 3. 调用和返回指令 ① 短调用指令 ACALL addrll ;在2K范围内调用,与AJMP相似. ;断点保护: PC+2 ? PC,SP+2 ? SP,PC进堆栈。 ;addr0~10 ? PC0~10 注:子程序首地址必须在ACALL指令后第一字节为起始的 2K字节范围内ROM中。 例:多项单字节数求和。 设数组长度放R0中,数组存放首地址在R1中,数组之和则放于20H单元中(设和不超过256)。 CLR A SUMD: ADD A,@R1 INC R1 DJNZ R0,SUMD MOV 20H,A RET 数组之和 20H 数组首地址 R1 数组长度 R0 ② 长调用指令 LCALL addr16 ;在64K范围内调用 ;断点保护: PC+3 ? PC,SP+2 ? SP,PC进堆栈。 ;addr0~15 ? PC ③ 返回指令 i) RET ii) RETI (从中断返回) ;恢复断点? PC 4. 空操作指令 NOP ;除PC+1外,不作其它操作。 例:利用NOP产生方波; CLR P2.7 NOP NOP NOP NOP SEPB

文档评论(0)

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

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

1亿VIP精品文档

相关文档