exercicio assembler neander
TRANSCRIPT
-
8/3/2019 Exercicio Assembler Neander
1/51
Disciplina de Introduo
Arquitetura de ComputadoresProf. Dr. Leonardo B. Pinho
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