2.5 - Instruções Lógicas do ULA

Documentos relacionados
Aula 4 Conjunto de Instruções do Microprocessador 8085 Grupo Aritmético

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

MICROPROCESSADORES E MICROCONTROLADORES PROVA 1

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Experiência 1 -Introdução ao Módulo Didático MC-1 e Instruções de Transferência de Dados

Solução Lista de Exercícios Processadores

Eletrônica Digital I (EDL I)

Símbolos e abreviaturas utilizadas na descrição das instruções

MICROPROCESSADORES E MICROCONTROLADORES. PROVA 1 - Solução da Versão 1

MÓDULO. Conjunto de Instruções do 8086/88 Aritméticas, lógicas, deslocamento e rotação M 02

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

CONJUNTO DE INSTRUÇÕES

Capítulo 6 Aritmética Digital: Operações e Circuitos

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

Conjunto de Instruções do 8051

Disciplina: Arquitetura de Computadores

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:

Neander - características

ELE Microprocessadores I

Microprocessadores. Organização de Memória

Aula 14 Funcionamento de Processadores (Visão específica)

Evolução dos computadores

Circuitos Lógicos. Capítulo 9 Aritmérica Digital: Operações e Circuitos

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

ção de Computadores I

Processador. Processador

Instruções Assembly x Código de máquina Microprocessador Didático

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

Organização e Arquitetura de Computadores I

2. A influência do tamanho da palavra

Introdução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná

Arquitetura de Computadores. Ciclo de Busca e Execução

Circuitos Digitais. Conteúdo. Soma de Números Binários. Soma de Números Binários. Exemplos. Exemplos. Aritmética Binária

2. A influência do tamanho da palavra

SSC0112 Organização de Computadores Digitais I

Processadores

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Capítulo 3 Organização Interna de um Computador

Operações Aritméticas no sistema binário. Na área de eletrônica digital e microprocessadores é usado as operações aritméticas.

ELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

Sistemas Digitais Módulo 8 Introdução aos Circuitos Aritméticos

Capítulo 6 Aritmética Digital: Operações e Circuitos

7 Operadores e Expressões

UNIVERSIDADE PAULISTA (UNIP) Curso de Engenharia Mecatrônica Disciplina: Microprocessadores e Microcontroladores (MM) LISTA III

SSC0114 Arquitetura de Computadores

Departamento de Engenharia Elétrica. ELE Microprocessadores II. Prof. Carlos Antonio Alves Sala 59 Fone

Arquitetura e Organização de Computadores

Microcontrolador PIC 16F877

MICROPROCESSADORES E MICROCONTROLADORES Parte 1

Sistemas Processadores e Periféricos Aula 2 - Revisão

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores INTRODUÇÃO

Aritmética Binária e Complemento a Base. Introdução ao Computador 2010/1 Renan Manola

Aula 10 Microcontrolador Intel 8051 Parte 2

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Introdução à Computação

Arquitetura e Organização de Computadores

Aula 19: UCP: Construindo um Caminho de Dados (Parte III)

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Instruções. Maicon A. Sartin

ULA Sinais de Controle enviados pela UC

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Arquitetura de Um Processador I

CONJUNTO DE INSTRUÇÕES

Introdução à Computação

MICROPROCESSADORES E MICROCONTROLADORES

Arquitetura de Computadores. Conjunto de Instruções

Estrutura Básica de um Computador

ESTRUTURA E FUNCIONAMENTO DO COMPUTADOR

Prof. Adilson Gonzaga

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

Organização de Computadores

ELETRÔNICA DIGITAL I

RELOGIO MEMÓRIA USO DA NUMERAÇÃO BINÁRIA. 02. Explique a função do barramento de endereços no Modelo Barramento de Sistemas.

Microprocessadores I. Aula 6 Arquitetura do Microprocessador Pinagem e Diagrama de Temporização

Unidade III. Sistemas Numéricos e o Computador

Sistemas de Computação. Instruções de Linguagem de Máquina

Laboratório de Microprocessadores e Microcontroladores

William Stallings Organização de computadores digitais. Capítulo 14 Operação da Unidade de Controle

Sistemas Digitais Transferências entre Registradores

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 2. Cibele Lemos Freire Viginoski

Transcrição:

