Operadores lógicos (bit a bit)



Documentos relacionados
Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

x86 arquitetura e instruções básicas

INSTRUÇÕES DE TRANSFERÊNCIA

Fluxo de Execução em Assembly

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

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

Microprocessadores. Família x86 - Programação do i8086

Microprocessador Intel 8086

Arquitetura de Computadores. Prof. João Bosco Jr.

Introdução a Engenharia Reversa

Arquitectura de Computadores 3º Teste. Instruções do x86

Introdução à programação em linguagem assembly

Professor: Dr. Rogério Rodrigues de Vargas.

7. Instruções lógicas, de deslocamento e de rotação

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

Introdução a Organização de Computadores e Linguagens de Montagem. Ricardo Anido

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Universidade de São Paulo

Um circuito comparador permite determinar se dois números binários são iguais, e não o sendo, qual deles é o maior.

ArchC. Wesley Nunes Gonçalves

Aula 14: Instruções e Seus Tipos

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

****************************************************************************

8. Instruções de multiplicação e divisão

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

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Computadores de Programação (MAB353)

Funcionamento básico de um computador

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

Organização e Arquitetura de Computadores I

Arquitectura de Computadores RECUPERAÇÃO DO 1º TESTE

2 Formalidades referentes ao trabalho

Arquitetura de Computadores

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

Arquitetura de Computadores. Tipos de Instruções

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

1. Instruções de Desvio

Neander - características

MODOS DE ENDEREÇAMENTO

Computador Cleópatra

ULA Sinais de Controle enviados pela UC

Introdução. Programando em Assembly. Primeiro Exemplo (2) Primeiro Exemplo (1) Linguagem Assembly do 8086/8088

Capítulo 3 Processadores de Propósito Geral: Software

Representação de Dados Inteiros com sinal

Assembly. Prof. Jorge Cavalcanti. Prof. Sérgio Faustino.

ARQUITETURA DE COMPUTADORES

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Arquitectura de Computadores. Dicas e Truques do Assembly do P3

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber

Prof. Adilson Gonzaga

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Organização e Arquitetura de Computadores I

Estrutura de um Computador

Organização de Computadores 1

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

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.

Registradores de uma CPU. Registradores de uma CPU - Acumulador

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Exemplo de Subtração Binária

Arquitetura de Von Neumann. Computador ISA

A FÓRMULA DE CONVERSÃO ENTRE AS UNIDADES É: F = 1.8 C

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

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

Representação de Dados

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Arquitectura de Computadores II. Medição de desempenho

CAPÍTULO 6 ARITMÉTICA DIGITAL

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Sistemas Lógicos II. Aula 10

Programando em Assembly

Departamento de Sistemas de Computação - SSC. Sistemas Digitais. 2 o Semestre Projeto CPU. Data da apresentação: 26/27 de outubro

Endereçamento IP. Resolvendo as questões da prova

Projecto de uma placa com DIP-Switches e LCD com ligação à placa DETIUA

Departamento de Sistemas de Computação - SSC. SSC-110 Elementos de lógica digital I SSC-111 Laboratório de elementos de lógica digital I.

Organização Básica do Computador

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo. Apostila de Laboratório de Microprocessadores. Prof. Dr.

7. A pilha e subrotinas

OPERADORES E ESTRUTURAS DE CONTROLE

CALCULADORA SIMPLES COM ULA

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo. Apostila de Laboratório de Microprocessadores

Estruturas de controlo do C if-else statement

Arquitectura de Computadores Y86 Sequencial. Créditos Randal E. Bryant

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

Programação Básica usando o Computador Visível. Jorge Fernandes Maio de 2004

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m

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

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

CONJUNTO DE INSTRUÇÕES

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

