INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO. Engenharia Electrotécnica. Microprocessadores. 2ºano - 1ºsemestre



Documentos relacionados
Instituto Superior Técnico Licenciatura em Engenharia Informática e de Computadores. Projecto de. Arquitectura de Computadores.

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações CONTADORES. Marcos Moecke

Autómatos Programáveis Programação

Introdução à Engenharia de Computação

Contadores. Contadores Assíncronos Crescentes

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

Acetatos de apoio às aulas teóricas

1. SINTAXE DA LINGUAGEM ASSEMBLY

Técnico/a de Refrigeração e Climatização

17. Espaço de I/O (entrada/saída) Portos paralelos de entrada e saída Porto paralelo de saída

Sistemas Digitais Contadores. João Paulo Carvalho

PROGRAMAÇÃO DE UM MICROPROCESSADOR

Organização de Computadores 1

1345 Arquitectura de Computadores

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) SÃO CAETANO DO SUL - SP - CEP:

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

INSTRUMENTAÇÃO E MEDIDAS

2. A influência do tamanho da palavra

Linguagem de Montagem 2. Operações e Operandos

CAPÍTULO 4 CIRCUITOS SEQUENCIAIS II: CONTADORES ASSÍNCRONOS

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Valor lógico UM (Verdade, 1): 5 Volts. Valor lógico ZERO (FALSO, 0): 0 Volts.

Sistemas Operacionais

Algoritmos DCC 119. Introdução e Conceitos Básicos

Manual técnico da Registadora SAM4S SPS-530. Versão: Nº de actualizações: 1

Invenções Implementadas por Computador (IIC) Patentes

Keypad com IR via Rede I 2 C

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

02. [Manzano, 1996] Escreva um programa em C que apresente os quadrados dos números inteiros de 15 a 200.

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

NOME: TURMA. a) Mostre que, numa representação em complemento para dois, são necessários 8 bits para representar Tset e 7 bits para representar T.

Implementadas por Computador

Computador HIPO. Inicialmente vamos apresentar as unidades fundamentais de um computador:

Gestor de ligações Manual do Utilizador

Paralelismo a Nível de Instrução

CAPÍTULO 2. Grafos e Redes

Actividade 2 Intensidade da luz

Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores Licenciatura em Engenharia Informática e de Computadores

EXPERIÊNCIA 17 USO DO TEMPORIZADOR INTERNO

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

INF 1005 Programação I lista 12

Eletrônica Digital para Instrumentação. Herman Lima Jr.

Aula 2 Sistemas de Numeração (Revisão)

Programação ao nível da máquina. Operações lógicas e aritméticas

Entradas/Saídas. Programação por espera activa Programação por interrupções

Aula 19. Conversão AD e DA Técnicas

Memórias. Considerações iniciais Tipos de memórias RAMs Estrutura das RAMs Expansão das RAMs 12/3/10. Mário Serafim Nunes Guilherme Silva Arroz

Introdução à estrutura e funcionamento de um Sistema Informático

LINGUAGEM C. Estrutura básica de um programa

Capítulo 7 Circuitos sequenciais: latches, flipflops, registradores, contadores

Circuitos Digitais 144L

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Manual do Gestor da Informação do Sistema

Departamento de Informática

ARQUITETURA DE COMPUTADORES

Interruptor KVM Cabo USB/HDMI 2-Portas

Luis Filipe Baptista ENIDH/DEM 2

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Memória cache. Prof. Francisco Adelton

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

EEC2104 Microprocessadores

Variáveis e Comandos de Atribuição

Universidade Federal de São João Del Rei - UFSJ

Marcos da Arquitetura de Computadores (1)

O Manual do ssc. Peter H. Grasch

Contadores (Aula1) Prof. Rômulo Calado Pantaleão Camara

MINISTÉRIO DA EDUCAÇÃO IFSC - Campus São José. CST em Telecomunicações ELETRÔNICA DIGITAL CONTADORES. Marcos Moecke

Gestor de Processos Núcleo do Sistema Operativo

Nível da Arquitetura do Conjunto das Instruções

Sistemas Operativos I

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

2. Sistemas de Numeração, Operações e Códigos. 2. Sistemas de Numeração, Operações e Códigos 1. Números Decimais. Objetivos.

Modos de entrada/saída

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

3 - CONJUNTO DOS NÚMEROS RACIONAIS

Manual do utilizador. Animal RFID Integrator. Universidade de Évora Escola de Ciências e Tecnologia