2.5 - Instruções Lógicas do 8085 - ULA Todas as operações lógicas e aritméticas em qualquer microprocessador são realizadas em uma unidade dedicada denominada Unidade Lógica e Aritmética (ULA). Para auxiliar nessa função, há alguns registradores conectados diretamente à ULA. No caso do 8085, esses registros são: ACUMULADOR (A ou Acc) e um REGISTRADOR TEMPORÁRIO (não disponível para uso geral via programação). A estrutura interna do 8085 para operações gerais é apresentada na figura seguinte. Um dos operandos das operações estará sempre armazenado no Acumulador. O outro operando, vindo dos registradores B, C, D, E, H e L ou da memória, passa necessariamente por uma transferência interna para um registrador temporário (REG TEMP). O resultado da operação é armazenado sempre no acumulador. Quando uma operação é realizada na ULA, algumas situações particulares podem acontecer. Em tais casos os bits de estados são setados ou zerados e ficam armazenados em um registrador denominado ou registrador de LAGS. Estes bits podem ser utilizados para o controle e desvio de programas através de determinadas instruções. Os flags no 8085 são organizados como segue: As funções dos bits de LAGS são: LAGS CARRY (CY) Este flag é setado UM (1) quando o resultado de uma operação é um número maior do que 8 bits (ESTOURO ou OVERLOW). Caso contrário ele é zerado. H + 11H = 10H e CY=1. PARITY (P) Esse bit assume valor UM (1) quando o resultado de uma determinada operação produz um valor com número de bits 1 PAR. Caso contrário ele é zerado. 0EH + 01H = 0H e P=1. AUXILIAR CARRY (AC) O flag AC assume valor 1 quando há um VAI-UM do terceiro para o quarto bit. Caso contrário ele é zerado. 05H+0CH = 11H e AC=1. 12

ZERO (Z) Assume valor 1 quando o resultado de uma operação resultar em um valor ZERO (0) caso contrário ele é zerado. DH + 03H = 00H, resulta Z=1 e CY=1. SIGNAL (S) Assume 1 quando o resultado de uma operação produz um número maior que 7H (operações com sinal). CONJUNTO DE INSTRUÇÕES LÓGICAS Operações AND ( ) - O flag CY é desativado (=0) e o flag AC é ativado (AC=1). 14 - ANA r (A) = (A) (r) 1010 0 T= 4 And Accumulator with Register Z, S, P, AC, CY É realizada uma operação AND entre o conteúdo do registrador r e o conteúdo do Acumulador e o resultado é transferido ao acumulador. ANA B 1010 0 000 A0 ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 20H (B) = 21H ()=12H 15 - ANA M (A) = (A) ((H)(L)) 1010 0110 T = 7 And Accumulator with Register Z, S, P, AC, CY R É realizada uma operação AND entre o conteúdo da memória endereçado pelo par HL e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. ANA M 1010 0110 A6 ANTES: (H) = 20H (L) = 31H (2031H) = 7H (A) = 37H APÓS: (2031H) = 7H (A) = 37H () = 12H 16 - ANI Data8 (A) = (A) Data8 1110 0110 T = 7 And Immediate with Accumulator Z, S, P, AC, CY Data8 R É realizada uma operação AND entre o dado Data8 e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. ANI 0 1110 0110 1111 0000 E6 0 ANTES: (A) = 37H APÓS: (A) = 30H ()=16H Operações OR (+ L ) Os flags CY e AC são desativados (=0). 17 - ORA r (A) = (A) + L (r) 1011 0 T = 4 Inclusive OR Register with Accumulator Z, S, P, AC, CY É realizada uma operação OR entre o conteúdo do registrador r e o conteúdo do Acumulador e o resultado é transferido ao acumulador. ORA B 1011 0 000 B0 ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 3EH (B) = 21H ()=06H 13

