- 1、本文档共82页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[幼儿教育]MCS-51指令系统
六、程序转移及子程序调用与返回指令 该类指令主要包括以下四种类型: ①长转移指令 ②绝对转移指令 ③相对转移指令 ④变址转移指令 ①累加器A内容判0转移指令 ②比较条件转移指令 ③减1条件转移指令 ①绝对调用指令 ②长调用指令 ③返回指令 无条件转移指令 条件转移指令 子程序调用与返回指令 空操作指令 1、无条件转移指令 ①长转移指令(三字节指令) 指令格式:LJMP addr16; (PC)←(PC)+3 (PC) ← addr16 指令功能:将16位目的地址送程序计数器PC。该指令也称16位地址的无条件转移指令。 例:若标号MAIN地址为2000H,标号MAI地址为3000H,则执行以下指令后PC值为多少? MAIN:LJMP MAI; (PC)=3000H 说明:无论长转移指令存放在程序存储器地址空间的什么位置,运行结果都会使程序跳转到addr16所代表的地址上去,并且addr16所代表的地址可以在64K程序存储器地址空间的任何位置。 ②绝对转移指令(双字节指令) 指令格式:AJMP addr11; (PC)←(PC)+2 (PC10)~(PC0) ← addr11 指令功能:将11位目的地址送程序计数器PC的低11位。该指令也称短转移指令,是11位地址的无条件转移指令。 说明:由于addr11是一个11位二进制地址, 则地址范围为:000 0000 0000B~111 1111 1111B, 即寻址范围是:211=2KB 而addr16是一个16位二进制地址, 则地址范围为:0000 0000 0000 0000B~1111 1111 1111 1111B, 即寻址范围是:216=64KB 指令执行过程: ①PC内容加2; ②PC内容加2后的高5位地址与addr11提供的低11位地址合并,构成目标转移地址。 例:试判断如下指令执行后,程序计数器PC的值。 2070H:AJMP 16AH; 解:(PC)初=2070H PC内容加2,则:(PC)=2072H PC高5位为:0010 0B,addr11的11位为:001 0110 1010B 合并后新的PC值为:0010 0001 0110 1010B=216AH 则:程序将转到程序存储器地址为216AH处执行。 例:设(KWR)=3100H,addr11=101 1010 0101B,问执行如下指令KWR:AJMP addr11;后新的PC值。 解:(PC)初=3100H PC内容加2,则:(PC)=3102H PC高5位为:0011 0B,addr11的11位为:101 1010 0101B 合并后新的PC值为:0011 0101 1010 0101B=35A5H ③相对转移指令(双字节指令) 指令格式:SJMP rel; (PC)←(PC)+2 (PC) ← (PC)+rel 指令功能:rel作为相对转移指令中的偏移量,与PC中内容相加作为转移目的地址。其中:rel为8位带符号补码数(即转移的为rel的原码)。 例:试计算如下指令执行后的PC值。 ① 835AH:SJMP 35H;② 835AH:SJMP E7H; ①解 :(PC)初=835AH 转移目的地址=835AH+02H+35H=8391H 则:转移目的地址=(PC)+02H+rel 说明:当rel为正数时,向后转移;当rel为负数时,向前转移。 ②解 :(PC)初=835AH 转移目的地址=835AH+02H-19H=8343H 此外:在汇编语言程序中,为等待中断或程序结束,常有使程序“原地踏步”的需要,对此可使用指令: HERE:SJMP HERE 或 SJMP $ ④变址转移指令(单字节指令) 指令格式:JMP @A+DPTR; (PC)←(A)+(DPTR) 指令功能:累加器A中的8位无符号数与数据指针DPTR中的16位数相加,结果作为转移地址送程序计数器PC,该条指令也称散转指令,即可根据A中不同的内容实现多分支转移。 2、条件转移指令 ①累加器A内容判零转移指令(双字节指令) JZ rel; JNZ rel; 若(A)=00H,转移,且(PC) ←(PC)+2+rel 若(A)≠00H,程序顺序执行,(PC) ←(PC)+2 若(A
文档评论(0)