6.堆栈操作指令 McS-51内部RAM中可以设定一个后进先出(L|F0 Last in first0ut)的区域称作堆栈 堆栈指针$P指出堆栈的栈顶位置。 (1)进栈指令 PUSH direct 先将栈指针SP加1,然后把 di rect中的内容送到栈指 针$P指示的内部RAM单元中 例如:当(SP)=60H,(A)=30H,(B)=70H时,执 行下列指令 PUSH ACC (SP)+1=61H→SP,(A)→61H PUSH B
6.堆栈操作指令 MCS-51内部RAM中可以设定一个后进先出(LIFOLast In First Out)的区域称作堆栈. 堆栈指针SP指出堆栈的栈顶位置。 (1)进栈指令 PUSH direct 先将栈指针SP加1,然后把direct中的内容送到栈指 针SP指示的内部RAM单元中。 例如: 当(SP)=60H,(A)=30H,(B)=70H时,执 行下列指令 PUSH ACC ; (SP)+1=61H→SP,(A)→61H PUSH B ;
(sP)+1=62H→SP,(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H (2)出栈指令 PoP direct SP指示的栈顶(内部RAM单元)内容送入 direct字节单 元中,栈指针SP减1 例如:当(SP)=62H,(62H=70H,(61H)=30H,执行 下列指令: POP DPH;((SP))→DPH,(SP)-1→SP POP DPL;((SP))→DPL,(SP)-1→SP 结果:(DPTR)=7030H,(SP)=60H
(SP)+1=62H→SP,(B)→62H 结果:(61H)=30H,(62H)=70H,(SP)=62H (2)出栈指令 POP direct SP指示的栈顶(内部RAM单元)内容送入direct字节单 元中,栈指针SP减1. 例如: 当 (SP)=62H,(62H)=70H,(61H)=30H,执行 下列指令: POP DPH ;((SP))→DPH,(SP)-1→SP POP DPL ;((SP))→DPL,(SP)-1→SP 结果:(DPTR)=7030H,(SP)=60H