dcc001 - 2011-21 aula expositiva 4 2.4 processadores 2.4.1 micro-instruções 2.4.2 desvios 2.4.3...

61
DCC001 - 2011-2 1 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em Assembler DCC 001 Programação de Computadores 2 o Semestre de 2011 Prof. Osvaldo Carvalho

Upload: internet

Post on 22-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

DCC001 - 2011-2 1

Aula Expositiva 4

2.4 Processadores2.4.1 Micro-instruções2.4.2 Desvios2.4.3 Desvios Condicionais2.4.4 Instruções e Programação em Assembler

DCC 001Programação de Computadores

2o Semestre de 2011Prof. Osvaldo Carvalho

Page 2: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Uma Calculadora

DCC001 - 2011-2 2

Page 3: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Uma Calculadora

DCC001 - 2011-2 3

Page 4: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CalculadoraFluxos de Dados

As rotas de dados da calculadora permitem controlar diversos fluxos de dados, envolvendo a memória RAM, as entradas e saídas, o acumulador e os registradores de dados e de endereços

O controle de fluxos é feito pelo usuário Logisim, que se encarrega de mudar de 0 para 1 ou de 1 para 0 os sinais de controle

de posse de barramentos e de cópia de registradores, entrar com valores literais (endereços, valores a serem

somados ou armazenados, …) no registrador In na sequência adequada ao efeito desejado

DCC001 - 2011-2 4

Page 5: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Um Fluxo na Calculadora

Somar os conteúdos das posições 1 e 2 da memória, e colocar o resultado na posição 3

Etapas:1. Carregar no acumulador o conteúdo da

posição 1 da RAM2. Somar ao acumulador o conteúdo da

posição 2 da RAM3. Armazenar o conteúdo do acumulador na

posição 3 da RAMDCC001 - 2011-2 5

Page 6: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Sinal ComentáriosACC_Clear = 1ACC_Clear = 0Input = 1In_Clk = 1In_Clk = 0In_Bus = 1MAR_Clk = 1MAR_Clk = 0In_Bus = 0RAM_Bus = 1ACC_Clk = 1ACC_Clk = 0RAM_Bus = 0

Carrega no acumulador o conteúdo da posição 1 da RAM

Etapa 1: Carregar

DCC001 - 2011-2 6

Entrada de literal

Page 7: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Input = 2In_Clk = 1In Clk = 0In_Bus = 1MAR_Clk = 1MAR_Clk = 0In_Bus = 0RAM_Bus = 1ACC_Clk = 1ACC_Clk = 0RAM_Bus = 0

Soma ao acumulador o conteúdo da posição 2 da RAM

Etapa 2: Somar

DCC001 - 2011-2 7

Entrada de literal

Page 8: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Etapa 3: Armazenar

DCC001 - 2011-2 8

Input = 3In_Clk = 1In_Clk = 0In_Bus = 1MAR_Clk = 1MAR_Clk = 0In_Bus = 0ACC_Bus = 1RAM_Clk = 1RAM_Clk = 0ACC_Bus = 0

Armazena o conteúdo do acumulador na posição 3 da

RAM

Entrada de literal

Page 9: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa Armazenado

DCC001 - 2011-2 9

Page 10: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Processador

Processador: circuito de comportamento flexível, comandado por um programa

O programa é escrito por um ser humano, que deseja resolver um problema de transformação de informação

A troca de programa não deve envolver modificações no circuito

DCC001 - 2011-2 10

Page 11: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Da Calculadora ao Processador

O programa em seu formato final deve ser também informação codificada em bits

Para ser executado, o programa deve estar carregado em alguma memória

Uma unidade de controle deve ser adicionada à calculadora

Os sinais de controle (tomadas de barramentos, clocks de registradores, ...) devem ser emitidos pela unidade de controle de forma a obter a computação determinada pelo programa

DCC001 - 2011-2 11

Page 12: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa como Codificação dos Sinais de Controle - 1

DCC001 - 2011-2 12

O programa fica armazenado como uma sequência de palavras em uma memória

Por razões que veremos mais tarde, chamamos cada palavra destes programas de micro-instrução

A cada bit da micro-instrução corresponde um sinal

Page 13: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa como Codificação dos Sinais de Controle - 2

