Escolar Documentos
Profissional Documentos
Cultura Documentos
Push POP
Push POP
Pergunta:
Ao fazer o primeiro push, onde
o valor será colocado?
CUIDADO:
• Como a stack após o reset está localizada na
posição 7H, que corresponde a zona dos bancos
de registos, é conveniente mudar a sua
localização caso queiramos usar os bancos.
Perigo #2:
80H
Se fizermos push’s sucessivos, 7FH
ao 16º push estaremos a escrever
no porto P0!!!!!
o geral
Us
Ou seja passamos a escrever 30H
indirectamente na SFR area 2FH
able
Exemplo:
ess
Perigo #1: ddr Inicializamos a SP
Ao ser colocado valores na pilha o Bit a
20H para
segundo banco será afectado 1FH
18H co mov SP, #70H
Ban 17H
10H de
tos
Posição apontada por SP egis 0FH
08H R
– R7]
após reset – 07H [R0 07H
00H
• Na operação de PUSH,
• O valor do stack pointer é incrementado em
uma unidade.
• O conteúdo da posição da RAM indicada como
argumento da operação é copiado para a
posição apontada pelo stack pointer.
• Nenhuma flag é afectada. (SP) (SP) + 1
((SP)) (direct)
Microprocessadores Prof. Adriano Tavares/Carlos Silva (DEI-Universidade do Minho)
Introdução ao Microcontrolador 8051
• Stack: PUSH - exemplo
Um fragmento de programa tem o registo DPTR
inicializado à 0123H e a stack pointer aponta para
a posição 09H. Explique qual é o estado da stack após
o push do registo DPTR.
Programa: SP 0BH
push DPL
push DPH 01H
23H
09H
• Na operação de POP,
• O conteúdo da posição da RAM interna
apontada pelo stack pointer é lido e o valor do
stack pointer é decrementado.
• O valor lido é carregado na posição da RAM
indicada como argumento da operação.
• Nenhuma flag é afectada. (direct) ((SP))
(SP) (SP) - 1
Microprocessadores Prof. Adriano Tavares/Carlos Silva (DEI-Universidade do Minho)
Introdução ao Microcontrolador 8051
• Stack: POP - exemplo
Analise o seguinte fragmento de
programa e explique que valores
SP 32H assumirão os registos DPH, DPL
e SP após a sua execusão.
Programa:
01H
23H pop DPH
30H 20H pop DPL
pop SP
banco
indica ao assembler qual é o banco
em cada momento
• No código uso as labels ARn, n ∈ [0 – 7], para
os registos Rn, n ∈ [0 – 7], ou ACC para
representar o acumulador, A.
Microprocessadores Prof. Adriano Tavares/Carlos Silva (DEI-Universidade do Minho)
Introdução ao Microcontrolador 8051
• Directiva ‘USING’: Exemplo
Nota:
• Antes de usar a directiva ‘using’ devo comutar de
banco através da programação do registo PSW.
Microprocessadores Prof. Adriano Tavares/Carlos Silva (DEI-Universidade do Minho)
Introdução ao Microcontrolador 8051
• Ciclo de instrução