Material Teórico - Aplicações das Técnicas Desenvolvidas. Exercícios e Tópicos Relacionados a Combinatória. Segundo Ano do Ensino Médio

SISTEMAS DIGITAIS CONTADORES

Tutorial :: Introdução ao VHDL em ambiente Design Works

CerVANTES. Co-VAlidatioN Tool for Embedded Systems. Autor: José Cabrita. Orientadores: José Costa e Paulo Flores. INESC-ID, grupo ALGOS

Faculdade de Computação

Universidade Estadual do Ceará

Manual do Teclado de Satisfação Online WebOpinião

FT724 Terminal de incêndios

Arquitetura de Computadores. Tipos de Instruções

Circuitos Lógicos Registradores e Contadores

Circuitos Seqüenciais

INSTITUTO TECNOLÓGICO

Sessão 2 UFCD 0804 Algoritmos

ULA Sinais de Controle enviados pela UC

INTRODUÇÃO À LINGUAGEM C++

Estrutura de Dados Básica

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Certidão Permanente. Manual de Procedimentos

Flip-Flops. Slide 1. Flip-flop NOR SR cruzado. Reiniciar Configurar Reter Não usado. Flip-flop NAND SR cruzado. Reiniciar Configurar Reter Não usado

Exercícios de Revisão Java Básico

Transcrição:

INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO Engenharia Electrotécnica Microprocessadores 2ºano - 1ºsemestre Microprocessador 8085 Exercícios de Programação em Linguagem Assembly Ângelo César Web Page: http://www.ipb.pt/~aacesar E-Mail: aacesar@ipb.pt Bragança, Outubro de 2002

ÍNDICE 1. SALTOS (IN)CONDICIONAIS...ERRO! MARCADOR NÃO DEFINIDO. 2. A CONTINUACIÓN SE MUESTRA EL DIAGRAMA DE FLUJO CORRESPONDIENTE FIG.55H...ERRO! MARCADOR NÃO DEFINIDO. i

1. TRANSFERÊNCIA DE DADOS 1. Escreva um programa que carregue o Acumulador do CPU com o valor 55H. 2. Escreva um programa que transfira o conteúdo do Acumulador para uma célula de memória de endereço 2138H. 3. Escreva um programa que transfira o conteúdo da célula de memória de endereço 2138H para a unidade de saída, de endereço 00H. 4. Escreva um programa que transfira a informação estabelecida pelos switchs do porto de entrada de endereço 00H para a célula de memória de endereço 2100H. 5. Escreva um programa que transfira a informação estabelecida pelos switchs do porto de entrada de endereço 00H para os LEDs do porto de saída. 6. Escreva um programa que acenda apenas o LED mais à direita do porto de saída, de endereço 00H. 7. Escreva um programa que actualize continuamente a unidade de saída do µp8085 representada pelo conjunto dos 8 LEDs, em função do estado dos 8 switch do DIP da unidade de entrada. 8. Escreva um programa que reflicta a unidade de entrada continuamente na unidade de saída do µp8085 e saia se o valor lido for FFH. 9. Escreva um programa que detecte o endereço do porto da unidade de entrada, correspondente aos 8 switch do DIP, sendo desconhecido o seu valor. 10. Escreva um programa que detecte o endereço do porto da unidade de saída, representado pelo conjunto dos 8 LEDs, sendo desconhecido o seu valor. 11. Escreva um programa que substitua o conteúdo da posição de memória Op1 pelo seu módulo, utilizando o endereçamento indirecto. 12. Escreva um programa que coloque na posição de memória Res o maior dos conteúdos das posições de memória Op1, Op2 e Op3. Utilize o endereçamento indirecto. 13. Escreva um programa que coloque o conteúdo do registo de Flags na posição de memória 20A0H. 1

