- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51指令系统 无条件转移指令:CPU无条件地转移到指定位置去执行程序。 指令格式: 长转移指令: LJMP addr16 ;(PC)←addr15~0 绝对转移指令: AJMP addr11;(PC)←(PC)+2,PC10~0←addr11 相对转移指令:SJMP rel ;(PC)←(PC)+2+rel 间接转移指令: JMP @A+DPTR ;(PC) ←(DPTR)+(A) 注意: (1)使用转移指令时,指令中的地址或偏移量均可采用标号,只有在执行前才被汇编成实际的二进制地址。 (2)指令的转移范围: 在执行当前转移指令后的PC值的基础上: 长转移指令LJMP: 64KB 绝对转移指令AJMP :2KB 相对(短)转移指令SJMP : -128~+127(用补码表示) 间接(散)转移指令JMP: 64KB (3)相对(短)转移指令SJMP rel 中地址偏移量的计算: rel = 转移目标地址-转移指令地址(当前PC值) - 2 (4)原地踏步(暂停当前的程序,并不是真的停机)的实现 SJMP $ 或 HERE: SJMP HERE (5)间接转移指令:JMP @A+DPTR 常用于实现程序的分支转移。 DPTR为转移目的的起始地址,A为转移目的的偏移量。 (6)在编程中,经常使用短转移指令SJMP和相对转移指令AJMP,以便生成浮动代码,并不经常使用长转移指令LJMP。 MCS-51指令系统 条件转移指令:在规定的条件满足时进行程序转移,否则程序往下顺序执行。MCS51中,条件转移指令实质上是累加器A或Cy判零指令。 指令格式: 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 JC,JNC类似 指令的转移范围: rel的取值范围是在执行当前转移指令后的PC值基础上的-128~+127(用补码表示)。 可以采用符号地址表示。 偏移量rel的计算方法: rel = 转移目标地址-转移指令地址(当前PC值) - 2 例子1:有一数据块放在外部RAM的2000H开始的地方,统计前面非0的数据的个数。(使用JZ指令) 例子2:if(ab) a++; else b++ (使用JNC指令) MCS-51指令系统 比较转移指令:把两个操作数进行比较,以比较的结果作为条件来控制程序的转移。 CJNE A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE @Ri, #data, rel 功能: 若(目的操作数)=(源操作数), 则程序继续执行, PC←(PC) +3 若(目的操作数)(源操作数),则程序转移, PC←(PC) + rel +3,Cy←0 若(目的操作数)(源操作数),则程序转移, PC←(PC) + rel +3,Cy←1 对标志位影响:影响Cy标志位,不影响其他标志位。 指令的转移范围:rel的取值范围是在执行当前转移指令后的PC值基础上的-128~+127(用补码表示)。 可以采用符号地址表示。 注意:比较转移指令的比较是通过两操作数的减法实现的,影响Cy标志位,不保存最后的差值,两个操作数的内容不变。 例子:计算1+2+....+20。使用CJNE指令。 MCS-51指令系统 循环转移指令:具有减1判非0则转移的功能。主要用于控制程序循环,实现按循环次数控制循环的目的。 特点:循环转移指令是一组把减1与条件转移两种功能结合在一起的指令。 DJNZ dest , rel ; dest=Rn, direct dest ← dest -1 若dest ≠ 0,则转移 PC ←(PC)+2+rel 若dest = 0,则不转移PC ←(PC) +2 例子:计算1+2+3+...+20。使用DJNZ指令。 MCS-51指令系统 子程序调用与返回指令: 定义:具有完整功能的程序段定义为子程序,供主程序调用。 功能:供主程序在需要时调用。子程序可以在程序中反复多次使用,以简化源程序的书写。 特点:子程序可以嵌套,有利于模块化程序设计。 主程序与子程序之间的调
文档评论(0)