返回主程序指令是什么~~单片机

如题所述


我仔细看了一下所有人的回答,有根本没看懂楼主问题答非所问的,也有回答的差不离的,我来切一下重点好了。
楼主这所有问题其实归根结底就是一个问题,堆栈和SP(堆栈指针)的问题
CALL指令执行时,就是先把当前程序指针压入堆栈并使SP加1,然后开始执行CALL指令调用的子程序,当遇到RET指令时,把前面压入堆栈的程序指针取出并SP减1(出栈),然后就回到CALL程序调用前位置了。
JMP指令并不会把程序指针压入堆栈更不会影响SP(当然自己在JMP后用PUSH指令除外)。自然CALL调用后使用JMP指令跳转,最后遇到RET指令一样能回到CALL程序调用前位置。就算你在JMP指令后使用PUSH指令,只要和POP成对出现,还是会回到调用前的位置,不成对?这堆栈不能这么用的。。飞了。。飞了。
中断其实和CALL指令时一样的道理,至于用RETI就如张庚(3楼)兄弟说的中断是要多处理一些标志位。
至于调用CALL多少次出错,这还是堆栈和SP的问题。
如我上面所写,CALL指令一次就得压栈一次,而你在RET指令前又来一次CALL指令,那么还得压一次,这样一直下去堆栈指针愈来愈大,就会占用程序所要使用的RAM地址,自然肯定会出错,一半51单片机默认SP为07H,而一般编程RAM地址20H开始就会被程序占用,一算就知道了,大概10几20次吧,如果你中间还是用堆栈那么就少点,如果你的程序占用RAM的地址靠后那么就多点,不过一般够用是肯定的了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-23
一般返回用RET ,中断返回用RETI
第2个回答  2011-05-23
ret 普通子程序
reti 中断子程序本回答被网友采纳

在单片机中,ret和reti分别是什么返回指令
ret和reti是单片机中的两种返回指令。以下是 ret指令 ret指令在单片机中是一个很重要的返回指令。当子程序执行完毕后,使用ret指令来返回到主程序中断的地方。具体来说,当CPU执行到ret指令时,会自动从堆栈中取出之前保存的程序计数器值,并跳转到该地址继续执行程序,从而实现了从子程序返回到主程序的功...

单片机汇编语言reti的用法
reti指令用于从子程序中返回主程序,并带有堆栈操作。在调用子程序时,单片机会将返回地址压入堆栈,以便从子程序返回时能准确找到继续执行的地址。因此,reti指令会弹出堆栈中的一个返回地址并执行跳转。二、reti指令的语法格式 一般情况下,reti指令的格式比较简单。它是一个单独的指令,不带有任何操作数。

单片机汇编指令中RETI和RET的区别
RETI指令,全称为“Return from Interrupt”,即从中断返回。当单片机执行到RETI指令时,它会从堆栈中弹出PC(程序计数器)和ACC(累加器)的值,然后恢复这两个寄存器的值,使得程序从中断服务程序返回到被中断的主程序执行的下一条指令。此外,RETI指令还会清除中断标志,以便单片机能够响应新的...

51单片机的汇编程序中,RET指令必须和哪个指令配对使用
RET指令是子程序的最后一条指令,即恢复断点,返回主程序。没有要求RET指令非要和哪一条指令要配对使用。无论用户是否调用子程序 即是否使用CALL指令 只要子程序存在 RET指令就存在 跟CALL指令没司马关系。呵呵 满意就选满意回答吧

中断处理完后cpu返回主程序由什么代码实现
中断处理完后cpu返回主程序由IRET指令代码实现。中断指令调用n号中断处理程序,在中断处理程序中,用中断返回指令IRET指令使CPU返回主程序断点继续执行。中断指令(INTn)和调用程序指令很相似,均转入内存中其它程序段执行,执行完后再转回。

单片机汇编语言RETI的
在单片机汇编语言中,RETI指令起着至关重要的作用,它的主要任务是确保从中断程序的执行中顺利返回到主程序。具体操作方法非常明确,即在中断服务程序的结尾部分执行RETI指令。下面是一个简单的示例:; 定时器1中断服务程序的代码段 T1INT:PUSH PSW; 保存当前工作状态,保护现场 PUSH ACC; 保存累加器的...

单片机串口接收中断后,返回主程序重新执行,该如何设定???keil环境下...
可以定义一个全局变量标志,例如flag,初值为0。一旦进入中断,就置位,flag=1。子程序里加个对flag的判断:if(flag) {flag=0;return;}\/\/标志清零,返回主程序。不过不知道你这程序是否复杂,如果子程序一层套一层的就可能比较麻烦,要加好多flag的判断。

单片机into是什么意思?
在程序执行完中断处理任务后,需要使用IRET指令返回到主程序,然后再将IF标志位清零。这样就可以正常走主程序了。单片机INTO指令的应用场景 INTO指令主要应用于单片机中断处理程序的编写中,可以根据不同中断类型编写相应的中断处理程序。在具体应用中,会根据不同的场景选择不同的中断来源和处理方式。例如,在...

从子程序sub中返回主程序 汇编语言指令是什么?
从子程序sub中返回主程序 汇编语言指令是 ret

单片机c语言如何返回主函数
中断里面不能用形参和返回值!!!具体的做法是声明一个全局变量,在中断中改变变量的值或者说状态。主程序就负责判断这个变量的状态,根据状态做出选择,如果状态比较多就用SWITCH,否则if就可以了。对于你补充的问题可以这样 在函数里,需要退出的地方写上,return;if(有推出键按下) retrun;...

相似回答