Buscar

Operações Lógicas e Aritméticas

Prévia do material em texto

Instrução
Uma instrução é a operação elementar que o processador pode efetuar. As instruções são armazenadas na memória principal, para serem tratadas pelo processador. Uma instrução é composta de dois campos: 
O código operacional, representando a ação que o processador deve efetuar; 
O código operando, definindo os parâmetros da ação. O código operando depende da operação. Pode tratar-se de um dado ou de um endereço da memória.
	Código operacional
	Campo operando
O número de bytes de uma instrução varia conforme o tipo de dado (a ordem da grandeza é de 1 à 4 bytes). 
As instruções podem ser divididas em categorias cujas principais são: 
Acesso à memória: acessos à memória ou transferências de dados entre registros. 
Operações aritméticas: operações tais como: adições, subtrações, divisões ou multiplicações. 
Operações lógicas: operações E, OU, NÃO, NÃO exclusivo, etc. 
Controle: controle de sequência, conexões condicionais, etc.
Registros
Quando o processador executa as instruções, os dados são armazenados, temporariamente, nas pequenas memórias rápidas de 8, 16, 32 ou 64 bits que chamamos registros. Conforme o tipo do processador, o número global de registros pode variar entre uma dezena e várias centenas. 
Os principais registros são: 
o registrador de dados ou acumulador (ACC), armazenando os resultados das operações aritméticas e lógicas; 
o registrador de status (PSW, Processor Status Word), armazenando os indicadores sobre o estado do sistema (retenção, excesso, etc.); 
o registrador de instrução (RI), com a instrução de processamento em curso; 
o contador de programa (CO ou PC para Program Counter), com o endereço da próxima instrução a ser processada; 
o registro reserva, que armazena, temporariamente, um dado vindo da memória.
CONJUNTO DE INSTRUÇÕES
Quem executa um programa é o hardware e o que ele espera encontrar é um programa em linguagem de máquina (uma sequencia de instruções de máquina em código binário). Um programa em linguagem de alto nível não pode ser executado diretamente pelo hardware. Ele em que ser transformado (traduzido) para linguagem de máquina por um compilador, antes de ser carregado em memória, para que o hardware possa executá-lo. A linguagem da máquina é composta de códigos binários, representando instruções, endereços e dados e esta totalmente vinculada ao conjunto de instruções da máquina. 
Alto nível – linguagem mais próxima do programador
Baixo nível – linguagem mais próxima da máquina
Características:
- Código da máquina
- Binária
- Usualmente representada por códigos Assembly
Exemplo de um conjunto de instruções de uma máquina “qualquer”
	Instrução
	Significado
	Operação
	Código 
	Load 
	Carregar no acumulador
	ACC <-- op
	0000
	Store
	Salvar na memória
	op <-- ACC
	0001
	Add 
	Somar
	ACC <-- ACC + op
	0010 
	Sub
	Subtrair
	ACC <-- ACC - op
	0011
	Mult
	Multiplicar
	ACC <-- ACC * op
	0100
	Div
	Dividir
	ACC <-- ACC / op
	0101
	Jmp
	Desviar
	CI <-- op
	0110
	Jz
	Desviar, se ACC igual zero
	CI <-- op, se ACC = 0
	0111
	Jnz
	Desviar, se ACC não zero
	CI <-- op, se ACC != 0
	1000
	Read
	Ler entrada
	op <-- entrada
	1001
	Print
	Imprimir
	saida <-- op
	1010
	Stop
	Terminar
	
	1100
Cada uma das instruções tem um código binário associado, que é o código da operação.
Serão usadas as seguintes convenções:
	Operador
	Significado
	Operador
	Significado
	+
	adição
	~
	not (negação)
	-
	subtração
	=
	igual
	*
	multiplicação
	!=
	diferente
	/
	divisão
	|
	or (AND)
	<--
	atribuição
	^
	exclusive or (XOR)
	<<
	deslocamento à esquerda
	&
	and (E)
	>>
	deslocamento à direita
	
	
Formato das instruções
	Código de operação (OPCODE)
	Operando 1 (OP1)
	OP 2
	OP 3...
Código da Operação ou OPCODE – identifica a operação a ser realizada pelo processador. É o campo da instrução cujo valor binário identifica a operação a ser realizada. Este código é a entrada no decodificador de instruções na UC (unidade de controle). Cada instrução deverá ter um código único que a identifique.
Operando (s) – é o campo da instrução cujo valor binário sinaliza a localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrado (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado do dado). Os operandos fornecem os dados da instrução.
Exemplo:
ADD OP1 OP2	 =>	(OP1)<-- (OP1) + (OP2)	+ conteúdo de OP1 e OP2 e armazena o res em OP1
ADD OP1 OP2 OP3	 =>	(OP3)<-- (OP1) + (OP2) + conteúdo de OP1 e OP2 e armazena o res em OP3
ADD OP1		 => 	(ACC)<-- (ACC) + (OP1) + conteúdo de OP1 e ACC e armazena o res em ACC
Elementos de uma instrução:
- Código de operação 
 “faça isso”
- Referência a Operando Fonte
 “para este”
- Referência a Operando Destino
 “coloque a resposta aqui”
- Endereço da próxima instrução
 “quando tiver terminado, vá para a próxima posição”
Localização dos Operandos:
- Onde estão os Operandos fonte e destino?
 Memória principal
 Registrador do CPU
 Dispositivo de entrada e saída
Representação da instrução:
- cada instrução é representada por uma única sequencia de bits
- para programadores são usados os mnemônicos: ADD, SUB, LOAD
- operando pode ser representados de maneira simbólica: ADD x, y 
Tipos de instrução:
Pode ser usado mais de um formato de instrução:
- processamento de dados
- armazenamento de dados
- movimentação de dados
- controle de fluxo de programa
Tamanho do código da operação
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1
Quantas combinações possível, sem repetição, consigo com 8 posições de 2 produtos?
R= 
Considere um computador hipotético no qual, em sua arquitetura, o processador possui apenas um registrador de armazenamento de dados, denominado acumulador, com tamanho de 16 bits e no formato de suas instruções reservam-se 4 bits para os códigos de operação. Considerando-se ainda que o registrador de endereços tenha 12 bits de tamanho, pode-se afirmar que neste computador há: 
16 códigos de operação. 
Tipos de Operandos
- números
- caracteres
- dados lógicos
Números
- inteiro e ponto fixo
- ponto flutuante
- decimal
Decimal – representado por 4 bits:
0 = 0000
1 = 0001
8 = 1000
BCD – binary coded decimal
246
1 1 1 1 0 1 1 0 
0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 
Caracteres
ASCII
�PAGE \* MERGEFORMAT�3�

Outros materiais

Perguntas Recentes