Questão FC405948
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 principa
Questões sem classificação de assunto (TI - Engenharia de Software)
FGV · 2024
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,
- RET e ACALL.
- RETI e LCALL.
- SWAP e SJMP.
- POP e PUSH.
- DEC SP e INC SP.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
POP: instrução que retira um byte do topo da pilha e o coloca em um destino (geralmente um endereço direto da RAM ou registrador). No 8051 a operação copia o conteúdo apontado por SP para o operando de destino e, em seguida, decrementa o ponteiro de pilha. Em forma sucinta: \( \text{DEST} \leftarrow [\text{SP}];\ \text{SP} \leftarrow \text{SP}-1\).
PUSH: instrução que armazena um byte vindo de um operando (registrador/endereço direto) na pilha. O 8051 primeiro incrementa o SP e depois grava o dado no novo endereço apontado por SP. Em forma sucinta: \( \text{SP} \leftarrow \text{SP}+1;\ [\text{SP}] \leftarrow \text{SOURCE}\).
Essas operações implementam a política LIFO e são usadas para salvar/restaurar valores ao chamar sub-rotinas.
Conteúdo do catálogo FC Concursos · Atualizado em