0% acharam este documento útil (0 voto)
0 visualizações23 páginas

Neander1

O processador Neander é um modelo didático simples com um conjunto de 11 instruções e arquitetura baseada em acumulador, permitindo acesso a até 256 posições de memória. Ele utiliza um simulador chamado NeanderWin e é descrito no livro 'Fundamentos de arquitetura de computadores' de Raul Weber. A programação em assembly é case insensitive e a tradução para código binário é realizada por um montador.

Enviado por

Gabriel Tondolo
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações23 páginas

Neander1

O processador Neander é um modelo didático simples com um conjunto de 11 instruções e arquitetura baseada em acumulador, permitindo acesso a até 256 posições de memória. Ele utiliza um simulador chamado NeanderWin e é descrito no livro 'Fundamentos de arquitetura de computadores' de Raul Weber. A programação em assembly é case insensitive e a tradução para código binário é realizada por um montador.

Enviado por

Gabriel Tondolo
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd

Processador Neander

1
Introdução
 Processador didático extremamente simples
 Autores
 Raul Weber (UFRGS) e Taisy Weber (UFRGS)
 Simulador (moodle)
 NeanderWin (free)
 [Link]
 Windows e Linux
 Livro de referência
 “Fundamentos de arquitetura
de computadores”
 Raul Fernando Weber
 Série de livros didáticos da UFRGS

2
Introdução
 Características gerais
 Barramentos de endereços/dados de 8 bits
 Modelo de Von Neumann (espaço de endereçamento único)
 Endereça até 256 (28) posições de memória (dados e programa)
 Cada endereço corresponde a um byte da memória (byte addressing)
 Registradores
 Propósito geral
 1 acumulador (AC) (8 bits) 8

 Arquitetura baseada em acumulador 8

 Específicos
 1 apontador de programa (PC) (8 bits)
 1 registrador de instruções (IR) (8 bits)
 Códigos de condição (flags)
 N: negativo (1 bit)
 Z: zero (1 bit)

3
Conjunto de instruções (ISA)
 11 instruções
 end: endereço de memória

4
Conjunto de instruções (ISA)
 11 instruções Acesso à memória

 end: endereço de memória

5
Conjunto de instruções (ISA)
 11 instruções Lógicas/aritméticas

 end: endereço de memória

6
Conjunto de instruções (ISA)
 11 instruções Desvio/Salto

 end: endereço de memória

7
Conjunto de instruções (ISA)
 Ações efetuadas por cada instrução
 MEM: memória
 AC: acumulador

Característica de
arquitetura
baseada em
acumulador.
Acumulador é
operando
implícito

8
Conjunto de instruções (ISA)
 Formato das instruções
 O Neander possui instruções de um ou dois bytes

8 bits

7 4 3 0
• Instruções de 1 byte
– NOT, NOP e HLT Código Don’t care

8 bits

• Instruções de 2 bytes 7 4 3 0

– STA, LDA, ADD, OR, Código Don’t care Byte 1


AND, JMP, JN e JZ
Endereço Byte 2

9
Conjunto de instruções (ISA)
 Formato das instruções
 O Neander possui instruções de um ou dois bytes

MEMÓRIA
Exemplo:
Montador
LDA 127 (Assembler) 0
ADD 128
1
NOT
HLT 2
3
4
5
6
7

10
Conjunto de instruções (ISA)
 Formato das instruções
 O Neander possui instruções de um ou dois bytes

MEMÓRIA
Exemplo:
Montador
LDA 127 (Assembler) 0 0010xxxx
ADD 128 LDA 127
1 01111111
NOT
HLT 2 0011xxxx
ADD 128
3 10000000
4 0110xxxx NOT
5 1111xxxx HLT As instruções
6 ocupam 6 bytes
na memória
7

11
Conjunto de instruções (ISA)
 Modos de endereçamento
 São diferentes maneiras de especificar a localização do(s)
operando(s) de uma instrução
 Neander suporta somente modo direto (absoluto)
 Instruções: LDA, STA, ADD, OR e AND
 Endereço que segue a instrução aponta diretamente a posição de
memória a ser acessada (leitura/escrita)
MEMÓRIA
Exemplo:
LDA 6 0 LDA
1 6
Endereço do operando
2
AC ← MEM(6) 3
4
5
AC ← 100
6 100
Conjunto de instruções (ISA)
 Modos de endereçamento
 Instruções de salto/desvio: JMP, JN e JZ
 Endereço que segue a instrução aponta diretamente o
endereço da próxima instrução a ser executada

MEMÓRIA
Exemplo: 0 JMP
JMP 5
1 5
LDA 45
NOT 2 LDA
STA 32 3 45
HLT
4 NOT
5 STA
6 32
7 HLT
Conjunto de instruções (ISA)
 Modos de endereçamento
 Instruções de salto/desvio: JMP, JN e JZ
 Endereço que segue a instrução aponta diretamente o
