·

Engenharia Elétrica ·

Microprocessadores

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta
Equipe Meu Guru

Prefere sua atividade resolvida por um tutor especialista?

  • Receba resolvida até o seu prazo
  • Converse com o tutor pelo chat
  • Garantia de 7 dias contra erros

Texto de pré-visualização

- Instruções de Desvios do 8085 - Microprocessadores I Professor: Alexandre César Rodrigues da Silva Universidade Estadual Paulista “Júlio de Mesquita Filho” Faculdade de Engenharia – Câmpus de Ilha Solteira Departamento de Engenharia Elétrica - 2º Semestre de 2021 - CPU - FLAGs - PC Arquitetura Interna do 8085 1 Fluxo do Programa Fluxo do Programa 2 Fluxo do Programa e Registrador de FLAGs Fluxo do Programa Registrador de FLAGs 3 Conjunto de Instruções do 8085 - ( Instruction Set ) ISA - Instruction Set Architecture As instruções do 8085 são classificadas em 5 grupos de instruções: Instruções de Transferência de dados; Instruções Aritméticas; Instruções Lógicas; Instruções de Desvios; Instruções de Controle. 4 Conjunto de Instruções do 8085 - ( Instruction Set ) As instruções do 8085 são classificadas em 5 grupos de instruções: Instruções de Transferência de dados; Instruções Aritméticas; Instruções Lógicas; Instruções de Desvios; Instruções de Controle. 5 Instruções de Desvios. JMP addr16 Trata-se de um desvio incondicional; Quando esta instrução é executada o endereço (addr16) é movido para o Contador de Programa (PC). O Processador inicia a execução da instrução armazenada no endereço addr16; Desvio Incondicional 6 Instruções de Desvios. J <condição> addr16 IF <condição> é Verdade Então addr16; Trata-se de um desvio condicional; As instruções de desvios condicionais verificam as condições das FLAGs. Se a condição da FLAG é verdadeira então o endereço addr16 é movido para o Contador de Programa (PC). O Processador inicia a execução da instrução armazenada no endereço addr16; Se a condição da FLAG for falsa a próxima instrução é executada. Desvios Condicionais 7 Instruções de Desvios. J <condição> addr16 JZ addr16 => Desvia se a Flag Z =1; JNZ addr16 => Desvia se a Flag Z =0; JC addr16 => Desvia se a Flag CY =1; JNC addr16 => Desvia se a Flag CY =0; JM addr16 => Desvia se a Flag S =1; JP addr16 => Desvia se a Flag S =0; JPE addr16 => Desvia se a Flag P =1; JPO addr16 => Desvia se a Flag P =0; Desvios Condicionais 8 Fluxograma. Fluxograma é a representação gráfica do fluxo das operações de um programa. Trata-se da representação gráfica de um algorítmo que facilita a visualização dos passos de um programas. Símbolos geralmente utilizados. 9 Fluxograma - Significado dos Símbolos. Símbolos geralmente utilizados. 10 Fluxograma. Exemplo de um fluxograma. 11 Fluxograma - Estrutura For. Exemplo de um fluxograma. 12 Fluxograma - Estrutura For. Exemplo de um fluxograma. 13 Exemplo 1: Escrever um programa em assemby para adicionar dois números de 8 bits armazenados nas localizações de memória 2040H e 2041H. O Resultado deve ser armazenado nos endereços 2042H e 2043H. 14 Exemplo 1: Escrever um programa em assemby para adicionar dois números de 8 bits armazenados nas localizações de memória 2040H e 2041H. O Resultado deve ser armazenado nos endereços 2042H e 2043H. Para executar a adição um dos operandos deve estar no Acumulador e o outro pode estar em qualquer registrador de uso geral ou em memória); A adição de dois números de 8 bits pode resultar em 8 bits ou em 9 bits; Após a adição o resultado fica armazenado no Acumulador; O Acumulador pode armazenar somente 8 bits. Se existir o vai um o processador irá setar o Carry (CY=1); 15 Exemplo 1: Algoritmo 1: 1. Ler um operando da memória para o Acumulador. Mover o operando para o registrador B; 2. Ler o outro operando da memória para o Acumulador; 3. Carregar o registrador C com o valor 0; 4. Adicionar o Acumulador com o registrador B; 5. Avalie a Flag Carry (CY). Se a Flag Cy = 1 execute o passo 6. Se Flag Cy = 0 desvie para o passo 7; 6. Incremente o registrador C; 7. Armazenar o conteúdo do Acumulador na memória; 8. Mover o Carry (CY) para o Acumulador e armazenar na memória consecutiva; 9. Fim. 16 Exemplo 1: Fluxograma para o Algoritmo 1: 17 Exemplo 1: Assemby para o Algoritmo 1: 18 Exemplo 1: Assemby para o Algoritmo 1: Simulador Abacus. 19 Exemplo 1: Algoritmo 2: 1. Carregar o endereço da memória contendo o dado no par H (HL) => ponteiro de dados; 2. Zerar o registrador C; 3. Mover o primeiro dado da memória para o Acumulador; 4. Incrementar o ponteiro de dados (Par H); 5. Adicionar o conteúdo da memória endereçada pelo par H com o Acumulador; 6. Verifique o Carry (CY). Se CY=1, vai para o passo 7. Se CY=0, vai para o passo 8 ; 7. Incremente o conteúdo do registrador C; 8. Incremente o ponteiro de dados e armazena a soma; 9. Incremente o ponteiro de dados e armazena o Carry (CY); 10. Fim. 20 Exemplo 1: Assemby para o Algoritmo 2: 21 Exemplo 2: Exercício do laboratório sem o emprego de loop: 22 Exemplo 2: Programa assemby para o Algoritmo 1: 23 Exemplo 2: Programa em assembly para o Algoritmo 2: 24 Exemplo 3: Escrever um programa em assemby para multiplicar dois números de 8 bits armazenados nas posições de memória de endereços 2040H e 2041H. O Resultado deve ser armazenado nos endereços 2042H e 2043H. 25 Exemplo 3: Escrever um programa em assemby para multiplicar dois números de 8 bits armazenados nas posições de memória de endereços 2040H e 2041H. O Resultado deve ser armazenado nos endereços 2042H e 2043H. A multiplicação é executada através de sucessivas adições. O valor inicial do somador assume o valor zero; Um dos números é utilizado como contador, para controlar a quantidade de adições a serem realizadas no somador; O outro número é adicionado no somador a quantidade de vezes definida pelo contador; O resultado do produto de dois número de 8 bits pode ser de 16 bits. Então precisa-se de um outro registrador para contar quantas vezes ocorrem Carry (CY=1); 26 Exemplo 3: Assemby para o Algoritmo: 27 Exemplo 3: Assemby para o Algoritmo: 28 Exemplo 3: Assemby para o Algoritmo: 29 Exemplo 4: Escrever um programa em assemby para somar os dados de um vetor armazenado em memória no endereço 2040H até 2040H + N. O primeiro elemento do vetor (endereço 2040H) não deve ser somado, pois informa a quantidade de elementos do vetor, ou seja, informa o valor de N. Assumir que a soma não excede 2 bytes. O valor de N (memória 2040H) é utilizado para informar a quantidade de elementos do vetor que serão adicionados; O valor inicial da soma é assumido zero; O par H (HL) é usado como ponteiro de dados; Cada elemento do vetor é adicionado ao somador. Como a soma pode gerar resultado em 2 bytes, utiliza-se um registrador para armazenar o Carry (CY); 30 Exemplo 4: Algoritmo:. 1. Carregar o endereço de memória do 1º elemento do vetor no ponteiro H (HL); 2. Copiar o conteúdo da memória endereçada pelo ponteiro H para o registrador B (Contador de elementos); 3. Zerar o Acumulador (Somador) e o Registrador C (Somador de CY); 4. Incrementar o ponteiro H; 5. Adicionar o conteúdo da memória endereçada pelo ponteiro H ao Acumulador; 6. Verificar a Flag Carry (CY). Se CY=0, vai para o passo 8. Se CY=1, vai para o passo 7; 31 Exemplo 4: Algoritmo:. 7. Incrementar o conteúdo do registrador C; 8. Decrementar o contador (Registrador B); 9. Verificar a Flag Zero (Z). Se Z=0, volte ao passo 4. Se Z=1, vai para o passo 10; 10. Armazenar o Acumulador (Byte Menos Significativo) na memória; 11. Copiar o conteúdo do registrador C (CY) para o Acumulador (Byte Mais Significativo) e armazenar na memória; 12. Fim; 32 Exemplo 4: Fluxograma: Início Carregar o endereço do ponteiro de dados em HL Usando o ponteiro H, copiar o conteúdo de elementos do vetor para o registrador B Zerar registradores A e C Incremente o ponteiro de dados (HL) Adicione o dado contido na memória apontada pelo ponteiro H ao Acumulador Verifique se CY = 0 Sim Não 1 Decremente contador (Reg. B) Verifique se Z = 0 Sim Não Armazenar Byte LS na memória (Acumulador). Mover Reg C para o Acumulador e armazenar Byte MS na memória. Fim Exemplo 4: Programa em Assembly: LXI H,2040H MOV B,M XRA A MOV C,A Soma: INX H ADD M JNC Pula INR C Pula: DCR B JNZ Soma STA 2030H MOV A,C STA 2031H HLT Exercício 1 - Busca do menor valor em um vetor: Escrever um programa em assembly para localizar o menor valor dos elementos de um vetor de dados. O 1º elemento do vetor está armazenado na memória de endereço 2040H e o último elemento do vetor, que não deve ser considerado na busca, é identificado pelo byte FFH. 35 Exercício 2 - Ordenar os valores em um vetor: Escrever um programa em assembly para ordenar os elementos de um vetor em ordem crescente. O vetor está armazenado em memória iniciando no endereço 2040H. O 1ª elemento do vetor (Memória de endereço 2040H) informa a quantidade de elementos contidos no vetor. 36