A unidade de controle implementa um ciclo de leitura em seqüência de micro-instruções da memória de programa

Os bits de cada palavra lida são encaminhados para as saídas da unidade de controle, que estão ligadas aos pontos de controle da (ex-) calculadora

DCC001 - 2011-2 13

Page 14: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

In_b

usIn

_Clk

MAR

_Clk

RAM

_Bus

RAM

_Clk

DR_

Bus

DR_

Clk

Subt

ract

Out

_Clk

Com

pare

_Clk

ACC_

Bus

ACC_

Clk

ACC_

Clea

r

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ACC_Clear = 1 ACC = 01 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ACC_Clear = 0; In_Bus = 1 Bus = In2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 MAR_Clk = 1 MAR = Bus3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 In_Bus = 0; MAR_Clk = 0; DR_Bus = 1 Bus = DR4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 RAM_Clk = 1 RAM = Bus

Ende

reço

Micro-instrução

Sinais

Clicks Equivalentes Efeito

Codificação dos Sinais de Controle em Micro-instruções

DCC001 - 2011-2 14

Micro-instruções

Page 15: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Contador de Programa

DCC001 - 2011-2 15

Soma 1

Registrador

Page 16: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Unidade de ControleSomente Sinais

DCC001 - 2011-2 16

Contador de Programa armazena o endereço

da próxima micro-instrução a ser

executada

Memória de Programa

Page 17: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Caixa de Música

DCC001 - 2011-2 17

Page 18: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Valores Literais

No uso da calculadora a intervenção do operador se dá também na entrada de valores literais (p. ex. um endereço de palavra a ser carregada, ou um valor a ser adicionado ao acumulador)

Para eliminar esta necessidade de intervenção humana, uma unidade de controle deve permitir que estes valores já possam ser especificados no programa

Os literais devem ser fornecidos pela unidade de controle à (ex) calculadora nos momentos adequados

Por fornecer entenda-se: colocar no barramento

DCC001 - 2011-2 18

Page 19: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Codificação de Operandos em Micro-Instruções

DCC001 - 2011-2 19

Literal nos 16 bits menos

significativos = 2

Sinal Adicionalcoloca Literal

no Barramento

Bit 23 indica se a

palavra codifica

um literal

Page 20: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-0Micro-Instruções

DCC001 - 2011-2 20

Page 21: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-0: Nosso primeiro processador

DCC001 - 2011-2 21

Page 22: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-0: Nosso primeiro processador

DCC001 - 2011-2 22

Calculadora

Controle

Page 23: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Unidade de Controle da CPU-0Sinais e Literais

DCC001 - 2011-2 23

fornece tempos para atualizações:t0: PCt1: mIRt2: Sinais ou Literal

Micro-instrução corrente

Saída de Sinais

Saída de Literal

Page 24: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Carga de um Programa

São programas chamados “loaders”, que lêm programas de discos ou de outra mídia, e os carregam na memória

Sim, mas quem carrega o loader? Em computadores atuais, um loader primitivo fica

gravado em uma memória ROM Este loader carrega outro loader mais sofisticado,

que carrega outro mais sofisticado ainda, que carrega o sistema operacional

Em computadores antigos, loaders eram carregados palavra por palavra, através do painel do computador

DCC001 - 2011-2 24

Page 25: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Painel de um PDP11/70, de 1975

DCC001 - 2011-2 25

Page 26: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Logisim e Memórias

No Logisim você pode: Escrever diretamente valores para

posições de memória Ler de um arquivo um mapa da

memória. Os valores de cada palavra da memória ficam escritos em hexadecimal no arquivo

Nós vamos fazer uso destas possibilidades para carregar programas e para colocar valores em memórias

DCC001 - 2011-2 26

Page 27: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Arquivo e Memória Logisim

DCC001 - 2011-2 27

Page 28: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Passos para a Programação da CPU-0

Em uma tabela com 24 posições, se bit 23 = 0, cada um dos outros bits deve ser igual a

1 se desejarmos ligar o sinal de controle correspondente

bit 23 = 1, os 16 bits menos significativos codificam um operando

Depois, cada micro-instrução (cada linha da tabela) é codificada em hexadecimal

O código em hexadecimal é transferido para um arquivo

No site vocês encontrarão uma planilha muito útil para isso