2. OPERAÇÕES ARITMÉTICAS E LÓGICAS 1. Escreva um programa que adicione o conteúdo de duas posições de memória Op1 e Op2, colocando o resultado na posição de memória Res. Utilize o modo de endereçamento directo. Faça o mesmo para o modo de endereçamento indirecto. 2. Escreva um programa que multiplique mas sem utilizar a multiplicação, os conteúdos das posições de memória Op1 e Op2 e deixe o resultado na posição de memória Res. Considere que o valor máximo que os operandos podem ter é 0FH. Utilize o endereçamento indirecto. 3. Escreva um programa que calcule a potência do conteúdo da posição de memória Base, elevada ao expoente contido na posição de memória Exp. 4. Escreva um programa que complemente os bits b0, b1, e b2 do Acumulador. 5. Escreva um programa que teste se o bit b3 do registo L está activo. 6. Escreva um programa que coloque a zero os bits b1, b2, b5 e b6 do registo B, sem alterar os outros bits. 7. Escreva um programa que active os bits b1 e b2 do Acumulador. 8. Escreva um programa que some o conteúdo da posição de memória 1040H com o conteúdo da posição de memória 1041H, colocando o resultado na posição de memória 1042H. 9. Escreva um programa que receba o dado do porto de entrada e adicione-lhe o valor 50H. Se o resultado não produzir carry deverá ser transferido para os LEDs do porto de saída; se produzir carry, o valor a escrever na saída deverá ser FFH. 10. Escreva um programa que adicione dois números compostos por vários dígitos. O número de dígitos está na célula de endereço 2020H; o primeiro número está guardado a partir do endereço 2021H e o segundo número a partir do endereço 2051H. Os números começam com o dígito de menor peso. O resultado da adição é guardada na memória a partir do endereço 2021H. 3. TABELAS DE DADOS 1. Escreva um programa que apague os dados de uma tabela, estando os seus endereços inicial e final guardados nas células de endereço 2050H e 2052H, respectivamente. 2

2. Escreva um programa que coloque o conteúdo "9A" em todas as posições de memória de endereço par, entre 2060H e 2080H. Os conteúdos das posições de endereço ímpar deverão permanecer inalterados. Utilize o modo de endereçamento indirecto. 3. Escreva um programa que analise os conteúdos das posições de memória entre os endereços 2090H e 20A5H e proceda da seguinte forma: i. Se o valor contido na posição de memória corrente for igual ou maior do que 0FH, o valor é substituído por AAH. ii. Se o valor contido na posição de memória corrente for menor do que 0FH, o valor substituído por FFH. 4. Considere uma tabela de endereço inicial Tab e dimensão Dim. Escreva um programa que conte o número de elementos iguais ao conteúdo da posição de memória Const e guarde o resultado da contagem na posição de memória Res. Utilize o endereçamento indirecto. 5. Considere uma tabela de endereço inicial Tab e dimensão Dim. Escreva um programa que some todos os conteúdos da tabela e deixe o resultado nas posições de memória Res e Res+1. 6. Considere uma tabela de endereço inicial Tab e dimensão Dim. Escreva um programa que ordene por ordem crescente os conteúdos da tabela. 7. Considere uma tabela de endereço inicial Tab e dimensão Dim. Escreva um programa que conte o número de bits a 1 existentes em todos os conteúdos da tabela e deixe o resultado nas posições de memória Res e Res+1. 8. Considere uma tabela de endereço inicial Tab e dimensão Dim. Escreva um programa que transfira para o porto de saída de endereço 00H os conteúdos desta tabela, sincronizado com o interruptor ligado ao bit b4 do porto de entrada de endereço 00H. 9. Escreva um programa que compare o conteúdo de 10 posições de memória consecutivas e coloque o maior valor no registo E. 10. Escreva um programa que multiplique duas tabelas, respeitando a condição C1 = A1 * B1. 11. Escreva um programa que analise o conteúdo de 15 posições de memória consecutivas e proceda da seguinte forma: i. Se o valor for < 05H, mantêm-no inalterado; ii. Se o valor for = 05H, substitui-o pelo valor 00H; iii. Se o valor for > 05H, subtrai-lhe duas unidades. 3

12. Escreva um programa que coloque o valor 1AH numa tabela de dados cujo endereço inicial está no endereço de memória 2050H, sendo a sua dimensão lida no endereço 2052H. 13. Escreva um programa que desloque a tabela de dados de endereços inicial e final, respectivamente, 2200H e 2350H, para o endereço inicial 2400H. Nota: neste programa é necessário utilizar dois registos apontadores. 4. ACESSO À STACK 1. Escreva um programa que contenha rotinas e que examine a stack e o stack pointer. 5. ROTINAS 1. Escreva uma rotina que multiplique os conteúdos dos registos D e E e guarde o resultado no Acumulador. 6. INTERRUPÇÕES 1. Escreva um programa que implemente uma máquina que permita atender a oito pedidos de interrupção, associando a cada pedido um dos RST disponíveis. 2. Escreva um programa que realize uma contagem no porto de saída de endereço 00H, Up ou Down ao ritmo de um clock ligado ao IRQ7. 3. Escreva um programa que preencha uma tabela de endereço inicial Tab e dimensão igual a Dim com os valores presentes no porto de entrada de endereço 00H, ao ritmo de um clock ligado ao IRQ5. 4. Escreva uma rotina de Interrupt que actue como escalonador de tarefas, ao ritmo de um clock ligado ao RST 7.5. Entende-se por escalonador de tarefas um programa que faz a gestão da execução de um conjunto de tarefas. NOTA: Considera-se a existência de apenas duas tarefas independentes. Assim, a função do escalonador será trocar a execução da tarefa 1 pela execução da tarefa 2 e vice-versa. O escalonador tem a função de guardar e restaurar o contexto das tarefas aquando da troca. A tarefa 1 deverá afixar caracteres A na consola de output e a tarefa 2 o conteúdo de um contador. 4

