项目22-子程序和局部变量表(2011-7-16).docVIP

  • 26
  • 0
  • 约2.02千字
  • 约 7页
  • 2016-09-30 发布于重庆
  • 举报
项目22-子程序和局部变量表(2011-7-16)

项目22 子程序指令和局部表变量表 1.子程序调用指令(CALL) 子程序调用指令(CALL)将程序控制权交给子程序SBR_N。调用子程序时可以带参数也可以不带参数。子程序执行完成后,控制权返回到调用子程序的指令的下一条指令。子程序条件返回指令(CRET)根据它前面的逻辑决定是否终止子程序。要添加一个子程序可以在命令菜单中选择:Edit Insert Subroutine。 在主程序中,可以嵌套调用子程序(在子程序中调用子程序),最多嵌套8层。在中断服务程序中,不能嵌套调用子程序。在被中断服务程序调用的子程序中不能再出现子程序调用。不禁止递归调用(子程序调用自己),但是当使用带子程序的递归调用时应慎重。 图1:子程序指令的有效操作数 1 必须偏移1个或1个以上的单位 2 必须偏移30个或30个以上的单位 提示:STEP 7--Micro/WIN为每个子程序自动加入返回指令。 当有一个子程序被调用时,系统会保存当前的逻辑堆栈,置栈顶值为1,堆栈的其他值为零,把控制交给被调用的子程序。当子程序完成之后,恢复逻辑堆栈,把控制权交还给调用程序。因为累加器可在主程序和子程序之间自由传递,所以在子程序调用时,累加器的值既不保存也不恢复。 当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。 2.带参数调用子程序 子程序可以包含要传递的参数

文档评论(0)

1亿VIP精品文档

相关文档