DCC001 - 2011-2 28

Page 29: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Mais um Programa

Queremos agora somar os conteúdos das posições 1, 2, 3, 4 e 5 da memória, colocando o resultado na posição 6

Basta acrescentar ao programa mais passos de somas ao acumulador

DCC001 - 2011-2 29

Page 30: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Dois “programas”

DCC001 - 2011-2 30

Op

er->

Bu

s

In->

Db

us

In_C

lk

MA

R_C

lk

RA

M_B

us

RA

M_C

lk

DR

->B

us

DR

_Clk

Sub

trac

t

Ou

t_C

lk

Co

mp

are_

Clk

AC

C->

Bu

s

AC

C_C

lk

AC

C_C

lear

11 1

11 1

11 1

1 111 1

11 1

1 1 111 1

11 1

1 111 1

11 1

1 1 111 1

11 1

1 1 111 1

11 1

Sinais

Operando?

Op

er->

Bu

s

In->

Db

us

In_C

lk

MA

R_C

lk

RA

M_B

us

RA

M_C

lk

DR

->B

us

DR

_Clk

Sub

trac

t

Ou

t_C

lk

Co

mp

are_

Clk

AC

C->

Bu

s

AC

C_C

lk

AC

C_C

lear

11 1

11 1

11 1

1 111 1

11 1

1 1 111 1

11 1

Sinais

Operando?

Soma de 2 parcelas Soma de 5 parcelas

Problema: o programa cresce quando o número

de operações cresce!

Page 31: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Balanço – CPU-0

Sabíamos que podíamos realizar computações com a calculadora, aplicando manualmente os sinais de controle, e entrando também manualmente com operandos

Mostramos que é possível automatizar essas operações, com o uso de uma unidade de controle impulsionada por um clock

Problema: O programa cresce de tamanho com o número de

operações que realiza Qual seria o tamanho de um programa que some um

milhão de parcelas?DCC001 - 2011-2 31

Page 32: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-1Micro-Instruções de Desvio

DCC001 - 2011-2 32

Page 33: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-1: Loops

Para conseguir escrever programas cujo tamanho não cresça com o número de operações que realiza, precisamos alterar o nosso modelo de execução seqüencial de micro-instruções

Vamos introduzir uma micro-instrução especial que desvia o fluxo de execução para um endereço designado na memória de programa

Usando essa instrução de desvio, vamos construir um programa que repetidamente soma 1 ao acumulador

DCC001 - 2011-2 33

Page 34: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Formato de Micro-instruções contemplando Desvios

DCC001 - 2011-2 34

Micro-instrução de desvio para a posição

4 na memória de programa

Bit 23: Desvio?Bit 22: Literal?

Page 35: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Unidade de Controle com micro-instrução de Desvio

DCC001 - 2011-2 35

Page 36: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

O Contador de Programa

DCC001 - 2011-2 36

Decisão sobre o próximo

valor do PC

Endereço de

Desvio

Page 37: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-1: Balanço

Conseguimos construir programas que prescrevem a repetição de ações pela (ex-) calculadora

Mas como fazer para interromper as repetições? Afinal, um loop precisa parar

DCC001 - 2011-2 37

Page 38: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-2Micro-instruções de Desvio Condicional

DCC001 - 2011-2 38

Page 39: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-2: Desvios Condicionais

Precisamos de micro-instruções de desvio condicional

O resultado de comparações é usado para decidir se um desvio é realizado ou não

Vamos desenvolver um programa que, como antes, adiciona 1 ao acumulador repetidamente, mas somente enquanto o valor do acumulador não supera um valor colocado pelo usuário na entrada InDCC001 - 2011-2 39

Page 40: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Codificação de Desvios Condicionais

DCC001 - 2011-2 40

Desviar para o endereço 10 se Bus > ACC

Page 41: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-2: Desvios Condicionais

DCC001 - 2011-2 41

Unidade de

Controle

Registrador Compare

Page 42: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-2: Unidade de Controlecom Desvio Condicional

DCC001 - 2011-2 42

Lógica de Decisão:Condições na micro-instrução coincidem com o status do registrador de comparação?

Page 43: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

CPU-2: Balanço

Conseguimos implantar desvios condicionais, que nos permitem prescrever loops

