exercicio assembler neander

Upload: dihmancinho

Post on 07-Apr-2018

240 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Exercicio Assembler Neander

    1/51

    Disciplina de Introduo

    Arquitetura de ComputadoresProf. Dr. Leonardo B. Pinho

    [email protected]

    IAC-2009/1

  • 8/3/2019 Exercicio Assembler Neander

    2/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    3/51

    7 Atividade no Presencial

    Descrio da atividade

    Fazer uma leitura do Captulo 3 do livro de referncia dadisciplina (Weber)

    Elaborar um resumo com um pargrafo (com ilustraesreferenciadas ex.: Na Figura 1 so apresentados oselementos bsicos de um computador: ...) para cada umdos 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

  • 8/3/2019 Exercicio Assembler Neander

    4/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    5/51

    Aula Passada

    Arquiteturas de 4, 3, 2, 1 e 0 endereos

  • 8/3/2019 Exercicio Assembler Neander

    6/51

    Arquiteturas de N Endereos

    Diferentes arquiteturas usam instrues comdiferentes quantidades de endereos

    Endereos = referncias memria

    Diferena na quantidade de endereos nonecessariamente implica em diferena decapacidade

    Exemplo: EDVAC (4 endereos) x IAS (1 endereo)

    Afinal, em que influencia a quantidade deendereos?

  • 8/3/2019 Exercicio Assembler Neander

    7/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    8/51

    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, oespao necessrio para indicar a prxima instruo

  • 8/3/2019 Exercicio Assembler Neander

    9/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    10/51

    Arquiteturas de 3 Endereos

    Observaes:

    Vantagens

    Elimina a necessidade de espao para o end. da prxima instruo eminstrues 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 prximainstruo 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 redundnciafonte/destino freqente

  • 8/3/2019 Exercicio Assembler Neander

    11/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    12/51

    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 osprogramas

    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

  • 8/3/2019 Exercicio Assembler Neander

    13/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    14/51

    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 anecessitar duas instrues adicionais ADD A B C -> LDA B + ADD C + STA A

  • 8/3/2019 Exercicio Assembler Neander

    15/51

    Arquiteturas de 0 Endereos

    Ex.: ?

    OP

    OP = cdigo da operao realizada

    Operandos implcitos Ex.: Armazenados em uma pilha na memria

  • 8/3/2019 Exercicio Assembler Neander

    16/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    17/51

    Matria Nova

    Computador Hipottico Neander

    IAC-2009/1

  • 8/3/2019 Exercicio Assembler Neander

    18/51

    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 doestudo de um computador hipottico

    Exemplo didtico

    Computador Neander simples e ilustrativo

  • 8/3/2019 Exercicio Assembler Neander

    19/51

    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)

  • 8/3/2019 Exercicio Assembler Neander

    20/51

    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 estuma instruo a ser executada

  • 8/3/2019 Exercicio Assembler Neander

    21/51

    Computador Neander

    modo de endereamento

    endereo

    memria

    operando

  • 8/3/2019 Exercicio Assembler Neander

    22/51

    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 implementaminstrues complementares

  • 8/3/2019 Exercicio Assembler Neander

    23/51

    Computador Neander

    Conjunto de instrues (ISA)

    end significa endereo direto STA, LDA, ADD, OR e AND: endereo de operando

    JMP, JN e JZ: endereo de desvio

  • 8/3/2019 Exercicio Assembler Neander

    24/51

    Computador Neander

    Aes executadas

    AC e PC: registradores especiais (acumulador e program counter)

    MEM(end): contedo da posio end dememria

    N e Z: cdigos de condio

    :

    atribuio

  • 8/3/2019 Exercicio Assembler Neander

    25/51

    Computador Neander

    Cdigos de condio

    Cdigos fornecidos pela Unidade Lgica eAritmtica (ULA) (usados pelas instrues JN e JZ)

    N - (negativo) : sinal do resultado 1 : resultado negativo

    0 : resultado positivo

    Z - (zero) : indica resultado igual a zero 1 : resultado igual a zero

    0 : resultado diferente de zero

  • 8/3/2019 Exercicio Assembler Neander

    26/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    27/51

    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

    instrues de dois bytes primeiro byte contm o cdigo nos 4 bits maissignificativos e

    o segundo byte contm um endereo

    Instrues de dois bytes so aquelas que fazemreferncia memria

  • 8/3/2019 Exercicio Assembler Neander

    28/51

    Computador Neander

    Formato de instrues

    endereo direto

  • 8/3/2019 Exercicio Assembler Neander

    29/51

    Computador Neander

    Exemplo de programao

    Vamos considerar, como exemplo, um programa querealiza a soma de 3 posies consecutivas da memria earmazena o resultado numa quarta posio.

    Inicialmente, devem ser escolhidas a rea de dados e area de programa, ou seja, a localizao das instrues edados na memria.

    No existem critrios rgidos para essa escolha, mas deveser observado que a rea de programa no pode invadir area de dados e vice-versa.

  • 8/3/2019 Exercicio Assembler Neander

    30/51

    Computador Neander

    Exemplo de programao

    Seja, para esse programa, escolhida uma alocao dememria de tal forma que o programa ocupe a metadeinferior da memria e os dados a metade superior, comosegue:

  • 8/3/2019 Exercicio Assembler Neander

    31/51

    Computador Neander

    Exemplo de programao

    1 Programa Neander

  • 8/3/2019 Exercicio Assembler Neander

    32/51

    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

    A codificao em linguagem de mquina correspondente a cadauma das instrues seria:

  • 8/3/2019 Exercicio Assembler Neander

    33/51

    Programao do Neander

    Observaes complementares

    Memria disponvel para programa e dadoscompreende apenas 256 posies

    Exceto onde explicitado, todos os nmeros eendereos so representados na base decimal

    Adotar a seguinte conveno:

    incio do programa - posio 0 (0H) incio da rea de dados - posio 128 (80H)

  • 8/3/2019 Exercicio Assembler Neander

    34/51

    Programao do Neander

    1 Exerccio:

    Mltiplas formas para limpar (zerar) o acumulador

    a) Atribuio direta

    b) Subtraoc) Operao lgica AND com NOT

    d) Operao lgica OR com NOTs

    e) Operao lgica OR com NOT e SOMA

  • 8/3/2019 Exercicio Assembler Neander

    35/51

    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 regressivaj) Deslocamentos sucessivos para a esquerda, at obter

    zero

  • 8/3/2019 Exercicio Assembler Neander

    36/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    37/51

    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

  • 8/3/2019 Exercicio Assembler Neander

    38/51

    Programao do Neander

    4 Exerccio:

    Comparao:

    Faa um programa que determine qual a maior de 3

    variveis positivas de 8 bits armazenadas em posiesconsecutivas de memria.

    O resultado (a maior varivel) deve aparecer na posiolivre 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)

  • 8/3/2019 Exercicio Assembler Neander

    39/51

    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 dememria.

    O resultado da soma, tambm em 8 bits, deve aparecerna primeira posio livre e overflow deve ser indicadoda seguinte forma:

    posio 130: contedo = 0H quando no ocorreu overflow

    contedo = FFH quando ocorreu overflow

  • 8/3/2019 Exercicio Assembler Neander

    40/51

    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.

  • 8/3/2019 Exercicio Assembler Neander

    41/51

    Modos de Endereamento

    Instrues lgicas e aritmticas realizamoperaes com operandos

    Operando = elemento armazenado em um

    registrador ou em uma posio de memria

    Instrues de desvio precisam saber para qualendereo 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

  • 8/3/2019 Exercicio Assembler Neander

    42/51

    Modos de Endereamento

    Direto

    Endereo de memria indicado na instruo oprprio endereo (operando/programa)

    Indireto Endereo de memria indicado na instruo

    contm o endereo (operando/programa)

    Endereo indicado um ponteiro para um endereode operando ou de programa

  • 8/3/2019 Exercicio Assembler Neander

    43/51

    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.

  • 8/3/2019 Exercicio Assembler Neander

    44/51

    endereo

    memria

    operando

    Computador Neander

    modo de endereamento

    ENDEREAMENTO DIRETO

    absoluto

    Segundo byte da instruo SEMPRE o endereo namemria correspondente ao operando ou programa

    Obs.: o registrador AC implicitamente um dos operandos em

    vrias instrues (ou seja, no precisa ser explicitado)

  • 8/3/2019 Exercicio Assembler Neander

    45/51

    Computador Neander

    modo de endereamento

    ENDEREAMENTO INDIRETO

    Neander NO SUPORTA, mas ...

    podemos emular um ponteiro carregando no segundo byte

    das instrues o endereo do operando

    Obs.: Endereo pode estar em outra posio (ex. 128)

    memria

  • 8/3/2019 Exercicio Assembler Neander

    46/51

    Exerccios Ponteiros

    A. Programa que teste se uma determinadaposio de memria (endereo fornecido naposio 128) contm o valor zero. Se sim,

    armazena 1 na pos 131. Se no, armazena 0na pos 131 (pos 129=1 e pos 130=0)

  • 8/3/2019 Exercicio Assembler Neander

    47/51

    Exerccios Ponteiros

    B. Programa que teste se uma determinadaposio de memria (endereo fornecido naposio 128) contm um valor negativo. Se

    sim, armazena 1 na pos 131. Se no,armazena 0 na pos 131 (pos 129=1 e pos130=0)

  • 8/3/2019 Exercicio Assembler Neander

    48/51

    Exerccios Ponteiros

    C. Programa que teste se uma determinadaposio de memria (endereo fornecido naposio 128) contm um valor positivo. Se

    sim, armazena 1 na pos 131. Se no,armazena 0 na pos 131 (pos 129=1 e pos130=0)

  • 8/3/2019 Exercicio Assembler Neander

    49/51

    Exerccios Ponteiros

    D. Programa que testa a memria, a partir deuma determinada posio (endereofornecido na posio 128), procurando pela

    primeira ocorrncia de um valor positivo. Aoencontrar, armazena na pos 132 o endereodo 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 forencontrado at a ltima posio de memria.

  • 8/3/2019 Exercicio Assembler Neander

    50/51

    Exerccios Ponteiros

    E. Programa que testa a memria, a partir deuma determinada posio (endereofornecido na posio 128), procurando por

    ocorrncias de valor positivo. Ao encontrar,contabiliza na pos 132 o nmero deocorrncias 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 forencontrado at a ltima posio de memria.

  • 8/3/2019 Exercicio Assembler Neander

    51/51

    Computador Neander

    Usando o simulador