Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios
Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da dados: Move dados entre registradores ou posição de memória e registradores; 2. Grupo Aritmético: Adição, subtração, Incrementos, decremento; 3. Grupo Lógico: AND, OR, XOR, Comparação, Rotação, Complemento; 4. Grupo de Desvio: Condicionais, Incondicionais, Subrotinas; 5. Grupo de Controle, Pilha, Entrada e Saída.
7.1 - Instruções de Desvios São instruções que permitem alterar a seqüência de execução de um programa. São a chave para a flexibilidade e a versatilidade de programação dos computadores. Incondicionais Condicionais (sob certas condições de teste) O computador é uma máquina seqüencial: Executa sequencialmente os códigos de máquinas armazenados em memórias, uma após outra. Instruções de desvios, informam ao microprocessador que a seqüência de execução das instruções é desviada (alterada) para uma nova posição. O microprocessador continua executando as instruções sequencialmente a partir dessa nova posição de memória.
7.2 - Instruções de Desvios As instruções de desvios são classificadas em: Instruções de jump; Instruções de Chamada (Call) e Retorno (Return); Instruções de reinício (Restart). As instruções Call e Return estão relacionadas com subrotinas. As instruções Restart estão relacionadas com técnicas de interrupções. Instruções de Jump START: IN 21H OUT 22H JMP START ; Lê chaves de entradas no porto 21H ; Aciona dispositivos no porto 22H ; Retorna para o início para ler as chaves novamente.
7.3 - Instruções de Desvios As instruções de Jump são instruçoes de 3 bytes: Um byte para o Opcode seguido de dois bytes de endereçamento de memória. O segundo byte é o endereço baixo e o terceiro é o endereço alto. Nenhum Flag é afetado As instruções de desvios incondicionais simplesmente alteram o fluxo do programa alterando o valor do PC (Contador de Programa). As instruções de desvio condicionais examinam o estado (status) de alguns Flags para verificar se o desvio deve ser executado. Zero Sinal Paridade Carry Duas instruções de Jump são associados a cada Flag (Desvio por flag setado e Desvio por flag zerado).
7.4 - Instruções de Desvios
7.5 - Código de Operação das Instruções de Desvios As instruções de Desvios Condicionais gastam diferentes números de Estados T para serem executadas, dependendo da condição testada ser verdadeira ou falsa. A instrução JC gasta 10 Estados T se a condição for verdadeira (CY=1) e gasta 7 Estados T se a condição for falsa (CY=0).
7.6 - Exemplo de Instruções de Desvios
7.7 - Exemplo de Instruções de Desvios
7.8 - Exemplo de Instruções de Desvios
7.9 - Exemplo de Instruções de Desvios
7.10 - Exemplo de Instruções de Desvios
7.11 - Exemplo de Instruções de Desvios
7.12 - Exemplo de Programa com Instruções de Desvios Programa que faz a multiplicação de 4 por 3.
7.13 - Exemplo de Programa com Instruções de Desvios Programa que faz a multiplicação de 4 por 3.
7.14 - Exemplo de Programa com Instruções de Desvios Programa que faz a multiplicação de 4 por 3.
7.15 - Fluxograma
7.16 - Elaborar o fluxograma de um programa que lê dois números via teclado, subtrai o segundo do primeiro e calcula a raiz quadrado do resultado. Se a subtração gera um número negativo o resultado deve ser zero.
7.17 - Estrutura de um programa em linguagem Assembly
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.18 Exercício Elabore um programa que faça a transferência do bloco de memória da posição 2040H até 2060H para o endereço a partir da posição 2070H.
7.19 - Escreva um programa para carregar o acumulador com o valor 64H e verificar se o byte contido na endereço de memória 2050H é igual ao conteúdo do acumulador. Se os valores forem iguais, incremente o acumulador e armazene o seu valor no endereço 2070H. Se os valores forem diferentes, decremente o conteúdo do endereço 2050H e armazene o valor do acumulador acrescido de 1 no endereço 2080H.
7.19 - Exercicio
7.20 - Um conjunto de bytes é armazenado a partir do endereço 2050H. O final desse grupo de bytes é identificado pelo byte FFH. Escreva um programa para somar todos os bytes e armazenar o resultado no endereço de memória 2080H (byte mais significatico) e 2081H (byte menos significativo).
7.20
Exercício 4. 7.21 - Elabore um programa para multiplicar dois números inteiros binários de 8 bits, armazenados nas posições 2080H e 2081H. O resultado deve ser armazenado a partir da posição 2090H.
Exercício 4. Elabore um programa para multiplicar dois números inteiros binários de 8 bits, armazenados nas posições 2080H e 2081H. O resultado deve ser armazenado a partir da posição 2090H.
7.15 - Exemplo de Programa com Instruções de Desvios Armazene os números 9BH e A7H nos registradores D e E. Adicione o conteúdo desses dois registradores. Se a soma for maior que FFH, armazene 01H no endereço 2070H, caso contrário armazena a soma no mesmo endereço.
7.15 - Exemplo de Programa com Instruções de Desvios Armazene os números 9BH e A7H nos registradores D e E. Adicione o conteúdo desses dois registradores. Se a soma for maior que FFH, armazene 01H no endereço 2070H, caso contrário armazena a soma no mesmo endereço. 1. Carregar os números no acumuladores; 2. Adicionar os números; 3. Verificar a soma (soma > FFH): 4. Se SIM armazene 01 e se não armazene a soma. 5. Fim
7.15 - Exemplo de Programa com Instruções de Desvios Armazene os números 9BH e A7H nos registradores D e E respectivamente. Adicione esses números. Se a soma for maior que FFH, armazene 01H no endereço 2070H, senão armazena a soma no mesmo endereço. Carregar os números no acumuladores; 1. Adicionar os números; 2. Verificar a soma (soma > FFH): 4. Se SIM carregue 01 no Acumulador; 5. Armazene o conteúdo do Acumulador; 6. Fim. Existe Carry? Se a resposta é não então altere o fluxo do programa, o que equivale utilizar a instrução JNC.
Exercício
Exercício
Exercício
Exercício