Buscar

ac2_exercicios1_gabarito

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura de Computadores II
Exercícios de Revisão – Prova 1
Questão 
Faça o desenho representativo e a respectiva tabela verdade de cada uma das portas lógicas elementares Nand, Not, And, Or e Xor.
(ver anotações feitas no quadro – módulo 1)
Questão
Qual o resultado de 1 AND (0 OR (NOT (1)))?
0
Questão
Existem algumas leis que podem ser utilizadas para fazer manipulações em álgebra booleana. Alguns exemplos dessas leis são a lei da comutação, a lei associativa, a lei distributiva, a lei de DeMorgan, entre outras. Assinale V ou F nas alternativas a seguir:
( V ) (X AND Y) = (Y AND X)
( V ) (X AND (Y AND Z)) = ((X AND Y) AND Z)
( V ) (X AND (Y OR Z)) = (X AND Y) OR (X AND Z)
( V ) NOT (X AND Y) = NOT(X) OR NOT(Y)
Questão
Simplifique a expressão: NOT (NOT(X) AND NOT(X OR Y))
X OR Y
Questão
Assinale V ou F
( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas as operações AND, OR ou NOT
( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas as operações AND e NOT
( V ) Qualquer função booleana pode ser representada utilizando uma expressão que contém apenas operações NAND
( F ) No circuito combinacional a seguir, a ordem da implementação dos bits de entrada altera o resultado na saída
Questão
Sobre a linguagem HDL (Hardware Description Language – Linguagem de Descrição de Hardware), assinale V ou F
( V ) HDL é uma linguagem funcional ou declarativa, não há execução acontecendo, é uma linguagem estática
( V ) Podemos escrever as expressões HDL na ordem que quisermos
( V ) O aspecto procedural (executável) não faz parte do código HDL
Questão
Sobre barramentos, assinale V ou F
( V ) É possível manipular múltiplos bits de uma só vez utilizando barramentos
( V ) É possível manipular bits individuais em um barramento
( V ) É possível manipular apenas parte dos bits de um barramento
( V ) É possível manipular todos os bits de um barramento de uma só vez
Questão
Considere que um barramento de 16 bits contém os bits mostrados a seguir, indique qual é o bit mais significativo (MSB – Most significative bit) e qual é o bit menos significativo (LSB – least significative bit).
bit mais significativo 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 bit menos significativo
Questão
Como é possível implementar uma operação Xor do primeiro bit e do último bit de um barramento chamado info[16]? Enunciado corrigido
Xor (a=info[0] , b=info[15], out=out)
Questão
Um multiplexador 2-way nos permite selecionar uma de duas entradas e a replicar na saída. Faça o desenho representativo do Multiplexador 2-way e sua respectiva tabela verdade.
Questão
O demultiplexador distribui o único sinal de entrada em uma das possibilidades de destino. Faça o desenho representativo do Demultiplexador com 2 saídas e sua respectiva tabela verdade.
Questão
Considere o circuito combinacional a seguir. Complete o código HDL de acordo com o diagrama e indique qual porta lógica está sendo implementada:
Questão
Converta os números decimais para números binários
a. 35	100011
b. 85	1010101
c. 23	10111
Questão
Converta os números binários para números decimais
a. 1111101	125
b. 11111111	255
c. 1010111	87	
d. 10000000	128
Questão
Ache a representação em complemento de dois dos seguintes números
a. 1111 1111	0000 0001
b. 1011 0000	0101 0000
c. 1000 0000	1000 0000
d. 0000 0000	0000 0000
Questão
Faça a adição dos números binários a seguir. Indique se há ou não há overflow.
1 0 0 1 0 1 0 1
1 1 0 1 1 1 0 0
 ______________
Overflow 1 0 1 1 1 0 0 0 1
Questão
Faça a subtração dos seguintes números utilizando o complemento de dois
a. 11110011 – 11000011
Complemento de dois de 11000011 é 00111101
Basta somar:
11110011 + 00111101 = 1 00110000, descarta o carry e o resultado é + 00110000
b. 10001101 – 11111000
Complemento de dois de 11111000 é 00001000
Basta somar:
10001101 + 00001000 = 10010101 e a soma não produz carry, então, o complemento de dois de 10010101 = - 01101011
Questão
Considere que desejamos representar números em complemento de dois e que o registrador que iremos usar tem apenas 4 bits de largura para representar cada número.
a. Quantos números são possíveis de serem representados com apenas 4 bits?
16
b. Qual o intervalo de números positivos representados?
0 ... 7
0 .. ()
c. Qual o intervalo de números negativos representados?
-1 ... -8
-1 .. ()
Questão
Indique se a afirmativa é V ou F
( V ) A ULA calcula uma determinada função em dois valores de n bits fornecidos e gera um valor de n bits.
( V ) A função a ser calculada pela ULA é determinada pela combinação dos bits de controle. 
Questão
Considere a ULA representada a seguir:
Considere a tabela de funcionamento da ULA:
Considere que desejamos calcular x – y.
a. Qual deve ser a configuração dos bits de controle (zx, nx, zy, ny, f, no)?
0 1 0 0 1 1
b. Mostre, passo a passo, como o cálculo é realizado na ULA, para os números x e y a seguir.
Questão
( V ) Na lógica sequencial, a saída atual depende de entradas anteriores e, eventualmente, das entradas atuais.
( V ) Um oscilador é usado para gerar um trem de pulsos e sua saída é conectada em todos os chips sequenciais de um computador.
( V ) Um registrador é projetado para armazenar algum valor.
Questão
Considere o registrador de 1 bit representado a seguir. Desenhe qual será a saída out em cada um dos tempos discretos de 1 a 8.
Questão
O que é um Flip Flop D (DFF - Data Flip Flop ou latch)?
É uma porta sequencial elementar que propaga na saída a entrada do tempo anterior.
Questão
Quais são as diferenças entre o DFF e o Registrador de 1 bit (Bit)? (Marque todos que se apliquem)
( F ) DFF é combinacional, Bit é sequencial
( V ) DFF sempre armazena o bit de entrada, enquanto o Bit apenas armazena se o “load” for 1
( V ) DFF pode armazenar informação por uma unidade de tempo discreto, apenas, enquanto Bit pode armazenar por muitos ciclos de tempo discreto
( F ) DFF pode armazenar múltiplos bits de entrada, enquanto Bit apenas recebe um único valor
Questão
Considere um Flip Flop D. Desenhe qual será a saída out em cada um dos tempos discretos de 1 a 8.
Questão
Para que serve o PC (Program Counter – Contador de Programa)?
Indica a próxima instrução a ser executada pela CPU.
Questão
Qual das operação a seguir não é implementada pelo contador de programa?
( ) Setar o seu valor para 0
( ) Incrementar o seu valor em 1
( X ) Decrementar o seu valor em 1
( ) Setar o seu valor para um dado valor de entrada
Questão
Qual a diferença entre a largura de um registrador e o endereço de um registrador?
( ) São iguais
( ) Endereço é o mesmo para todos os registradores, largura é única para cada registrador
( X ) Largura é a quantidade de dados/bits um único registrador armazena, endereço é a localização do registrador dentro de um chip maior
( ) O endereço de um registrador é o logaritmo de sua largura
Questão
Assinale V ou F
( V ) Memória RAM (Random Access Memory) é uma sequência de registradores endereçáveis
( V ) Independentemente do tamanho da memória da RAM, qualquer registrador pode ser acessado “instantaneamente”, a uma mesma velocidade (aproximadamente)
( V ) Apenas uma posição (um registrador) da memória RAM pode acessado de cada vez
( V ) O endereçamento da memória RAM é feita por meio de uma lógica combinacional
( V ) A escrita e leitura da memória RAM é feita por meio de uma lógica sequencial (clock-based)
Questão
Considere a memória RAM a seguir. Suponha que o tamanho da RAM seja de 512 registradores.
Qual deve ser a largura do barramento de endereços k? 9
Questão
Assinale a opção verdadeira em relação à hierarquia de memória
( F ) Quanto mais perto da CPU maior o tamanho da memória
( F ) Endereços de memória longos significam acesso mais rápido
( F ) Endereços de memória longos significam acesso mais devagar
( V ) Acesso rápido está associado com memórias de tamanhos menores
Questão
Assinale V ou F
( V ) A sintaxe de uma linguagem de máquina varia de acordo com a arquitetura do computador( V ) As linguagens de máquina são projetadas com o objetivo de manipular registradores
( V ) Por padrão, o PC (Program Counter) é incrementado e a CPU executa a próxima instrução
( V ) Para manipular um registrador da memória, precisamos de um par de instruções: uma instrução para selecionar/endereçar o registrador de memória e outra instrução para manipular o registrador selecionado.
Questão
Qual das opções são verdadeiras após o programa a seguir ser executado? ENUNCIADO CORRIGIDO
Instrução 0:	@1 		// A = 1
Instrução 1:	M=A-1; JEQ 	// RAM[1]=0
// M = 0 então vai fazer o jump e vai executar instrução endereçada por A
( ) Registrador A contém o valor 0
( X ) Registrador A contém o valor 1
( ) Registrador RAM[0] contém o valor 0
( ) Registrador RAM[0] contém o valor 1
( X ) Registrador RAM[1] contém o valor 0
( ) A próxima instrução a ser executada é a instrução 0
( X ) A próxima instrução a ser executada é a instrução 1
( ) Não há informação suficiente para determinar a próxima instrução a ser executada
Questão
Utilize a arquitetura do computador visto em sala de aula e sua respectiva linguagem Assembly:
Arquitetura:
Instruções:
Resolva o problema a seguir:
RAM[2] RAM[0] + RAM[1] - 5
// implementar a soma
// RAM[2] = RAM[0] + RAM[1] - 5
// D = R0
@R0
D=M
// D = D + R1
@R1
D = D + M
// D = D - 5
@5
D = D - A
// R2 = D
@R2
M = D
(FIM)
@FIM
0; JMP
Questão
Em linguagem de máquina, podemos implementar desvios incondicionais e desvios condicionais e é comum chamarmos um desvio de jump (salto). Na linguagem Assembly vista em sala de aula, existem 7 desvios possíveis. Liste e explique esses 7 desvios/jumps.
JMP – jump incondicional
JEQ – jump se igual a zero
JNE – jump se diferente de zero
JGT – jump se maior que zero
JGE – jump se maior ou igual a zero
JLT – jump se menor que zero
JLE – jump se menor ou igual a zero
Questão
O mecanismo de controle de uma CPU adota, por padrão, a execução sequencial de instruções. Eventualmente pode acontecer de a CPU continuar executando instruções que não pertencem ao programa que está sendo executado no momento caso o código não termine de forma adequada. Qual a estratégia pode ser utilizada para contornar essa limitação?
Criar um loop infinito ao término do programa assembly:
... instruções do programa atual ...
(final)
@final
0; JMP
.. instruções do programa antigo carregado na memória ...
Unidade Lógica e Aritmética
Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 52
zx nx zy ny f no out
1 0 1 0 1 0 0
1 1 1 1 1 1 1
1 1 1 0 1 0 -1
0 0 1 1 0 0 x
1 1 0 0 0 0 y
0 0 1 1 0 1 !x
1 1 0 0 0 1 !y
0 0 1 1 1 1 -x
1 1 0 0 1 1 -y
0 1 1 1 1 1 x+1
1 1 0 1 1 1 y+1
0 0 1 1 1 0 x-1
1 1 0 0 1 0 y-1
0 0 0 0 1 0 x+y
0 1 0 0 1 1 x-y
0 0 0 1 1 1 y-x
0 0 0 0 0 0 x&y
0 1 0 1 0 1 x|y
The Hack ALU in action: Compute y-x
To cause the ALU to compute a function:
Set the control bits to one of the binary 
combinations listed in the table.
zx no
zr
nx zy ny f
ALU
ng
16 bits
16 bits
x
y 16 bits
out
control bits
Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 56
The Hack ALU operation
pre-setting
the x input
pre-setting
the y input
selecting between 
computing + or &
post-setting 
the output
Resulting
ALU output
zx nx zy ny f no out
if zx
then
x=0
if nx
then
x=!x
if zy
then
y=0
if ny
then
y=!y
if f
then out=x+y
else out=x&y 
if no
then
out=!out out(x,y)=
zx no
zr
nx zy ny f
ALU
ng
16 bits
16 bits
x
y 16 bits
out
Unidade Lógica e AritméticaNand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 52
zxnxzynyfnoout
1010100
1111111
111010-1
001100x
110000y
001101!x
110001!y
001111-x
110011-y
011111x+1
110111y+1
001110x-1
110010y-1
000010x+y
010011x-y
000111y-x
000000x&y
010101x|y
The Hack ALU in action: Compute y-xTo cause the ALU to compute a function:
Set the control bits to one of the binary 
combinations listed in the table.
zx
no
zr
nxzynyf
ALU
ng
16 bits
16 bits
x
y
16 bits
out
control bits
Nand to Tetris / www.nand2tetris.org / Chapter 2 / Copyright © Noam Nisan and Shimon Schocken Slide 56
The Hack ALU operationpre-settingthe xinputpre-settingthe yinputselecting between computing +or &post-setting the outputResultingALU outputzxnxzynyf noout
if zx
then
x=0
if nx
then
x=!x
if zy
then
y=0
if ny
then
y=!y
iff
then out=x+y
else out=x&y 
if no
then
out=!outout(x,y)=
zx
no
zr
nxzynyf
ALU
ng
16 bits
16 bits
x
y
16 bits
out
Resulting
ALU output
post-setting 
the output
selecting between 
computing + or &
pre-setting
the y input
pre-setting
the x input
outnofnyzynxzx
out(x,y)=
if no
then
out=!out
 if f
 then out=x+y
else out=x&y 
 if ny
 then
y=!y
 if zy
then
y=0
 if nx
 then
x=!x
 if zx
then
x=0
0010101
1111111
-1010111
x001100
y000011
!x101100
!y100011
-x111100
-y110011
x+1111110
y+1111011
x-1011100
y-1010011
x+y010000
x-y110010
y-x111000
x&y000000
x|y101010
Resulting
ALU output
post-setting 
the output
selecting between 
computing +or &
pre-setting
the yinput
pre-setting
the xinput
outnofnyzynxzx
out(x,y)=
if no
then
out=!out
 iff
 then out=x+y
else out=x&y 
 if ny
 then
y=!y
 if zy
then
y=0
 if nx
 then
x=!x
 if zx
then
x=0
0010101
1111111
-1010111
x001100
y000011
!x101100
!y100011
-x111100
-y110011
x+1111110
y+1111011
x-1011100
y-1010011
x+y010000
x-y110010
y-x111000
x&y000000
x|y101010
Example: compute x-y
x: 0 0 1 1 (3)
y: 0 1 1 1 (7)
Following pre-setting:
x: 1 1 0 0
y: 0 1 1 1
Computation and post-setting:
x+y: 0 0 1 1
!(x+y): 1 1 0 0 (-4)
Example:compute x-y
x: 0 0 1 1 (3)
y: 0 1 1 1 (7)
Following pre-setting:
x: 1100
y: 0111
Computation and post-setting:
x+y: 0011
!(x+y): 110 0 (-4)
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 27
1-Bit Register
out:
in:
load:
0
1
0
1
1
0
time: 1 2 3 4 5 6 7 8
“storing” “storing”“loading” “loading”Resulting behavior:
outin
load
Bit if load(t–1) then out(t) = in(t–1)
else out(t) = out(t–1)
examples
of arbitrary 
input values
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 27
1-Bit Registerout:
in:
load:
0
1
0
1
1
0
time:
1
23
45
67
8
“storing”
“storing”
“loading”
“loading”
Resulting behavior:
out
in
load
Bit
if load(t–1)then out(t)=in(t–1)
else out(t)=out(t–1)
examples
of arbitrary 
input values
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 41
DFF
1 2 3 4 5 6 7 8
0
1
1
0
time:
examples
of arbitrary 
inputs
in:
out:
out(t) = in(t– 1)outin DFF
Data Flip Flop (aka latch)
The most elementary sequential 
gate: Outputs the input in the 
previous time-step
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 41
DFF 1
23
4
5
67
8
0
1
1
0
time:
examples
of arbitrary 
inputs
in:
out:
out(t)=in(t–1)
out
in
DFF
Data Flip Flop(aka latch)
The most elementary sequential 
gate: Outputs the input in the 
previous time-step
RAM
Questão
• Suponha que o tamanho da 
RAM sejam 8 registradores. 
Qual deve ser o valor de k?
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 32
RAM
Practice question: 
Suppose that the RAM size n = 8 registers.
What should be the value of k?
Answer: 
k = log 2n
out
in
load
w
Register0
1
n-1
...
RAMn
Register
Register
address
k
Abstraction: A sequence of n addressable, w-bit registers, with addresses0 to n-1
Word width: Typically 16, 32, 64 bits (Hack computer: w = 16)
w
RAMQuestão
•Suponha que o tamanho da 
RAM sejam 8 registradores. 
Qual deve ser o valor de k?
Nand to Tetris / www.nand2tetris.org / Chapter 3 / Copyright © Noam Nisan and Shimon Schocken Slide 32
RAM Practice question: 
Suppose that the RAM size n= 8 registers.
What should be the value of k?
Answer: 
k= log
2
n
out
in
load
w
Register0
1
n-1
.
.
.
RAMn
Register
Register
address
k
Abstraction: A sequence ofnaddressable, w-bit registers, with addresses 0 to n-1
Word width: Typically16, 32, 64 bits (Hack computer: w= 16)
w
Nand to Tetris / www.nand2tetris.org / Chapter 4 / Copyright © Noam Nisan and Shimon Schocken Slide 23
Hack instructions
• A instruction
• C instruction
Instruction set
Side effects:
• RAM[A] (called M) becomes selected
• ROM[A] becomes selected
Syntax:
where const is 
a constant
@ const
Example:
@ 19
Semantics:
A ← 19
(Complete / formal syntax, later).
Cristiano Rodrigues
Nand to Tetris / www.nand2tetris.org / Chapter 4/ Copyright © Noam Nisan and Shimon Schocken Slide 23
Hack instructions
•Ainstruction
•Cinstruction
Instruction set
Side effects:
•RAM[A](called M) becomes selected
•ROM[A]becomes selected
Syntax:
whereconst is 
a constant
@const
Example:
@19
Semantics:
A←19
(Complete / formal syntax, later).
Text
Nand to Tetris / www.nand2tetris.org / Chapter 4 / Copyright © Noam Nisan and Shimon Schocken Slide 25
Hack instructions
Typical instructions:
@ constant (A← constant)
D=1
D=A
D=D+1
...
D=D+A
D=M
M=0
...
M=D
D=D+A
M=M–D
...
// D ← 2
Examples:
The game: We show some typical Hack instructions (top left), and 
practice writing code examples that use subsets of these instructions.?
Cristiano Rodrigues
Nand to Tetris / www.nand2tetris.org / Chapter 4/ Copyright © Noam Nisan and Shimon Schocken Slide 25
Hack instructionsTypical instructions:@constant
(A←constant)
D=1
D=A
D=D+1
...
D=D+A
D=M
M=0
...
M=D
D=D+A
M=M–D
...
// D←2
Examples:
The game:We show some typical Hack instructions (top left), and 
practice writing code examples that use subsets of these instructions.
?
Text
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 83
Multiplexor
sel out
0 a
1 b
abbreviated 
truth table
a b sel out
0 0 0 0
0 1 0 0
1 0 0 1
1 1 0 1
0 0 1 0
0 1 1 1
1 0 1 0
1 1 1 1
if (sel == 0) 
out = a
else 
out = b
Implementation tip
Can be implemented from the gates And, Or, Not.
CHIP Mux {
IN a, b, sel;
OUT out;
PARTS:
// Put your code here:
}
Mux.hdl
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 83
Multiplexor selout
0a
1b
abbreviated 
truth table
abselout
0000
0100
1001
1101
0010
0111
1010
1111
if (sel==0) 
out=a
else 
out=b
Implementation tip
Can be implemented from the gates And, Or,Not.
CHIP Mux {
IN a, b, sel;
OUT out;
PARTS:
// Put your code here:
}
Mux.hdl
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 84
Demultiplexor
in sel a b
0 0 0 0
0 1 0 0
1 0 1 0
1 1 0 1
if (sel == 0)
{a, b} = {in, 0}
else
{a, b} = {0, in}
• Acts like the “inverse” of a multiplexor
• Channels the single input value into one of two possible destinations
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
// Put your code here:
}
DMux.hdl
Implementation tip
Similar to the Mux implementation.
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 84
Demultiplexor inselab
0000
0100
1010
1101
if (sel==0)
{a, b} = {in, 0}
else
{a, b} = {0, in}
•Acts like the “inverse” of a multiplexor
•Channels the single input value into one of two possible destinations
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
// Put your code here:
}
DMux.hdl
Implementation tip
Similar tothe Muximplementation.
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 53
Interface / Implementation
/** Sets out = (a And Not(b)) Or (Not(a) And b)) */
CHIP Xor {
IN a, b;
OUT out;
PARTS:
Not (in=a, out=nota);
Not (in=b, out=notb);
And (a=a, b=notb, out=aAndNotb);
And (a=nota, b=b, out=notaAndb);
Or (a=aAndNotb, b=notaAndb, out=out);
}
a
Not
Not
And
And
Or
b
out
nota
notb
aAndNotb
notaAndb
out
b
a
b
a
in
in
out
out
out
out
b
a
gate
interface
gate
Implement
-ation
A logic gate has:
• One interface
• Many possible 
implementations
Nand to Tetris / www.nand2tetris.org / Chapter 1 / Copyright © Noam Nisan and Shimon Schocken Slide 53
Interface / Implementation/**Setsout=(aAndNot(b))Or(Not(a)Andb))*/
CHIPXor{
INa,b;
OUTout;
PARTS:
Not(in=a,out=nota);
Not(in=b,out=notb);
And(a=a,b=notb,out=aAndNotb);
And(a=nota,b=b,out=notaAndb);
Or(a=aAndNotb,b=notaAndb,out=out);
}
aNotNot AndAnd OrboutnotanotbaAndNotbnotaAndboutbabaininoutout outoutbagate
interface
gate
Implement
-ation
A logic gate has:
•One interface
•Many possible 
implementations

Mais conteúdos dessa disciplina