3.2.3 堆栈寻址方式
2025年09月26日
3.2.3 堆栈寻址方式
堆栈寻址方式(Stack Addressing Mode)操作数在堆栈中,操作数物理地址由堆栈指针SP给出。C28x的软件堆栈从存储器的低地址变化到高地址,堆栈指针总是指向下一个位置。在指令中提供6位的偏移量,表明数据入栈或出栈时,栈指针增加和减小值。
堆栈寻址有3种方式:∗-SP[6bit]、∗SP++和∗--SP,其说明分别见表3-4~表3-6。
表3-4 AMODE=0时∗-SP[6bit]的语法说明
指令实例:
ADD AL,∗-SP[5] ;将(SP-5)堆栈单元的16位内容加到AL中
ADDL ACC,∗-SP[12] ;将(SP-12)堆栈单元的32位内容加到ACC中
MOVL ∗-SP[36],ACC ;将ACC的32位内容存入(SP-36)堆栈单元
表3-5 AMODE=x时∗SP++的语法说明
注:指令执行后,若是locl6,则SP=SP+1;若是loc32,则SP=SP+2。
指令实例:
MOV ∗SP++,AL ;将16位AL的内容压入堆栈,且SP=SP+1
MOVL ∗SP++,P ;将32位P寄存器的内容压入堆栈,且SP=SP+2
表3-6 AMODE=x时∗--SP的语法说明
指令实例:
ADD AL,∗--SP ;将栈顶16位内容弹出并加到AL寄存器中
MOVL ACC,∗--SP;将栈顶32位内容弹出并存入ACC寄存器中