Prévia do material em texto
Arquitetura e Organização de Microprocessadores II Turma: Engenharia de Computação Aula 8 - Procedimentos com MACRO 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 • Apresentar o conceito de modularização de código em Assembly utilizando MACROS, mostrando que: • é possível reutilizar código • o assembler expande o código em tempo de montagem • não há uso da pilha para controle de fluxo • a execução é sequencial e previsível • Esta abordagem é mais simples, mais segura e mais compatível com o 8086 Emulator Web Conceitos • Diferença entre macro e procedure • Expansão de código em tempo de montagem • Reutilização de trechos de código • Organização e legibilidade • Limitações práticas do compilador 8086 Web Procedure × Macro (explicação para o aluno) Procedure Macro Usa CALL / RET Não usa desvio Depende da pilha Não usa pilha Executada em tempo de execução Expandida em tempo de montagem Mais próxima de linguagens de alto nível Mais simples e direta Restrições maiores no 8086 Web Muito mais robusta no emulador Nesta aula, usaremos apenas macros. Estudo de caso • Problema: Utilizar uma macro para encontrar o maior valor de um vetor de bytes. O resultado deve ficar em AL e depois ser armazenado em memória. Estudo de caso ; -------- dados -------- VETOR: DB 4 DB 9 DB 2 DB 17 TAM: DB 4 MAIOR: DB 0 ; -------- macro -------- ; apenas carrega o valor atual do vetor MACRO LOAD_VALUE (_) -> MOV BL, byte [SI] AL, atualiza AL CMP AL, BL JGE NEXT1 MOV AL, BL NEXT1: INC SI DEC CL JNZ LOOP1 MOV DI, OFFSET MAIOR MOV byte [DI], AL HLT Exercício para entrega • Criar uma macro que percorra um vetor de bytes e: • calcule a soma dos elementos • retorne o valor em AL • utilize SI como ponteiro e CL como contador • O programa principal deve: • inicializar os registradores • chamar a macro • armazenar o resultado em 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: Conceitos Slide 4: Procedure × Macro (explicação para o aluno) Slide 5: Estudo de caso Slide 6: Estudo de caso Slide 7: Exercício para entrega Slide 8: Estrutura sugerida do relatório (1 a 2 páginas)