全站数据
8 4 2 0 5 8 1

什么是堆栈,51单片机堆栈指针SP的使用举例

消防工程师考试 | 教育先行,筑梦人生!         
问题更新日期:2024-11-11 02:34:56

问题描述

什么是堆栈,51单片机堆栈指针SP的使用举例,麻烦给回复
精选答案
最佳答案

MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。

51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现在指令操作数当中。例如:MOV SP,#80H ;初始堆栈指针,(SP)=80HLCALL XXXX;调用XXXX处的子程序,下一条指令PC值压栈,(SP)=(SP)+2NOP;子程序返回时,RET指令从堆栈中弹出PC值,所以会返回到这里,(SP)=(SP)-2PUSH ACC;累加器A的内容压栈保存,(SP)=(SP)+1POP B;堆栈内保存的累加器A的内容弹出到B寄存器中,(SP)=(SP)-1使用PUSH、POP指令使用堆栈,要注意进出栈的匹配,否则将引起不可预期的后果。另外如果把30H赋给了SP,称为设置栈底。以后:PUSHACC ,就把ACC的内容存放到31H单元;PUSHPSW ,就把PSW的内容存放到32H单元;PUSHB ,就把B的内容存放到33H单元。……弹出时,要用POP指令。利用堆栈,就不用管具体的内容存放在什么单元了,SP会自动管理。