18 - ORA M (A) = (A) + L ((H)(L)) 1011 0110 T = 7 Inclusive OR Memory with Accumulator Z, S, P, AC, CY B6H R É realizada uma operação OR entre o conteúdo da memória endereçado pelo par HL e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. ORA M 1011 0110 B6 ANTES: (H) = 20H (L) = 31H APÓS: (H) = 20H (L) = 31H (2031H) = 7H (A) = 37H (2031H) = 7H (A) = 7H ()=02H 19 - ORI Data8 Inclusive Or Immediate with Accumulator (A) = (A) + L Data8 Z, S, P, AC, CY 1111 0110 Data8 T = 7 R É realizada uma operação OR entre o dado Data8 e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. ORI 1 1111 0110 1111 0001 6 1 ANTES : (A) = 37H APÓS: (A) = 7H () = 82H Operação OR Exclusivo ( ) - Os flags CY e AC são zerados. 20 - XRA r (A) = (A) (r) 1010 1 T = 4 Exclusive OR Register with Accumulator Z, S, P, AC, CY É realizada uma operação Exclusive OR entre o conteúdo do registrador r e o conteúdo do Acumulador e o resultado é transferido ao acumulador. XRA B 1010 1 000 A8 ANTES: (A) = 3CH (B) = 21H APÓS: (A) = 1DH () = 06H 21 - XRA M (A) = (A) ((H)(L)) 1010 1110 T = 7 Exclusive OR Memory with Accumulator Z, S, P, AC, CY R É realizada uma operação XOR entre o conteúdo da memória endereçado pelo par HL e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. XRA M 1010 1110 AE ANTES: (H) = 20H (L) = 31H (2031H) = 7H (A) = 37H APÓS: (2031H) = 7H (A) = 48H () = 06H 22 - XRI Data8 (A) = (A) Data8 1110 1110 T = 7 Exclusive Or Immediate with Accumulator Z, S, P, AC, CY Data8 R É realizada uma operação XOR entre o dado Data8 e o conteúdo do Acumulador e o resultado é transferido ao Acumulador. XRI 1 1110 1110 1111 0001 EE 1 ANTES: (A) = CH APÓS: (A) = 0DH () = 02H 14

Operações de Complemento 23 - CMA Complement Accumulator (A) = ( A ) 0010 1111 T = 4 Complementa o conteúdo do Acumulador e transfere o resultado ao Acumulador. Nenhum flag é afetado. CMA 0010 1111 2 ANTES: (A) = 3CH APÓS: (A) = 16H () = C3H 24 - CMC Complement Carry CY = CY 0011 1111 3H O flag CY é complementado. Nenhum outro flag é afetado. T= 4 25 - STC Set Carry O flag CY é setado CY = 1 0011 0111 37H T = 4 Operações de Comparação 26 - CMP r Compare Register with Accumulator (A) (r) Z, S, P, AC,CY 1011 1 T = 4 O conteúdo do registrador r é subtraído do Acumulador. O Acumulador não é alterado. Os flags são alterados conforme o resultado da subtração. O flag Z é setado se (A) = (r). O flag CY é setado se (A) < (r). CMP B 1011 1000 B8 ANTES: (A) = 37H (B) = 21H APÓS: (A) = 37H () = 12H 27 - CMP M Compare Register with Memory (A) ((H)(L)) Z, S, P, AC,CY 1011 1110 BE H T = 7 R O conteúdo do endereço de memória dado pelo par H,L é subtraído do Acumulador. O Acumulador não é alterado. Os flags são alterados conforme o resultado da subtração. O flag Z é setado se (A) = ((H)(L)). O flag CY é setado se (A) < ((H)(L)). CMP M 1011 1110 BE 28 - CPI Data8 Compare Immediate ANTES: (H) = 20H (L) = 32H (2032H) = 5H (A) = 37H APÓS: (2032H) = 35H (A) =37H () = 17H (A) (Data8) Z, S, P, AC,CY 1111 1110 (E H) Data8 T = 7 R O byte Data8 é subtraído do Acumulador. O Acumulador não é alterado. Os flags são alterados conforme o resultado da subtração. O flag Z é setado se (A) = Data8. O flag CY é setado se (A) < Data8. CPI 45 1111 1110 0100 0101 E 45 ANTES: (A) = 20H APÓS: (A) = 20H () = 07H 15

Instruções de Rotação 29 - RLC Rotate Left Accumulator (A n+1 ) (A n ) (A 0 ) (A 7 ) (CY) (A 7 ) 0000 0111 07H T = 4 O conteúdo de A é deslocado de uma posição para esquerda. O bit de menor ordem e o flag CY recebem o bit de maior ordem, e o valor inicial de CY é descartado. Os demais flags não são afetados. RLC 0000 0111 07 ANTES: (A) = 20H CY = X APÓS: (A) = 40H CY = 0 30 - RAL Rotate All Left Through Carry (A n+1 ) (A n ) (CY) (A 7 ) (A 0 ) (CY) 0001 0111 (17H) T= 4 O conteúdo de A é deslocado de uma posição para esquerda através do Carry. O bit de menor ordem recebe o conteúdo CY e o flag CY recebe o valor do bit de maior ordem do acumulador, conforme o diagrama seguinte: Os demais flags não são afetados. RAL 0001 0111 17 ANTES: (A) = 20H CY = 1 APÓS: (A) = 41H CY = 0 31 - RRC Rotate Right Accumulator (A n ) (A n+1 ) (A 7 ) (A 0 ) (CY) (A 0 ) 0000 1111 (0H) T = 4 O conteúdo do A é deslocado de uma posição para a direita. O flag CY tem seu valor descartado e, junto com o bit A 7, recebem o bit A 0, conforme o diagrama seguinte: Os demais flags não são afetados. RRC 0000 1111 0 ANTES: (A) = 20H CY = X APÓS: ( A) = 10H CY = 0 32 - RAR Rotate All Right Through Carry (A n ) (A n+1 ) (CY) (A 0 ) 0001 1111 (1H) T = 4 16

