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

第3章89C51的指令系统新.ppt

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

1.主程序多次调用子程序 主程序转子程序以及从子程序返回的过程,如图所示。 当主程序执行到A处,执行调用子程序SUB时,把下一条指令地址(PC值)保留在堆栈中,子程序SUB起始地址送PC,CPU转向执行子程序SUB,碰到SUB的返回指令,把A处下一条指令地址从堆栈中取出并送回PC,于是CPU回到主程序继续执行。当执行到B处又碰到调用SUB的指令,再一次重复上述过程。所以,子程序SUB能被主程序多次调用。 图 主程序二次调用子程序示意图 返回 2.子程序嵌套 在一个程序中,往往在子程序中还会调用别的子程序,这称为子程序嵌套。二级子程序嵌套如图所示。每次调用子程序时必须将下条指令地址保存起来,返回时按后进先出原则依次取出旧PC值。堆栈就是按后进先出的规律存取数据的,调用指令和返回指令具有自动进栈保存和出栈恢复PC的功能。 调用和返回构成子程序调用的完整过程,为了实现这一过程,MCS一51单片机有调用子程序指令,以及从子程序返回主程序的指令。 图3—14 二级子程序嵌套示意图 返回 8.调用子程序指令 (1)短调用指令 ACALL addrll 与AJMP指令相类似,是为了与MCS-48中的CALL指令兼容而设的。 功能:这条指令无条件调用首址由addrll所指出的子程序。执行时把这16位地址压进堆栈(先PCL进栈,后PCH进栈),堆栈指针SP加2。所调用的子程序的起始地址必须在与ACALL后面指令的第一个字节在同一个2K字节区域的程序存储器中。 例 若(SP)=60H,标号MA值为0123H,子程序SUB位于0345H,说明执行指令“MA:ACALL SUB”的结果。 解 结果为(SP)=62H,内部RAM中堆栈区内(61H)=25H,(62H)=01H,(PC)=0345H。 分析:主程序进行到0123H,调用子程序,执行完此指令后,PC当前值为0123H+2H=0125H,将此断点保存在堆栈中。SP当前值为SP+1=61H,保存断点地址低8位(61H)=25H,SP+1=62H,保存地址高8位,(62H)=01H。 (2)长调用指令 LCALL addr16 功能:这条指令无条件地调用位于指定地址的子程序。它先把程序计数器加3获得下条指令的地址,并把它压入堆栈(先低位字节后高位字节),并把堆栈指针SP加2。接着把指令的第二、第三字节(a15~a8 a7~a0)分别装入PC的高位和低位字节中,从该地址开始执行程序。 LCALL指令可以调用64K字节范围内程序存储器中的任何一个子程序,执行后不影响任何标志。 例3—47 若(SP)=60H,标号STRT值为0100H,标号DIR值为8100H,则执行指令: “STRT:LCALL DIR”的结果。 解 结果:(SP)=62H,(61H)=03H,(62H)=01H,(PC)=8100H 9.子程序的返回指令 RET 执行本指令时: (SP)→PCH,然后(SP)-1→SP (SP)→PCL,然后(SP)-1→SP 功能:从堆栈中退出PC的高8位和低8位字节,把栈指针减2,从PC值开始继续执行程序。 10.中断返回指令 RETI 功能:与RET指令相似,两指令不同之处,是本指令清除了中断响应时,被置“1”的89C51内部中断优先级寄存器的优先级状态。 11.空操作指令 NOP 3.4.5 位操作指令 1.数据位传送指令 MOV C,bit MOV bit,C 例3-12 MOV C,06H ;(20H).6→Cy ; 06H是内部RAM 20H字节位6的位地址。 MOV P1.0,C ;Cy→P1.0 2.位变量修改指令 CLR C ;清“0”Cy CLR bit ;清“0”bit位 CPL C ;Cy求反 CPL bit ;bit位求反 SETB C ;置“1” Cy SETB bit ;置“1” bit位 例3-13 CLR C ;0→Cy CLR 27H ;0→(24H).7位 CPL 08H ;(21H).0 求反→(21H).0位 SETB P1.7 ;1→P1.7位 3.位变量逻辑与指令 ANL C,bit ;bit∧Cy→Cy ANL C,/bit; ;/bit ∧Cy→Cy 4.位变量逻辑或指令 ORL C,bit ORL C,/bit 5.条件转移类指令 JC rel ;如果进位位Cy=

文档评论(0)

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

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

1亿VIP精品文档

相关文档