7. ACESSO AO TECLADO 1. Escreva um programa que preencha uma tabela em memória, sendo os valores introduzidos pelo utilizador através do teclado e que calcule os seus valores máximo e mínimo. 8. LOOP DE DELAY 1. Escreva um programa que implemente uma sequência de luzes da esquerda para a direita, sempre à mesma velocidade e continuamente, numa fila de 8 LEDs. 2. Escreva um programa que desloque o LED da direita para a esquerda, ao ritmo de uma rotina de delay, desde a posição LSB até à posição MSB. Nota: o deslocamento de um LED corresponde a ter um LED aceso sucessivamente em posições adjacentes. 3. Escreva um programa que acenda, alternadamente, os quatro LEDs mais à esquerda e os quatro LEDs mais à direita, mantendo-se durante algum tempo em cada um destes estados. 4. Escreva um programa que acenda, alternadamente, os quatro LEDs das posições ímpares (b1, b3, b5, b7) e os quatro LEDs das posições pares (b0, b2, b4, b6), mantendo-se durante algum tempo em cada um destes estados. 5. Escreva um programa que simule o deslocamento de um LED aceso da esquerda para a direita, mantendo-se durante algum tempo em cada um destes estados. 6. Escreva um programa que simule o deslocamento de um LED aceso, seguido de dois LEDs apagados, da esquerda para a direita, mantendo-se durante algum tempo em cada um destes estados. 9. DIVERSOS 7. Considere a existência de uma tabela de endereço inicial Tab, de dimensão igual a Dim e contendo elementos em BCD. Escreva um programa que adicione os seus conteúdos e deixe o resultado em Res e Res+1. 2. Escreva um programa que calcule o máximo divisor comum de um número nas seguintes condições: i. Deixe o resultado na posição de memória Res, em que o endereço é passado pela Stack. ii. Passagem de parâmetros de entrada pela Stack. NOTA: o cálculo do máximo divisor comum pode ser definida da seguinte forma: 5

Z = mdc (x, y) Se x = y Então z = x Senão Se (x > y) Então z = mdc (x-y, y) Senão z = mdc (x, y-x) 3. Escreva um programa que simule o funcionamento de um Flip-Flop tipo D. Considere as entradas D, Clock, Preset e Clear ligadas, respectivamente, aos bits b0, b1, b2 e b3 do porto de entrada de endereço 00H; as saídas Q e Q estão ligadas, respectivamente, aos bits b6 e b7 do porto de saída de endereço 00H. 4. Escreva um programa que, após a activação dum interruptor da unidade de entrada de endereço 00H, implemente uma sequência de luzes da esquerda para a direita, correspondentes à fila de 8 LEDs da unidade de saída de endereço 00H, com a seguinte ordem: (0000 0001), (0000 0010), (0000 0100),..., (1000 0000), (0000 0001),... A sequência só deve parar quando o mesmo interruptor for desactivado. 5. Escreva um programa que divida o conteúdo da posição de memória 1040H em dois valores de 4 bits e os armazene nas posições de memória 1041H e 1042H do seguinte modo: i. Coloque os 4 bits MSB da posição 1040H no lugar dos 4 bits LSB da posição 1041H; ii. Coloque os 4 bits LSB da posição 1040H no lugar dos 4 bits LSB da posição 1042H; iii. Coloque os restantes bits da posição 1041H e 1042H a zero. 6. Desenvolver um programa que faça a conversão do conteúdo do endereço address para os caracteres ASCII. O resultado deve ser armazenado a partir do endereço address + 1, iniciando pelo dígito menos significativo. 6