Na programação de sub-rotinas em linguagem assembly, é comum o armazenamento temporário de dados e/ou de endereços, para que sejam restaurados logo após o retorno à função principal. As pilhas (stacks) são estruturas de dados do tipo LIFO (Last In, First Out) adequadas para armazenar dados e/ou endereços quando alguma sub-rotina é chamada. Os conjuntos de instruções das arquiteturas mais comumente utilizadas possuem instruções específicas de acesso à pilha.
Na arquitetura 8051, as instruções usadas para retirar dados da pilha e para armazenar dados na pilha, colocando-os em registradores de uso geral, são, respectivamente,
- A RET e ACALL.
- B RETI e LCALL.
- C SWAP e SJMP.
- D POP e PUSH.
- E DEC SP e INC SP.