A forma de se programar, lidando diretamente com sinais, torna difícil a descrição de algoritmos mais ambiciosos

Precisamos melhorar a vida do programador

DCC001 - 2011-2 43

Page 44: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

A CPU PipocaInstruções e Assembler

DCC001 - 2011-2 44

Page 45: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

A CPU PipocaCaracterísticas - 1

Programas são formados por instruções

A execução de cada instrução é feita pela execução de várias micro-instruções

Operandos ficam codificados nas instruções

Uma única memória RAM abriga dados e programa

DCC001 - 2011-2 45

Page 46: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

A CPU PipocaCaracterísticas - 2

O conjunto de micro-instruções é fixo, e fica gravado em uma memória ROM

O processador executa um ciclo de leitura e execução de instruções

A programação pode ser feita em linguagem de montagem (assembler), o que, relativamente à programação por sinais de controle, é um grande avanço

DCC001 - 2011-2 46

Page 47: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Novos Registradores

O ciclo de instrução exige: PC – Program Counter

contém o endereço da instrução a ser executada

IR – Instruction Register contém a instrução em execução

Sinc Entrada e Sinc Saída para sincronização de entrada e

saídaDCC001 - 2011-2 47

Page 48: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Pipoca – Formato de Instrução

Cada instrução ocupa 16 bits, sendo 4 bits para o código da instrução 2 bits para o modo de endereçamento, que

indica se o operando é o que está codificado na instrução, ou se é o conteúdo da posição de memória cujo endereço está na instrução, ou outras alternativas de indireção

10 bits para o operando, cuja interpretação depende do modo de endereçamento

DCC001 - 2011-2 48

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OpCode Mode Operand

Page 49: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Instrução ADD

DCC001 - 2011-2 49

Descrição

Mn

emo

nic

Op

Co

de1

0

Op

Co

de2

Adiciona o operando a ACC, deixando o resultado em ACC

ADD 0 0000

Page 50: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Pipoca – Conjunto de Instruções

ADDSUBLOADSTORE INPUTOUTPUT

COMPARE JMP JMPEQ JMPGT JMPLTHALT

DCC001 - 2011-2 50

Page 51: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programação em Assembler

Nenhum ser humano com saúde mental consegue fazer um programa diretamente em binário

O processo de programação consiste em preencher uma tabela usando mnemônicos

das instruções, dando nomes a posições de memória, sendo assim mais compreensível para humanos, e

depois, cuidadosamente, substituir estes mnemônicos e nomes de posições de memória pelos códigos binários correspondentes – processo que chamamos de montagem do programa

DCC001 - 2011-2 51

Page 52: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa SumX: Código Fonte

DCC001 - 2011-2 52

Lab

el

Size

Ad

dre

ss1

0

Ad

dre

ss1

6

Inst

ructi

on

Mo

de

Op

eran

d

Comentários

1 0 00 LOAD 0 0 Zera o acumulador1 1 01 STORE 0 SUM Coloca 0 em SUM1 2 02 LOAD 0 X Carrega o endereço X no acumulador1 3 03 STORE 0 P Coloca o endereço X em P

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador

1 5 05 ADD 2 PSoma o conteúdo da posição de memória cujo endereço é P ao acumulador

1 6 06 STORE 0 SUM Coloca o resultado na posição SUM1 7 07 LOAD 1 P Carrega o conteúdo de P 1 8 08 ADD 0 1 Soma 11 9 09 STORE 0 P Coloca o resultado em P1 10 0A COMPARE 0 XEND Compara XEND com o acumulador1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída1 14 0E HALT Para.

X 1 15 0F 31421 16 10 45421 17 11 33251 18 12 1234

XEND 1 19 13 8786SUM 1 20 14 0

P 1 21 15 0

Números a serem somados

Page 53: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa SumXInstruções e Dados

DCC001 - 2011-2 53

Lab

el

Size

Ad

dre

ss1

0

Inst

ructi

on

Mo

de

Op

eran

d

Comentários

1 0 LOAD 0 0 Zera o acumulador1 1 STORE 0 SUM Coloca 0 em SUM1 2 LOAD 0 X Carrega o endereço X no acumulador1 3 STORE 0 P Coloca o endereço X em P

LOOP 1 4 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador

