单片机中子程序和中断服务程序有何异同?为什么子程序返回指令RET和中断返回指令RETI不能相互替代?

240 2024-03-03 11:35

一、单片机中子程序和中断服务程序有何异同?为什么子程序返回指令RET和中断返回指令RETI不能相互替代?

子程序是一段程序代码,是独立的一个执行部分,你主程序调用就执行,不调用就不执行;而中断服务程序也是是一段程序代码,是独立的一个执行部分;但是只在你主程序开了中断,并且有中断条件(不如中断口接收到低电平,定时时间到了)才会去执行,并且中断服务程序会将你主程序运行时的PC指针寄存器,A累加器就信息都会入栈保护;退出中断后又会出栈进行还原;而子程序则不会;

二、在单片机中,RET和RETI分别是什么返回指令?

  RETI 是中断返回指令;   RET 是子程序返回指令;   RETI比RET多一步清除中断优先级状态位,让同级别的中断有机会得到响应。   中断指令“RETI”做为中断跳出指令除了将堆栈中保存着的地址取出,送回PC;使程序从主程序的中断处继续往下执行的作用外,还有将“优先级生效”触发器清零的功能。

三、8086汇编语言子程序调用指令是?

调用指令是call,就是为调用设立的

四、在ARM汇编程序如何实现子程序的返回?

子程序进入时,返回地址保存在LR寄存器中,返回有两种做法:

将LR直接赋给PC:MOV PC, LR

直接跳转:BX LR

五、中断服务程序的最后一条指令是RET或RETI对吗?

RETI是中断返回指令 ,否则,程序将发回不去中断口处,也有可能跑飞,或者运行到不该执行的地方;如果没这个的话,那么程序跳到中断服务子程序执行完后,就回不去原来中断的地方。就好比你写着写着作业(假设作业是必须完成的),然后电话来你,你去接电话的过程就是中断执行的过程,接完电话你就得回到你接电话前的那个地方继续写作业。

六、每个汇编程序都要有end指令吗?

END 是伪指令, 不会对CPU有什么动作,一般放在程序行的最后; 是为了编译程序而使用, 当编译时,碰到了end,则编译会到此结束。

七、调用子程序是用b还是bl指令为什么请写出返回子程序的指令?

在微机原理中 子程序调用指令CALL的编号为FNC01。操作数为P0~P127,占用3个程序步。 子程序返回指令SRET的编号为FNC02。无操作数,占用1个程序步。

八、指令,指令系统,程序,机器语言,汇编语言之间有什么关系?

指令,是CPU硬件设计时确定的、能够完成特定操作的二进制格式的代码。

指令系统,是某类CPU所能执行的所有指令的总和。程序,是完成特定任务的多条指令构成的指令序列。机器语言,是一种编程语言,它直接用二进制指令格式编写或构造程序。汇编语言,是一种编程语言,它将机器指令用易于理解和记忆的单词或单词缩写符号来描述,用它写出的程序需要翻译成机器语言程序后才能运行,不过翻译非常非常简单。

九、简述汇编语言源程序,经汇编连接后产生的程序在执行后正常返回DOS的两种方法?

MOV AH, 4C00H INT 21H 是调用BIOS的中断服务,返回给DOS 也可以用DOS 的 CD 命令直接去干别的事情去,就算是退出了

十、请问大家,汇编语言中,子程序调用指令和跳转指令有什么区别?谢谢?

继续往下执行 举个例子: jmp loop mov a,r2 . loop:mov a,43h . mov r0,#40h 上面跳转到loop后按照指令的顺序,继续往下执行就行了(就是mov r0,#40h),而不是mov a,r2; 如果是程序调用 就是回到你调用的地方 举个例子: call loop mov a, r2 . loop:mov a,34h . ret mov r0,#40h 上面的ret就是回到调用的那(call loop ),执行它的下条语句(mov a,r2),而不是mov r0,#40h 不知道你的水平,我尽量详细的解说,希望你能看懂,也许有点罗嗦…………

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片