Codificação 1. Introdução. C 2 R r {! + codificação

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional

Componentes do Computador e. aula 3. Profa. Débora Matos

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Representação de Dados

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova

Transcrição:

Operadores lógicos (bit a bit) Instrução AND Instruções: AND <destino><origem> OR <destino><origem> XOR <destino><origem> NOT <destino> Os operandos destas instruções podem ser de 8 ou 16 bits 10010011 Destino 00100111 Origem 00000011 Destino Por este exemplo podemos ver que na operação AND, o 0 (zero) é elemento absorvente e o 1 (um) é elemento neutro xxxx1010 Destino 00001111 Origem Mascara 00001010 Destino X indiferente aplicações desta instrução, colocar a zero determinados bits (reset), sem alterar os restantes Os 4 bits mais significativos indiferentemente do seu valor são forçados a passar a zero, enquanto os 4 menos significativos, mantêm o seu valor 69 Operadores lógicos (bit a bit) Instrução AND Outra aplicação desta instrução é o cálculo do resto da divisão inteira por 2 N, sem recorrer à instrução DIV e quando temos números não negativos EXEMPLOS: X:=X mod 2 N ; AND X,2 N -1; X:=X mod 4; X:=X mod 8; 00101101 (45) X=45 00000011 (3) 2 N -1 00000001 (1) Resto 00101101 Destino X=45 00000111 Origem 2 N -1 00000101 Destino Resto AND X,3; AND X,7; 70

Operadores lógicos (bit a bit) Instrução OR 10010011 <destino> 00100100 <origem> 10110111 <destino> xx10xx01 <destino> X indiferente 11001100 <origem> Mascara 11101101 <destino> Por este exemplo podemos ver que na operação OR, o 1(um) é elemento absorvente e o 0 (zero) é elemento neutro aplicações desta instrução, colocar a um determinados bits (set), sem alterar os restantes Os 4 bits indiferentes foram forçados a passar a um, enquanto os restantes, mantiveram o seu valor Instrução XOR 10010111 <destino> 11011001 <origem> 01001110 <destino> Por este exemplo podemos ver que na operação XOR, o 1 (um) complementa e o 0 (zero) é elemento neutro 71 Operadores lógicos (bit a bit) Instrução XOR 10111011 <destino> 00001111 <origem> Mascara 10110100 <destino> aplicações desta instrução, complementar determinados bits sem alterar os restantes Os 4 bits menos significativos são complementados, enquanto os bits mais significativos, mantiveram o seu valor Outra aplicação desta instrução é a inicialização de registos a 0 (zero), do tipo, XOR al,al ou XOR bx,bx com vantagens significativas relativamente ao MOV al,0, uma vez que a instrução XOR utiliza registos nos dois operandos, e não tem necessidade de aceder à memória para leitura do operando imediato (0), o que acontece com o MOV Instrução NOT 10110101 <destino> 01001010 <destino> aplicações desta instrução, o complemento bit a bit 72

Instrução de Comparação CMP <destino> <origem> Esta Instrução efectua a operação <destino> - <origem> O resultado da operação anterior não é armazenado Apenas activa as Flags Z,S,O,C,P,A O destino pode ser um Registo ou memória A origem pode ser um Registo, memória, ou endereçamento imediato Operadores relacionais = igual > maior >= maior ou igual <> diferente < menor <= menor ou igual Instrução de salto Incondicional JMP <etiqueta> <etiqueta> é um identificador a que corresponde um deslocamento relativo à próxima instrução a ser executada Exemplo: JMP @label1 @label1: <Proxima instrução> 73 Cálculo de expressões lógicas com operadores relacionais Instrução de salto Condicional JCC <etiqueta> <etiqueta> é um identificador a que corresponde um deslocamento relativo à próxima instrução a ser executada O salto verifica-se se a condição CC for verdadeira Teste de Comparação de números sem/com sinal (8/16 bits) CMP <destino><origem> JCC <etiqueta> em que <destino> e <origem> são de 8/16 bits sem/com sinal CC de números sem sinal A - Above B Below E Equal N Not CC de números com sinal G - Greater L Less E Equal N Not 74

Teste de Comparação de números sem sinal (8/16 bits) Instrução JCC Descrição Cond Verdadeira > JA Jump if Above Destino>origem JNBE Jump if Not Below or Equal >= JAE Jump if Above or Equal Destino >=origem JNB Jump if Not Below < JB Jump if Below Destino < origem JNAE Jump if Not Above or Equal <= JBE Jump if Below or Equal Destino<= origem JNA Jump if Not Above JE Jump if Equal Destino = origem = JZ Jump if Zero Destino-origem=0 JNE Jump if Not Equal Destino<>origem <> JNZ Jump if Not Zero Destino-origem<>0 75 Cálculo de expressões lógicas com operadores relacionais Teste de Comparação de números com sinal (8/16 bits) Instrução JCC Descrição Cond Verdadeira > JG Jump if Greater Destino>origem JNLE Jump if Not Less or Equal >= JGE Jump if Greater or Equal Destino >=origem JNL Jump if Not Less < JL Jump if Less Destino < origem JNGE Jump if Not Greater or Equal <= JLE Jump if Less or Equal Destino<= origem JNG Jump if Not Greater JE Jump if Equal Destino = origem = JZ Jump if Zero Destino-origem=0 JNE Jump if Not Equal Destino<>origem <> JNZ Jump if Not Zero Destino-origem<>0 76

Teste de FLAGS Flag de Carry (C) JC <etiqueta> JNC <etiqueta> Flag de Overflow (O) JO <etiqueta> JNO <etiqueta> Jump if Carry (C=1) Jump if Not Carry (C=0) Jump if Overflow (O=1) Jump if Not Overflow (O=0) Flag de Sinal (S) JS <etiqueta> Jump if Sign (S=1) JNS <etiqueta> Jump if Not Sign (S=0) Flag de Paridade (P) JP/JPE <etiqueta> Jump if Parity Even (nº bits par) JNP/JPO <etiqueta> Jump if Parity Odd (nº bits impar) Teste do Registo CX (contador) JCXZ <etiqueta> Jump if CX=0 77 Comparação/teste de valores lógicos Instrução TEST TEST <destino> <origem> Efectua a operação <destino> and <origem> Não altera o valor de <destino> Afecta apenas as FLGS de S,Z e P Os operandos podem ser dos seguintes tipos: <destino>=<origem>=8/16 bits <destino>=registo/memória <origem>=registo/memória/imediato Exemplo: Var A:boolean; TEST A,true JZ <etiqueta> {Se A é falso} 78