(A 7 ) (CY) O conteúdo de A é deslocado de uma posição à direita através do Carry. O bit de maior ordem recebe o valor do carry e o CY recebe o valor do bit de menor ordem do acumulador, conforme o diagrama seguinte: Os demais flags não são afetados. RAR 0001 1111 1 ANTES: (A) = 20H CY = 1 APÓS: (A) = 90H CY = 0 2.6 - CONJUNTO DE INSTRUÇÕES ARITMÉTICAS A realização de cálculos é um ponto importante em sistemas que usam microprocessadores. O 8085 possui uma variedade de instruções para operações aritméticas, realizadas em complemento de 2 também possui uma instrução especial para a realização de operações em BCD. A base das operações de soma e subtração são todas resumidas nas tabela seguinte: A B soma carry 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Nos sistemas digitais, a subtração pode ser utilizada de maneira mais simples se for convertida em soma. O artifício usado é passar os subtraendos para complemento de dois e adicioná-los aos minuendos. Obs: Complemento de 1: inversão de todos os bits Complemento de 2: complemento de 1 + 1 Adição 33 - ADD r (A) = (A) + (r) 1000 0 T = 4 Add Acc. with Register Z, S, P, AC, CY É realizada uma soma entre o conteúdo do Acumulador e o conteúdo do registrador r. ADD B 1000 0000 80 ANTES: (A) = 21H (B) = 31H APÓS: (A) = 52H () = 02H 34 - ADD M Add Acc. with Memory (A) = (A) + ((H)(L)) Z, S, P, AC, CY 1000 0110 T = 7 R 17

É realizada uma soma entre o conteúdo do Acumulador e o conteúdo da memória endereçada pelo par HL. ADD M 1000 0110 86 ANTES: (H) = 20H (L) = 33H APÓS: (A) = 20H () = 13H (A) = 21H (2033) = H 35 - ADI Data8 (A) = (A) + Data8 1100 0110 Add with Immediate Z, S, P, AC, CY Data8 É realizada uma soma entre o conteúdo do Acumulador e o byte Data8. T = 7 R ADI 45 1100 0110 0010 0101 C6 45 ANTES: (A) = 21H (2033) = 45H APÓS: (A) = 66 H () = 06H 36 - ADC r (A) = (A) + (r) + CY 1000 1 T = 4 Add Acc. with Register and Carry Z, S, P, AC, CY É realizada uma soma entre o conteúdo do Acumulador e o conteúdo do registrador r e o flag CY. ADC B 1000 1000 88 ANTES: (A) = 21H (B) = 31H (CY)=1 APÓS: (A) = 53H () = 06H 37 - ADC M (A) = (A) + ((H)(L)) + CY 1000 1110 T = 7 Add Acc. with Memory and Carry Z, S, P, AC, CY R É realizada uma soma entre o conteúdo do Acumulador e o conteúdo da memória endereçada pelo par HL e o flag CY. ADC M 1000 1110 8E ANTES: (H) = 20H (L) = 33H APÓS: (A) = 21H () = 06H (A) = 21H (2033) = H CY=1 38 - ACI Data8 A = (A) + Data8 + CY 1100 1110 T = 7 Add Acc. with Immediate and Carry Z, S, P, AC, CY Data8 R É realizada uma soma entre o conteúdo do Acumulador com o byte Data8 e o flag CY. ACI 45 1100 1110 0010 0101 CE 45 ANTES: (A) = 21H (2033) = 45H CY=1 APÓS: (A) = 67H () = 02H 39 - DAD PR Double Register Add (H)(L) = (H)(L) + (PR) CY 00 PR 1001 T = 10 B B 18