endereço da próxima instrução a ser executada

MEMÓRIA
Exemplo: 0 JMP
JMP 5 Execução:
1 5 JMP 5
LDA 45
NOT 2 LDA STA 32
STA 32 HLT
3 45
HLT
4 NOT
5 STA As instruções
ocupam 8 bytes
6 32
na memória
7 HLT
Conjunto de instruções (ISA)
 Códigos de condição (flags)
 O Neander possui flip-flops para armazenar os códigos de
condição N e Z gerados pela ULA, os quais são utilizados
pelas instruções JZ e JN
 Estes flip-flops são atualizados somente pela execução
das instruções lógicas/aritméticas (ADD, NOT, AND e OR)
e a instrução de acesso à memória LDA
 Referem-se ao valor atual do registrador acumulador (AC)
 N: negativo considerando a codificação em complemento de 2 (MSb = 1)
 As demais instruções do ISA não alteram estes flip-flops
 As instruções de salto condicional JN e JZ dependem do
valor dos flags N e Z, respectivamente
 JN: jump if N = 1 (AC < 0, codificação em complemento de 2)
 JZ: jump if Z = 1 (AC = 0)
 Caso a condição de salto seja falsa (N=0 ou Z=0), a próxima
instrução a ser executada é aquela imediatamente após a instrução
de salto (JN ou JZ)
Conjunto de instruções (ISA)
 Códigos de condição (flags)
 Instrução de desvio condicional JN

Exemplo: trecho de programa MEMÓRIA


... 9 ... Execução se N = 1:
JN 15 ...
10 JN
LDA 45 JN 15
NOT 11 15 STA 32
Execução se N = 0:
STA 32 12 LDA HLT
...
HLT
JN 15 13 45
LDA 45
14 NOT
NOT
STA 32 15 STA
HLT 16 32
17 HLT
Programação assembly
 A linguagem assembly do processador Neander
é baseada no seu ISA
 NOP, STA, LDA, ADD, OR, AND, NOT, JMP, JN, JZ, HLT
 Linguagens assembly são sempre case
insensitive
 ADD = Add = add
 A tradução do programa assembly em código
binário (linguagem de máquina) é feita pelo
montador (assembler)
 O simulador NeanderWin realiza a montagem e
a simulação de programas assembly
Programação assembly
 Exemplo 1: Versão 1
 Programa que soma o conteúdo de 3 posições de
memórias consecutivas (128, 129 e 130) e armazena
o resultado na posição seguinte (131)

LDA 128 ; Acumulador (AC) recebe conteúdo do endereço 128


ADD 129 ; Conteúdo do AC é somado ao conteúdo do endereço 129
ADD 130 ; Conteúdo do AC é somado ao conteúdo do endereço 130
STA 131 ; Valor do AC é armazenado no endereço 131
HLT ; Pára o processador
MEMÓRIA
127 ...
128 1
129 2

Comentários sintáticos (inútil) 130 3


131
132 ...
Programação assembly
 Exemplo 1: Versão 1
 Programa que soma o conteúdo de 3 posições de
memórias consecutivas (128, 129 e 130) e armazena
o resultado na posição seguinte (131)

LDA 128 ; AC ← MEM(128)


ADD 129 ; AC ← AC + MEM(129)
ADD 130 ; AC ← AC + MEM(130)
STA 131 ; MEM(131) ← AC
HLT ; Pára o processador
Comentários sintáticos são
inúteis porque são sempre
iguais, independente da
finalidade do programa
Comentários sintáticos (inútil)
Programação assembly
 Exemplo 1: Versão 1
 Programa que soma o conteúdo de 3 posições de
memórias consecutivas (128, 129 e 130) e armazena
o resultado na posição seguinte (131)

LDA 128 ; Lê o primeiro valor


ADD 129 ; Soma o primeiro valor com o segundo valor
ADD 130 ; Soma os três valores
STA 131 ; Armazena o resultado do somatório na posição seguinte
HLT ; Pára o processador

Comentários semânticos
Programação assembly
 Exemplo 1: Versão 1
 Gerar código hexadecimal relativo ao programa abaixo
 Considerar don’t care como 0s

Montador
LDA 128 (Assembler)
ADD 129
ADD 130
STA 131
HLT
Programação assembly
 Exemplo 1: Versão 1
 Gerar código hexadecimal relativo ao programa abaixo
 Considerar don’t care como 0s
MEMÓRIA
Montador 0 00100000
LDA 128 (Assembler) 20h 80h (LDA 128)
1 10000000
ADD 129
ADD 130 2 00110000
30h 81h (ADD 129)
STA 131 3 10000001
HLT
4 00110000
30h 82h (ADD 130)
5 10000010
6 00010000
10h 83h (STA 131)
7 10000011
8 11110000 F0h (HLT)
Programação assembly
 Exemplo 1: Versão 1
 NeanderWin

Você também pode gostar