1 5 ADD 2 PSoma o conteúdo da posição de memória cujo endereço é P ao acumulador

1 6 STORE 0 SUM Coloca o resultado na posição SUM1 7 LOAD 1 P Carrega o conteúdo de P 1 8 ADD 0 1 Soma 11 9 STORE 0 P Coloca o resultado em P1 10 COMPARE 0 XEND Compara XEND com o acumulador1 11 JMPLT 0 FINISH Se for menor, desvia para FINISH1 12 JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 OUTPUT 1 SUM Coloca o resultado na saída1 14 HALT Para.

X 1 15 31421 16 45421 17 33251 18 1234

XEND 1 19 8786SUM 1 20 0

P 1 21 0

Números a serem somados

Instruções

Dados

Page 54: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa SumX: Código FonteUso de Mnemônicos

DCC001 - 2011-2 54

Lab

el

Size

Ad

dre

ss1

0

Ad

dre

ss1

6

Inst

ructi

on

Mo

de

Op

eran

d

Comentários

1 0 00 LOAD 0 0 Zera o acumulador1 1 01 STORE 0 SUM Coloca 0 em SUM1 2 02 LOAD 0 X Carrega o endereço X no acumulador1 3 03 STORE 0 P Coloca o endereço X em P

1 5 05 ADD 2 P

Lab

el

Size

Ad

dre

ss10

Ad

dre

ss16

Inst

ructi

on

Mo

de

Op

eran

d

Comentários

1 5 05 ADD 2 P

1 14 0E HALT Para.X 1 15 0F 3142

1 16 10 45421 17 11 33251 18 12 1234

XEND 1 19 13 8786SUM 1 20 14 0

P 1 21 15 0

Números a serem somados

Page 55: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programa SumXLoop e Finalização

DCC001 - 2011-2 55

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador

1 5 05 ADD 2 PSoma o conteúdo da posição de memória cujo endereço é P ao acumulador

1 6 06 STORE 0 SUM Coloca o resultado na posição SUM1 7 07 LOAD 1 P Carrega o conteúdo de P 1 8 08 ADD 0 1 Soma 11 9 09 STORE 0 P Coloca o resultado em P1 10 0A COMPARE 0 XEND Compara XEND com o acumulador1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída

Lab

el

Size

Ad

dre

ss1

0

Ad

dre

ss1

6

Inst

ructi

on

Mo

de

Op

eran

d

Comentários

Page 56: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Montagem de uma Instrução

DCC001 - 2011-2 56

SUM é o nome dado à posição x14 da memória

Vem da tabela de códigos de instrução

OpCode Mode OperandInstrução LOAD 1 SUMCódigos 1000 01 0000010100BinárioHexa

1000 0100 0001 01008414

Page 57: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programas Montadores - 1

A tradução da tabela-programa para binário é uma tarefa insana, com fortes exigências de verificação

Mas essa tarefa só foi feita manualmente pelos pioneiros da computação

Cedo se percebeu que computadores são uma excelente ferramenta para ... programar computadores!

DCC001 - 2011-2 57

Page 58: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Programas Montadores

Montadores ou assemblers são programas que lêm tabelas-programas, e geram arquivos com imagens binárias a serem carregadas na memória, substituindo os mnemônicos pelos bits adequados.

A planilha Pipoca.xls foi utilizada como montador para os programas exemplo

DCC001 - 2011-2 58

Page 59: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Resumo – 1

Um processador básico possui memória, registradores, unidade lógico-aritmética, e uma unidade de controle

O processamento é feito por deslocamentos de dados entre memória e registradores, e transformações de dados realizadas pela ULA

DCC001 - 2011-2 59

Page 60: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Resumo – 2

A unidade de controle segue um programa armazenado em uma memória, emitindo sinais de controle (posse de

barramentos, cópias de entradas de registradores) que comandam os deslocamentos de informação no processador, e

fornecendo operandos como endereços ou valores numéricos.

DCC001 - 2011-2 60

Page 61: DCC001 - 2011-21 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em

Resumo – 3

Um programa é escrito – e lido – por humanos executado por um processador

Um programa tem formatos apropriados para a escrita por um programador a execução por um processador

A transformação de um formato em outro é normalmente feita por … um programa

DCC001 - 2011-2 61