表5.2-2 宏程序的调用指令一览表自由调用和特定调用用户宏程序调用有自由调用和特定调用两种方式。图5.2-2 用户宏程序的特定调用特定调用的指令编程格式如下:l:重复调用次数;变量赋值的方法见后述。一般情况下,宏程序执行完成后,程序将返回到调用程序段,然后继续执行下一程序段。表5.2-4 自变量指定Ⅱ的程序字与局部变量对应关系表混合赋值宏程序调用指令也可采用自变量指定Ⅰ、自变量指定Ⅱ混合赋值的方式,对局部变量#1~#33进行赋值。......
2023-06-25
子程序调用与返回指令共有4条。
1.子程序调用指令
子程序调用指令共有两条:
ACALL指令是2字节指令,执行该指令时(PC)加2,获得下一条指令的地址,并把这16位地址压入堆栈,栈指针加2,然后把指令中地址addr11(即A10~A0)的值送入PC的低11位中,高5位不变,获得子程序的起始地址。ACALL指令执行时,被调用的子程序的首地址必须设在包含当前指令(即调用指令的下一条指令)的第1个字节在内的2KB范围内的ROM中,同AJMP一样,建议尽量不采用。
LCALL指令执行时,被调用的子程序的首地址可以设在64KB范围内的ROM空间的任何位置。
调用指令与无条件转移的区别在于,调用指令通过自动方式的堆栈操作对断点进行了保护,待子程序返回时可以调用子程序指令的下一条指令处。(www.chuimin.cn)
2.返回指令
返回指令共有两条:
子程序执行完后,程序应返回到原调用指令的下一指令处继续执行。因此,在子程序的结尾必须设置返回指令。返回指令有两条,即子程序返回指令RET和中断服务子程序返回指令RETI。
RET指令的功能是从堆栈中弹出由调用指令压入堆栈保护的断点地址,并送入程序计数器(PC),从而结束子程序的执行,程序返回到断点处继续执行。
RETI指令是专用于中断服务程序返回的指令,除正确返回中断断点处执行主程序以外,并有清除内部相应的中断状态寄存器(以保证正确的中断逻辑)的功能。
有关单片机基础及应用的文章
表5.2-2 宏程序的调用指令一览表自由调用和特定调用用户宏程序调用有自由调用和特定调用两种方式。图5.2-2 用户宏程序的特定调用特定调用的指令编程格式如下:l:重复调用次数;变量赋值的方法见后述。一般情况下,宏程序执行完成后,程序将返回到调用程序段,然后继续执行下一程序段。表5.2-4 自变量指定Ⅱ的程序字与局部变量对应关系表混合赋值宏程序调用指令也可采用自变量指定Ⅰ、自变量指定Ⅱ混合赋值的方式,对局部变量#1~#33进行赋值。......
2023-06-25
子程序调用可通过辅助机能M98代码进行,在M98指令中,子程序号由地址P规定。如“N15 M98 P30100;”为调用子程序O0100三次,而“N15 M98 P3100;”则表示调用子程序O3100一次。......
2023-06-25
相较于Fortran语言,C++语言的一大优势是含有丰富的外部库,可以满足各种计算需求,能大大提高开发子程序的效率。第1章已经简单介绍了使用外部库的好处,并通过一个简单的例子说明了使用外部库可以提高代码的可读性。本节以数值计算库armadillo为例来介绍如何在C++语言中调用外部库。如果没有进行这一步骤,则在运行中会弹出报错消息框并退出,而且弹出的是BLAS库的消息框。不过,在armadillo库中使用一维数组对矩阵进行初始化时是列优先的。......
2023-11-03
ATPCS规定了一些子程序间调用的基本规则,这些规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则。下面详细介绍子程序间调用的基本规则。寄存器SP在进入子程序时的值和退出子程序时的值必须相等。......
2023-11-19
子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间。图1-22 FOR指令可以在主程序、其他子程序或中断程序中调用子程序,调用某个子程序时将执行该子程序的全部指令,直至子程序结束,然后返回调用它的程序中该子程序调用指令的下一条指令之处。综上所述,进入子程序后,返回时有两种指令,一是有条件返回指令CRET,一是无条件返回指令RET。......
2023-06-26
指令有右移位指令、左移位指令、循环右移位指令、循环左移位指令。循环移位指令类别见表1-12。SHRB指令如图1-15所示,移位寄存器以功能框的形式编程,指令名称为SHRB。在语句表中,移位寄存器的指令格式为SHRB DATA,S_BIT,N。例如,移位寄存器指令的应用如图1-16所示。图1-16 移位寄存器指令应用从图1-16中可以看出,S_BIT=V10.0,N=4>0,最高位为V10.3。......
2023-06-26
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2023-11-17
相关推荐