堆栈是一块存储区域,具体的说,它是用于中断服务程序和调用子程序时保护现场的。“现场”即累加器A,B,PSW中的标志位,工作寄存器中的内容。当一个程序中有子程序,如有LCALL指令时,如果子程序中会影响主程序中如上面所说的寄存器中内容时,通常在子程序开头用PUSH指令将寄存器中的内容“入栈“,即把内容存放到堆栈中;在子程序的末尾用POP指令将原来存放在堆栈中的内容恢复到寄存器中,叫做出栈。这样,主程序中所用到的那些寄存器内容恢复了,主程序继续执行。堆栈起到了保护现场的作用。是否需要保护现场,需要根据具体程序考虑。