4.6算术运算类-4.7位操作-4.8控制转移类-课程中心.ppt

4.6算术运算类-4.7位操作-4.8控制转移类-课程中心.ppt

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

图4-11 AJMP指令执行示意图 2)绝对转移AJMP指令 执行示意图 指令执行时分别把高3位和低8位地址值取出送入程序计数器PC的低11位,维持PC的高5位(PC+2后的)地址值不变,实现2KB范围内的程序转移。 * * 机器码: xxx00001 addr7~0 a10~a8 PC10~0←addr10~0 不变PC15~11 PC10~8 PC7~0 两字节指令 (1)无条件转移指令(4条) 3)相对短转移指令 SJMP rel ;PC←PC+2,PC←PC+rel 其中,rel为相对偏移量,是一个8位带符号的数。 指令控制程序无条件转向指定地址。该指定地址由指令第二字节的相对地址和程序计数器PC的当前值相加形成。 因而目标地址可以在这条指令首地址的前128字节到后127字节之间。 * * (1)无条件转移指令(4条) 4)间接转移指令 JMP @A+DPTR ; PC←A+DPTR 该指令把累加器里的8位无符号数与作为基址寄存器DPTR中的16位数据相加,所得的值装入程序计数器PC做为转移的目标地址。 执行16位加法时,从低8位产生的进位将传送到高位去。 指令执行后不影响累加器和数据指针中的原内容, 不影响任何标志。 * * 4)间接转移指令 JMP @A+DPTR ; PC←A+DPTR 这是一条极其有用的多分支选择转移指令,其转移地址是在程序运行时动态决定的,这也是和前3条指令的主要区别。 因此,可在DPTR中装入多分支转移程序的首地址,而由累加器A的内容来动态选择其中的某一个分支予以转移, 这就可用一条指令代替众多转移指令,实现以DPTR内容为起始的256个字节范围的选择转移。 * * (1)无条件转移指令(4条) LJMP 、AJMP、 SJMP 在实际应用中,由于AJMP和SJMP指令的跳转范围有限,而LJMP(长转移指令)不受跳转范围的限制,因此,一般情况下都可使用LJMP指令代替AJMP和SJMP指令。 * * L2 ; 转L2去执行 L1: …… L2: …… LJMP AJMP SJMP JMP 转移地址一般用符号地址, 直观易懂, 不易出错(包括下面条件转移指令) (2)条件转移指令(8条) 条件转移指令,是以执行该指令时的状态标志为条件,决定是否改变程序执行的顺序。符合条件就转移;不符合条件就不转移,顺序执行指令。 条件转移指令属于短距离相对转移,适用于与绝对地址无关的程序,跳转范围以当前地址为中心的-128~+127字节之内。若转移距离超过短距离范围,则必须使用两级以上的跳转。 * * 条件转移指令有: 累加器判零转移指令(JZ, JNZ) (2条) 比较转移指令 (CJNE) (4条) 循环转移指令 (DJNZ) (2条) (2)条件转移指令(8条) 1)累加器判零转移指令(2条) JZ rel (一般用符号地址); 若累加器为0则转移 JNZ rel (一般用符号地址); 若累加器不为0则转移 均为双字节,其中第二条字节为带符号的相对偏移量,PC现行值(PC加2后)与偏移量相加即得转移地址。该指令不改变累加器内容,不影响标志位。 * * 图4-12 JZ和JNZ指令执行示意图 JNZ rel JZ rel A=0? PC←PC+rel Y N PC←PC+2 A≠0? PC←PC+rel Y N PC←PC+2 1)累加器判零转移指令(2条) 例如,执行程序: MOV A, P0 ; P0口内容送累加器A JZ L1 ; A=0, 则跳转L1去执行 ; A不为0, 则不跳转, 继续执行 DEC A ; A减1 L1: …… * * 2)比较转移指令(4条) CJNE (目的字节), (源字节),rel * * 比较转移指令有4条: CJNE A, #data8,rel CJNE A, addr8,rel CJNE @Ri, #data8, rel CJNE Rn, #data8, rel 该指令比较前面两个操作数的大小,如果它们的值不相等则转移,相等则继续执行。 三字节指令,PC当前值(PC+3 → PC)与指令第三字节带符号的偏移量相加即得到转移地址。 对进位位CY有影响: 如果目的字节的无符号整数值小于源字节的无符号整数值,则置位进位标志,否则清“0”进位位,指令不影响任何一个操作数。 机器码:B8~BF (一般用符号地址) 2

文档评论(0)

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

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

1亿VIP精品文档

相关文档