É realizada uma soma de 16 bits entre o conteúdo do par de registradores HL e o par PR e o resultado é retornado ao par HL. O flag CY é setado se houver um VAI UM na soma de dupla precisão; os demais flags não são alterados. DAD D 00 01 1001 19 ANTES: 40 - DAA Decimal Adjust Accumulator (H) = 21H (L) = 45H (D) = 15H (E) = 18H APÓS: Ajuste Decimal do Acumulador Z, S, P, CY, AC (H) = 36H (L) = 5DH (D) = 15H (E) = 18H 0010 0111 T = 4 O byte do acumulador se ajusta de modo a formar dois dígitos de 4 bits, codificados em BCD segundo o seguinte procedimento: 1- Se o valor dos 4 bits menos significativos são maior que 9 ou o flag AC está setado, o valor 06H é somado ao acumulador; 2- Se o valor dos 4 bits mais significativos do acumulador é maior que 9 ou se o flag CY está setado, soma-se 60H ao acumulador. DAA 0010 0111 27 ANTES: (A) = 12 AC = 1 CY = 0 APÓS: (A) = 18H () = 06H Subtração Todas as subtrações são realizadas via adição complemento de 2. 41 - SUB r (A) = (A) - (r) 1001 0 T = 4 Subtract Register from Acc. Z, S, P, AC, CY É realizada uma subtração entre o conteúdo do Acumulador e o conteúdo do registrador r. SUB B 1001 0000 90 ANTES: (A) = 21H (B) = 31H APÓS: (A) = 0H () = 97H 42 - SUB M (A) = (A) - ((H)(L)) 1001 0110 T= 7 Subtract Memory from Acc. Z, S, P, AC, CY 96H R É realizada uma subtração entre o conteúdo do Acumulador e o conteúdo da memória endereçada pelo par HL. SUB M 1001 0110 96 ANTES: (H) = 20H (L) = 33H APÓS: (A) = 02H () = 03H (A) = 21H (2033) = H 43 - SUI Data8 (A) = (A) - Data8 1101 0110 Subtract Immediate from Acc. Z, S, P, AC, CY Data8 É realizada uma subtração entre o conteúdo do Acumulador e o byte Data8. T = 7 R 19

44 - SBB r (A) = (A) - (r) - CY 1001 1 T = 4 Subtract Register with CY from Acc. Z, S, P, AC, CY É realizada uma subtração entre o conteúdo do Acumulador e o conteúdo do registrador r e o flag CY. SBB B 1001 1000 98 ANTES: (A) = 21H (B) = 31H CY = 1 APÓS: (A) = EH () = 83H 45 - SBB M (A) = (A) - ((H)(L)) - CY 1001 1110 T = 7 Subtract Memory with CY from Acc. Z, S, P, AC, CY 9EH R É realizada uma subtração entre o conteúdo do Acumulador e o conteúdo da memória endereçada pelo par HL e o flag CY. 46 - SBI Data8 (A) = (A) - Data8 - CY 1101 1110 T = 7 Subtract Immediate with CY from Acc. Z, S, P, AC, CY Data8 R É realizada uma subtração entre o conteúdo do Acumulador e o byte Data8 e o flag CY. INCREMENTO 47 - INR r (r) = (r) + 1 00 DDD 100 T = 4 Increment Register Z, S, P, AC É realizada um incremento no conteúdo do registrador r. Apenas o flag CY não é afetado. INR B 00 00 0100 04 ANTES: (B) = 31H CY = 0 APÓS: (B) = 32H () = 02H 48 - INR M ((H)(L)) = ((H)(L)) +1 0011 0100 Increment Memory Z, S, P, AC 34H É realizado um incremento no conteúdo do endereço formado pelo par HL. T = 10 R W INR M 0011 0100 34 ANTES: (H) = 20H (L) = 33H APÓS: (2033) = 3H () = 06H (2033) = 2H CY = 0 49 - INX PR Increment Extended Register (PR) = (PR) + 1 00 SR 0011 T = 6 S É realizado um incremento no conteúdo do par de registradores PR. Nenhum flag é afetado. INX B 1100 0110 03 ANTES: (B) = 21H (C) = H APÓS: (B) = 22H (C) = 00H 20

DECREMENTO 50 - DCR r (r) = (r) - 1 00 DDD 101 T = 4 Decrement Register Z, S, P, AC É realizado um decremento no conteúdo do registrador r. Apenas o flag CY não é afetado. 51 - DCR M ((H)(L)) = ((H)(L)) -1 0011 0101 T = 10 Decrement Memory Z, S, P, AC 35H R W É realizado um decremento no conteúdo do endereço formado pelo par HL. Apenas o flag CY não é afetado. 52 - DCX PR Decrement Extended Register (PR) = (PR) - 1 00 SR 1011 T = 6 S É realizado um decremento no conteúdo do par de registradores PR. Nenhum flag é afetado. 21