Beruflich Dokumente
Kultur Dokumente
IAC-2009/1
7 Atividade no Presencial
Descrio da atividade
Disponvel no grupo de discusso da disciplina
Observaes
Trabalho manuscrito e individual
Entrega at segunda-feira (27/4), no incio da aula
Lembrando:
Atividades no presenciais contam para a freqncia Avaliadas quanto a pontualidade e contedo Representam um acrscimo importante na nota final
IAC-2009/1
7 Atividade no Presencial
Descrio da atividade
Fazer uma leitura do Captulo 3 do livro de referncia da disciplina (Weber) Elaborar um resumo com um pargrafo (com ilustraes referenciadas ex.: Na Figura 1 so apresentados os elementos bsicos de um computador: ...) para cada um dos cinco itens abaixo (total aproximado de duas folhas)
Princpios bsicos dos computadores Elementos funcionais bsicos Ciclo de busca-decodificao-execuo Comparao do formato de instrues no EDVAC x IAS Diferenciao entre arquiteturas de 4, 3, 2 e 1 endereos
IAC-2009/1
Aula de Hoje
Reviso da aula passada
Arquiteturas de N endereos
Matria nova
Computador hipottico Neander
Caractersticas arquiteturais Aspectos de Programao do Neander
IAC-2009/1
Aula Passada
Arquiteturas de 4, 3, 2, 1 e 0 endereos
Arquiteturas de N Endereos
Diferentes arquiteturas usam instrues com diferentes quantidades de endereos
Endereos = referncias memria
Arquiteturas de 4 Endereos
Ex.: EDVAC
OP E1 E2 E3 E4
OP = cdigo da operao realizada E1 = localizao do 1 operando fonte E2 = localizao do 2 operando fonte E3 = localizao do operando destino E4 = localizao da prxima instruo executada
Arquiteturas de 4 Endereos
Observaes:
Vantagens
No precisa de instrues explicitas para desvio Operao de manipulao de dados + desvio
Desvantagens
Programas so normalmente escritos seqencialmente
Instruo executada muitas vezes a prxima na memria
Custo/benefcio
No valia a pena gastar, em todas as instrues, o espao necessrio para indicar a prxima instruo
Arquiteturas de 3 Endereos
Ex.: MIPS
OP E1 E2 E3
OP = cdigo da operao realizada E1 = localizao do operando destino E2 = localizao do 1 operando fonte E3 = localizao do 2 operando fonte
Arquiteturas de 3 Endereos
Observaes:
Vantagens
Elimina a necessidade de espao para o end. da prxima instruo em instrues que no envolvam desvio de fluxo de execuo
Reduo no tamanho das instrues Reduo no tamanho da memria necessria para armazenar os programas
Desvantagens
Necessidade de um registrador especfico (PC) para descobrir a prxima instruo a ser executada Necessidade de instrues especficas para desvio Muitas vezes o mesmo operando fonte e destino (Ex.: A = A + B)
Custo/benefcio
Desperdiar espao de armazenamento sempre que a redundncia fonte/destino freqente
Arquiteturas de 2 Endereos
Ex.: ?
OP E1 E2
OP = cdigo da operao realizada E1 = localizao do operando destino e 1 fonte E2 = localizao do 2 operando fonte
Arquiteturas de 2 Endereos
Observaes:
Vantagens
Elimina a necessidade de espao referente a um dos operandos
Reduo no tamanho das instrues Reduo no tamanho da memria necessria para armazenar os programas
Desvantagens
Restrio severa
Resultado sempre altera o contedo de um dos operandos fonte Necessidade de instrues complementares para mover dados, copiando operandos de uma posio para outra ADD A B C -> MOV A B + ADD A C
Custo/benefcio
Se considerarmos que seria possvel usar registradores especiais como operandos implcitos, podemos economizar ainda mais espao
Arquiteturas de 1 Endereo
Ex.: Neander
OP E1
OP = cdigo da operao realizada E1 = localizao do operando fonte/destino
Operando implcito = Acumulador (AC) Um dos fontes e destino
Arquiteturas de 1 Endereo
Observaes:
Vantagens
Reduz significativamente o tamanho das instrues
Desvantagens
Necessita que instrues de movimentao de dados sejam subdivididas
Acumulador p/ Memria = STore Acumulator (STA) Memria p/ Acumulador = LoaD Acumulator (LDA)
Custo/benefcio
Em comparao com uma arquitetura de trs endereos, tende a necessitar duas instrues adicionais
ADD A B C -> LDA B + ADD C + STA A
Arquiteturas de 0 Endereos
Ex.: ?
OP
OP = cdigo da operao realizada
Operandos implcitos Ex.: Armazenados em uma pilha na memria
Arquiteturas de 0 Endereos
Observaes:
Vantagens
Reduz drasticamente o tamanho das instrues
Desvantagens
Na verdade, para poder ser usada precisa de pelo menos duas instrues com endereo, para transferncia de dados para a/da pilha
PUSH = empilha POP = desempilha
Custo/benefcio
Arquiteturas puras de zero endereos no apresentam vantagens significativas, o que as torna pouco difundidas
ADD A B C -> PUSH C + PUSH B + ADD + POP A
Matria Nova
Computador Hipottico Neander
IAC-2009/1
Computador Neander
Introduo
Abordagem bottom-up x top-down
Viso inicial dos conhecimentos bsicos necessrios para o entendimento de arquitetura de computadores
Ponto de consolidao
Concretizao dos conhecimentos bsicos atravs do estudo de um computador hipottico
Exemplo didtico
Computador Neander simples e ilustrativo
Computador Neander
Caractersticas:
Largura de dados e endereos de 8 bits Dados representados em complemento de dois 1 acumulador de 8 bits (AC) 1 apontador de programa de 8 bits (PC) 1 registrador de estado com 2 cdigos de condio: negativo (N) e zero (Z)
Computador Neander
modo de endereamento
modo direto: OP E1 (E1 end. operando memria)
muitas vezes tambm chamado de absoluto palavra que segue o cdigo da instruo contm
nas instrues de manipulao de dados endereo de memria do operando nas instrues de desvio endereo corresponde posio de memria onde est uma instruo a ser executada
Computador Neander
modo de endereamento
memria
endereo
operando
Computador Neander
Conjunto de instrues (ISA)
compreende 11 instrues
codificadas atravs dos quatro bits mais significativos da palavra que contm o cdigo da instruo
Obs: Veremos mais adiante que existem verses estendidas do Neander, as quais implementam instrues complementares
Computador Neander
Conjunto de instrues (ISA)
Computador Neander
Aes executadas
AC e PC: registradores especiais (acumulador e program counter) MEM(end): contedo da posio end de memria N e Z: cdigos de condio : atribuio
Computador Neander
Cdigos de condio
Cdigos fornecidos pela Unidade Lgica e Aritmtica (ULA) (usados pelas instrues JN e JZ) N - (negativo) : sinal do resultado
1 : resultado negativo 0 : resultado positivo
Computador Neander
Cdigos de condio
Observaes
Instrues lgicas e aritmticas (ADD, NOT, AND, OR) e a instruo de transferncia LDA afetam N e Z Demais instrues (STA, JMP, JN, JZ, NOP e HLT) no alteram
Computador Neander
Formato de instrues
Formadas por um ou dois bytes
ocupam uma ou duas posies na memria instrues de um byte
4 bits mais significativos contm o cdigo da instruo
Computador Neander
Formato de instrues
endereo direto
Computador Neander
Exemplo de programao
Vamos considerar, como exemplo, um programa que realiza a soma de 3 posies consecutivas da memria e armazena o resultado numa quarta posio. Inicialmente, devem ser escolhidas a rea de dados e a rea de programa, ou seja, a localizao das instrues e dados na memria. No existem critrios rgidos para essa escolha, mas deve ser observado que a rea de programa no pode invadir a rea de dados e vice-versa.
Computador Neander
Exemplo de programao
Seja, para esse programa, escolhida uma alocao de memria de tal forma que o programa ocupe a metade inferior da memria e os dados a metade superior, como segue:
Computador Neander
Exemplo de programao
1 Programa Neander
Computador Neander
Exemplo de programao
1 Programa Neander
Esse programa pode ser editado em linguagem de mquina (tanto em hexa como em decimal), depurado e executado usando o simulador/depurador NEANDER
Linguagem simblica atravs do simulador NeanderWin
Programao do Neander
Observaes complementares
Memria disponvel para programa e dados compreende apenas 256 posies Exceto onde explicitado, todos os nmeros e endereos so representados na base decimal Adotar a seguinte conveno:
incio do programa - posio 0 (0H) incio da rea de dados - posio 128 (80H)
Programao do Neander
1 Exerccio:
Mltiplas formas para limpar (zerar) o acumulador
a) b) c) d) e) Atribuio direta Subtrao Operao lgica AND com NOT Operao lgica OR com NOTs Operao lgica OR com NOT e SOMA
Programao do Neander
1 Exerccio:
Mltiplas formas para limpar (zerar) o acumulador
f) Incrementos sucessivos g) Incrementos ou decrementos sucessivos (pos ou neg) h) Deslocamentos sucessivos para a esquerda, com contagem progressiva i) Deslocamentos sucessivos para a esquerda, com contagem regressiva j) Deslocamentos sucessivos para a esquerda, at obter zero
Programao do Neander
2 Exerccio:
Somar duas variveis de 8 bits
Faa um programa para somar duas variveis representadas em complemento de dois. As variveis e o resultado esto dispostos segundo o mapa de memria abaixo:
posio 128: primeira varivel posio 129: segunda varivel posio 130: resultado
Programao do Neander
3 Exerccio:
Subtrair duas variveis de 8 bits:
Faa um programa para subtrair duas variveis representadas em complemento de dois O resultado deve aparecer na posio de memria consecutiva s ocupadas pelas variveis:
posio 128: minuendo posio 129: subtraendo posio 130: resultado
Programao do Neander
4 Exerccio:
Comparao:
Faa um programa que determine qual a maior de 3 variveis positivas de 8 bits armazenadas em posies consecutivas de memria. O resultado (a maior varivel) deve aparecer na posio livre de memria consecutiva s ocupadas pelas variveis na rea reservada aos dados
posio 128: primeira varivel posio 129: segunda varivel posio 130: terceira varivel posio 131: resultado (maior das trs variveis)
Programao do Neander
5 Exerccio:
Determinao de overflow na soma:
Faa um programa que determine a ocorrncia de overflow na soma de duas variveis. As variveis so de 8 bits em complemento de dois e esto armazenadas em posies consecutivas de memria. O resultado da soma, tambm em 8 bits, deve aparecer na primeira posio livre e overflow deve ser indicado da seguinte forma:
posio 130: contedo = 0H quando no ocorreu overflow contedo = FFH quando ocorreu overflow
Programao do Neander
6 Exerccio:
Limpeza de uma rea de memria:
Faa um programa para zerar 32 posies consecutivas na memria. Endereo inicial desta rea fornecido na posio 128 de memria (?). garantido que o endereo inicial est entre 130 e 220.
Modos de Endereamento
Instrues lgicas e aritmticas realizam operaes com operandos
Operando = elemento armazenado em um registrador ou em uma posio de memria
Instrues de desvio precisam saber para qual endereo de programa se quer desviar Problema:
Como saber onde esto os operandos que devem ser considerados na execuo da instruo?
Endereo do operando / endereo de programa
Modos de Endereamento
Direto
Endereo de memria indicado na instruo o prprio endereo (operando/programa)
Indireto
Endereo de memria indicado na instruo contm o endereo (operando/programa)
Endereo indicado um ponteiro para um endereo de operando ou de programa
Programao do Neander
6 Exerccio:
Limpeza de uma rea de memria:
Faa um programa para zerar 32 posies consecutivas na memria. Endereo inicial desta rea fornecido na posio 128 de memria. garantido que o endereo inicial est entre 130 e 220.
Computador Neander
modo de endereamento
ENDEREAMENTO DIRETO
absoluto
endereo operando
memria
Computador Neander
modo de endereamento
ENDEREAMENTO INDIRETO
memria
Exerccios Ponteiros
A. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm o valor zero. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)
Exerccios Ponteiros
B. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm um valor negativo. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)
Exerccios Ponteiros
C. Programa que teste se uma determinada posio de memria (endereo fornecido na posio 128) contm um valor positivo. Se sim, armazena 1 na pos 131. Se no, armazena 0 na pos 131 (pos 129=1 e pos 130=0)
Exerccios Ponteiros
D. Programa que testa a memria, a partir de uma determinada posio (endereo fornecido na posio 128), procurando pela primeira ocorrncia de um valor positivo. Ao encontrar, armazena na pos 132 o endereo do primeiro valor positivo (pos 129=1, pos 130=0 e pos 131=255)
Obs.:
Endereos vlidos para teste entre 133 e 255. Pos 132 deve conter 255 se nenhum valor positivo for encontrado at a ltima posio de memria.
Exerccios Ponteiros
E. Programa que testa a memria, a partir de uma determinada posio (endereo fornecido na posio 128), procurando por ocorrncias de valor positivo. Ao encontrar, contabiliza na pos 132 o nmero de ocorrncias de valor positivo (pos 129=1, pos 130=0 e pos 131=255)
Obs.:
Endereos vlidos para teste entre 133 e 255. Pos 132 deve conter 0 se nenhum valor positivo for encontrado at a ltima posio de memria.
Computador Neander
Usando o simulador