Logo Passei Direto
Buscar

Aula 9 - Aula Prática 4

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Arquitetura e Organização de Microprocessadores II
Turma: Engenharia de Computação
Aula 9 - Manipulação explícita da pilha (PUSH, POP e BP)
Prof. Me. Eduardo Martins
esmoliveira@uniara.edu.br
1
Contexto e Objetivos da Aula
• Objetivo é 
ensinar os alunos a utilizar o compilador/emulador do processa
dor Intel 8086 disponível online no endereço:
8086 Emulator
• Compreender a pilha como estrutura de dados, sua organização 
LIFO e sua aplicação para:
• Armazenar valores temporários
• Preservar registradores
• Passar parâmetros para procedimentos
Como o 8086 manipula a pilha
• No 8086 (real e no emulador):
• A pilha: 
• cresce para baixo (endereços decrescentes)
• armazena sempre WORD (2 bytes)
• A instrução PUSH faz duas coisas, nesta ordem:
 Comando interno do PUSH AX
• SP = SP − 2
• [SS:SP] = AX
• Ou seja:
• Primeiro decrementa o SP, depois grava o dado.
Valor inicial do SP no 8086 Emulator Web
• No 8086 Emulator Web:
• SP começa em:
• SP = 0000h
• Isso não é padrão de PC real, mas é uma decisão do emulador
para simplificar.
Primeira execução de PUSH AX
• Suponha:
• SP = 0000
• AX = 0003
• Agora execute:
• PUSH AX
• Passo 1 — decremento do SP
• SP = 0000 − 2 = FFFE
• Por quê?
• Registradores são de 16 bits
• A subtração é módulo 65536
• 0000 − 0002 = FFFE
• Passo 2 — escrita na pilha
• [SS:FFFE] ← AX
Resultado observado no emulador:
• SP = FFFE
• AX armazenado no topo da pilha
POP AX
• No 8086, a instrução POP AX executa duas ações, nesta ordem:
• AX = [SS:SP]
• SP = SP + 2
 Observe que isso é o inverso do PUSH
• Comparação direta com PUSH
 PUSH diminui SP
 POP aumenta SP
PUSH AX POP AX 
SP = SP - 2 AX = [SP] 
[SP] = AX SP = SP + 2 
 
Conceitos
• PUSH e POP
• Registrador SP
• Uso de BP para acesso a parâmetros
• Pilha como mecanismo de comunicação entre rotinas
Estudo de caso 
• Problema: Criar um procedimento que receba, via pilha, o 
endereço de um vetor e seu tamanho.
O procedimento deve calcular a soma dos elementos e retornar o 
valor em AX.
Avaliação:
• Parâmetros passados via pilha
• Uso correto de BP
• Preservação/restauração de registradores
Estudo de caso 
; -------- dados --------
VETOR:
DB 1
DB 2
DB 3
DB 4
TAM:
DB 4
SOMA:
DB 0
; -------- código --------
start:
MOV SI, OFFSET VETOR
MOV DI, OFFSET TAM
MOV CL, byte [DI]
EMPILHA:
MOV AL, byte [SI]
PUSH AX
INC SI
DEC CL
JNZ EMPILHA
MOV DI, OFFSET TAM
MOV CL, byte [DI]
MOV AL, 0 ; acumulador da soma
DESEMPILHA:
POP BX ; valor desempilhado vai para BL
ADD AL, BL ; soma acumulada
DEC CL
JNZ DESEMPILHA
MOV DI, OFFSET SOMA
MOV byte [DI], AL
HLT
Exercício para entrega
• Criar um programa em Assembly 8086, compatível com o 8086 
Emulator Web, que execute os seguintes passos:
• Percorra um vetor de bytes armazenado na memória.
• Empilhe apenas os valores pares do vetor.
• Após percorrer todo o vetor: 
• desempilhe os valores empilhados
• calcule a soma dos valores pares
• Armazene o resultado final da soma em uma variável na memória.
Estrutura sugerida do relatório (1 a 2 páginas)
1️⃣ Identificação
2️⃣ Objetivo do exercício
• O que o programa faz?
3️⃣ Descrição da solução adotada
• Explicação em alto nível, sem repetir o enunciado.
• O aluno deve mencionar, por exemplo:
• como o vetor é percorrido
• como o laço é controlado
• onde o resultado é armazenado
4️⃣ Uso dos registradores e da memória
• Tabela simples ou lista explicativa
5️⃣ Código-fonte
• Inserir o código completo em Assembly, exatamente o que foi testado no 8086 Emulator Web
• código identado
• comentários permitidos (;)
• sem prints de tela
• apenas o código-texto
6️⃣ Resultado obtido
• Breve descrição do estado final da memória.
	Slide 1: Arquitetura e Organização de Microprocessadores II Turma: Engenharia de Computação
	Slide 2: Contexto e Objetivos da Aula 
	Slide 3: Como o 8086 manipula a pilha
	Slide 4: Valor inicial do SP no 8086 Emulator Web
	Slide 5: Primeira execução de PUSH AX
	Slide 6: POP AX
	Slide 7: Conceitos
	Slide 8: Estudo de caso 
	Slide 9: Estudo de caso 
	Slide 10: Exercício para entrega
	Slide 11: Estrutura sugerida do relatório (1 a 2 páginas)

Mais conteúdos dessa disciplina