Você está na página 1de 37

Sebenta

ARQUITECTURA
DE
COMPUTADORES
2006/2007


















Paulo Matos
Curso: Engenharia Informtica
Cadeira: Arquitectura de Computadores
Ano curricular: 1
Semestre: 1
Docente: Alexandre Pereira

Programa do ano lectivo: 2004/2005


Apresentao

Esta cadeira compreende uma vertente terica e outra prtica. Do ponto de vista
terico, so abordadas as questes da estrutura e organizao dos computadores
digitais. A vertente prtica explora a programao em linguagem mquina, como
forma de ligar os conceitos tericos de base.

Objectivos

Entender o funcionamento dos computadores, de uma perspectiva microscpica at
uma perspectiva macroscpica. Reconhecimento das potencialidades e limitaes de
um computador. Entendimento da forma como interagem os diversos elementos da
estrutura/arquitectura de um computador.
No final da cadeira, os alunos devem ser capazes de: reconhecer os diversos blocos
que compem um computador digital; diferenciar os diferentes tipos de arquitecturas
possveis; identificar as limitaes do hardware e as suas consequncias ao nvel do
software. Devem tambm ser capazes de elaborar algoritmos para resolver
problemas em linguagem mquina.

Condies de obteno de aprovao disciplina

A avaliao feita por intermdio de testes escritos e trabalhos prticos.
Os alunos so aprovados com a nota final de 10 valores.

Modelo de avaliao

A avaliao tem duas componentes: avaliao terica 2 testes realizados a meio e
no fim das aulas, com uma ponderao total de 60% na nota final (30% cada);
avaliao prtica um trabalho prtico, a realizar em grupo, com uma ponderao
de 40% na nota final.

Materiais de apoio e bibliografia

Hayes, John P. "Computer Architecture and Organization", McGraw Hill, 1978

INTEL IA-32 Intel Architecture Software Developer's Manual, Volume 1: Basic
Architecture [Em linha]. Colorado Springs : INTEL, 2004. Disponvel na WWW:
<ftp://download.intel.com/design/Pentium4/manuals/25366514.pdf>.

INTEL IA-32 Intel Architecture Software Developer's Manual, Volume 2A:
Instruction Set Reference, A-M [Em linha]. Colorado Springs : INTEL, 2004.
Disponvel na WWW:
<ftp://download.intel.com/design/Pentium4/manuals/25366614.pdf>.
1

INTEL IA-32 Intel Architecture Software Developer's Manual, Volume 2B:
Instruction Set Reference, N-Z [Em linha]. Colorado Springs : INTEL, 2004.
Disponvel na WWW:
<ftp://download.intel.com/design/Pentium4/manuals/25366714.pdf>.

INTEL IA-32 Intel Architecture Software Developer's Manual, Volume 3: System
Programming Guide [Em linha]. Colorado Springs : INTEL, 2004. Disponvel na
WWW: <ftp://download.intel.com/design/Pentium4/manuals/25366814.pdf>.

PEREIRA, Alexandre Arquitectura de computadores [Em linha]. Almada :
Mediateca, Lda., 2003. Disponvel na WWW: <http://escola.mediateca.info/ac/>.

Tanenbaum, Andrew S. "Structured Computer Organization", Prentice-Hall, 1990


Contedos Programticos

SI STEMAS DE NUMERAO

N. 1 - I NTRODUO
N. 2 - CONVERSO DA BASE B PARA A BASE 10
N. 3 - CONVERSO DA BASE 10 PARA A BASE B
N. 3. 1 - Mt odo da di vi so- mul t i pl i cao
N. 3. 2 - Mt odo da subt r aco
N. 3. 3 - Capaci dade de numer ao
N. 4 - SI STEMA BI NRI O, OCTAL E HEXADECI MAL
N. 4. 1 - Rel ao ent r e as bases 8 e 2
N. 4. 2 - Rel ao ent r e as bases 16 e 2
N. 5 OPERAES ARI TMTI CAS EM BASES DI FERENTES DE 10
N. 5. 1 Adi o
N. 5. 2 Subt r aco
N. 5. 3 Mul t i pl i cao
N. 5. 4 - Di vi so

ARQUI TECTURAS DE COMPUTADORES

I . 1 - PRI NCI PAI S TI POS DE ORGANI ZAO
I . 1. 1 - MONOPROCESSAMENTO
I . 1. 2 - PROCESSAMENTO COM OPERAES MLTI PLAS
I . 1. 2. 1 - SI MD - Par al el i smo de ar r ay
I . 1. 2. 2 - MI SD - Par al el i smo de pi pel i ne
I . 1. 2. 3 - MI MD - Par al el i smo f unci onal
I . 2 - MEMRI A
I . 2. 1 - Memr i a par t i l hada
I . 2. 2 - Memr i a pr i vada
I . 3 - Redes de i nt er l i gao
I . 3. 1 - Cr ossbar
I . 3. 2 - Hi per cubo
I . 3. 3 - Hi per bus
I . 4 - ORGANI ZAO DE SI STEMAS
I . 4. 1 - Redes de comput ador es
I . 4. 2 - Comput ao di st r i bu da
I . 5 - MQUI NAS MULTI - N VEL

2
A UNI DADE CENTRAL DE PROCESSAMENTO

P. 1 - ORGANI ZAO DA CPU
P. 2 - REPRESENTAO DA I NFORMAO
P. 2. 1 - Dados no numr i cos
P. 2. 2 - Dados numr i cos
P. 2. 2. 1 - Nomencl at ur a
P. 2. 2. 2 - For mat os dos nmer os
P. 2. 2. 2. 1 - V r gul a f i xa
P. 2. 2. 2. 2 - V r gul a f l ut uant e
P. 2. 3 - For mat os de i nst r ues ( mqui na)
P. 3 - UNI DADES ARI TMTI CAS E LGI CAS
P. 3. 1 - Adi o, Subt r aco e Oper aes l gi cas
P. 3. 2 - Mul t i pl i cao
P. 3. 5 - Oper aes emv r gul a f l ut uant e
P. 4 - UNI DADES DE CONTROLE MI CROPROGRAMADAS
P. 4. 1 - I nt r oduo
P. 4. 2 - Model o de WI LKES
P. 4. 3 - Compr i ment o da mi cr oi nst r uo
P. 4. 4 - Or gani zao de uma uni dade de cont r ol e mi cr opr ogr amada
P. 4. 5 - Escr i t a de mi cr opr ogr amas
P. 4. 6 - Exempl o de CPU mi cr opr ogr amada
P. 4. 7 - O pr ocessador HP 21 MX

MEMRI A

M. 1 - HI ERARQUI A DE MEMRI AS NUM COMPUTADOR DI GI TAL
M. 2 - TECNOLOGI A
M. 2. 1 - Car act er st i cas das pr i nci pai s memr i as
M. 2. 2 - Memr i as de acesso al eat r i o
M. 2. 3 - Memr i as de acesso sequenci al
M. 3 - MEMRI A CENTRAL
M. 3. 1 - Gener al i dades
M. 3. 2 - Pr ot eces no acesso a memr i a cent r al
M. 4 - ORGANI ZAO DE MEMRI A DE ALTA VELOCI DADE
M. 4. 1 - Memr i as par al el as
M. 4. 2 - Memr i as par al el as em mul t i pr ocessador es e pr ocessador es
par al el os
M. 4. 3 - Memr i as cache
M. 4. 3. 1 - Conf i gur ao de umsi st ema commemr i a cache
M. 4. 3. 1. 1 - Or gani zao sect or i al
M. 4. 3. 1. 2 - Or gani zao de cor r espondnci a di r ect a ( Di r ect Mappi ng)
M. 4. 3. 2 - Ef i ci nci a no acesso cache
M. 4. 4 - Memr i as associ at i vas
M. 5 - PROCESSAMENTO DE ENDEREOS
M. 5. 1 - Si st ema mono- pr ogr amado
M. 5. 2 - Si st emas mul t i - pr ogr amados
M. 5. 2. 1 - Si st ema de par t i es
M. 5. 2. 2 - Pagi nao
M. 5. 2. 3 - Memr i a vi r t ual baseada empagi nao
M. 5. 2. 4 - Memr i a vi r t ual segment ada

A FAM LI A 8086/ Pent i um

X. 1 - I NTRODUO
X. 2 - A ARQUI TECTURA DOS PROCESSADORES
X. 2. 1 - Regi st os ger ai s
3
X. 2. 2 - Regi st os de segment o e apont ador de i nst r uo
X. 2. 3 - Fl ags
X. 3 - MEMRI A
X. 3. 1 - Or gani zao
X. 3. 2 Segment ao/ Pagi nao
X. 3. 3 - Ger ao de ender eos f si cos
X. 3. 4 - I mpl ement ao da St ack ( pi l ha)
X. 4 - I NSTRUES
X. 4. 1 - I nst r ues de t r ansf er nci a de dados
X. 4. 2 - I nst r ues ar i t mt i cas
X. 4. 3 - I nst r ues de mani pul ao de bi t s
X. 4. 4 - I nst r ues sobr e st r i ngs
X. 4. 5 - I nst r ues de t r ansf er nci a de cont r ol o
X. 4. 6 - I nst r ues de cont r ol o do pr ocessador
X. 5 - MODOS DE ENDEREAMENTO
X. 5. 1 - Oper andos emr egi st o e i medi at o
X. 5. 2 - Ender eament o di r ect o
X. 5. 3 - Ender eament o i ndi r ect o
X. 5. 4 - Ender eament o comr egi st o de base
X. 5. 5 - Ender eament o i ndexado
X. 5. 6 - Ender eament o i ndexado e comr egi st o de base
X. 5. 7 - Ender eament o de st r i ngs
X. 5. 8 - Ender eament o de por t os de I / O
X. 6 - PROGRAMAO EM ASSEMBLY 386/ Pent i um
X. 6. 1 - Def i ni o de dados
X. 6. 2 - Di r ect i vas
X. 6. 3 - Pr ocedi ment os
X. 6. 4 St r i ngs


Software:
Sistema operativo Linux
NASM Assemblador do S. O. Linux (includo no sistema)

Hardware:
Computadores
4
Si st emas de numer ao embase 2, 8 e 16
Conver so de base ( b) par a base ( 10)

325
( 10)
= 3 x 100 + 2 x 10 + 5 x 1 = 325
( 10)



10
2
10
1
10
0
3 2 5



Cont agemembase 10

0
1
2
3
4
5
6
7
8
9
10
11


Cont agemembase 2

0
1
10
11
100
101
110




2
2
2
1
2
0
1 0 1
Alfabeto em base 2 ={0,1}
Alfabeto em base 10 ={0,1,2,3,4,5,6,7,8,9}
101
( 2)
= 1 x 2
2
+ 0 x 2
1
+ 1 x 2
0
= 4 + 0 + 1 = 5
( 10)


Exer c ci o:
5
Conver t er 10011101
( 2)
par a base 10

Sol uo:




2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
1 0 0 1 1 1 0 1
10011101
( 2)
= 1 x 2
7
+ 0 x 2
6
+ 0 x 2
5
+ 1 x 2
4
+ 1 x 2
3

+ 1 x 2
2
+ 0 x 2
1
+ 1 x 2
0

= 2
7
+ 2
4
+ 2
3
+ 2
2
+ 2
0

= 128 + 16 + 8 + 4 + 1
= 157
( 10)



Cont agemembase 8

0
1
2
3
4
5
6
7
10
11
12
13




8
2
8
1
8
0
5 2 4
Alfabeto em base 8 ={0,1,2,3,4,5,6,7}

524
( 8)
= 5 x 8
2
+ 2 x 8
1
+ 4 x 8
0
= 320 + 16 + 4 = 340
( 10)


Cont agemembase 16

0
Alfabeto em base 16 ={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
1
2
3
4
5
6
6
7
8
9
A
B
C
D
E
F
10
11
12
13




16
2
16
1
16
0
2 E 3
2E3
( 16)
= 2 x 16
2
+ 14 x 16
1
+ 3 x 16
0
= 512 + 224 + 3 = 739
( 10)


Conver so de base ( 10) par a base ( b)

Nmer o embase ( b) : a
n
a
n- 1
a
n- 2
a
2
a
1
a
0

O mesmo nmer o embase 10:
a
n
x b
n
+ a
n- 1
x b
n- 1
+ a
n- 2
x b
n- 2
+ a
2
x b
2
+ a
1
x b
1
+ a
0
x b
0

Di vi di r os coci ent e sucessi vament e por b, obt m- se
os a
i
.

( a
n
b
n
+ a
n- 1
b
n- 1
+ a
n- 2
b
n- 2
+ a
2
b
2
+ a
1
b
1
+ a
0
b
0
) / b

Resul t ado 1 di vi so:
Coci ent e: a
n
b
n- 1
+ a
n- 1
b
n- 2
+ a
n- 2
b
n- 3
+ a
2
b
1
+ a
1
b
0
Rest o: a
0

Resul t ado 2 di vi so:
Coci ent e: a
n
b
n- 2
+ a
n- 1
b
n- 3
+ a
n- 2
b
n- 4
+ a
2
b
0
Rest o: a
1


Exempl o: Conver t er par a base 2 o nmer o 165
( 10)


7

165 2
05 82 2
1 02 41 2
0 01 20 2
1 00 10 2
0 0 5 2
1 2 2
0 1





Resul t ado: 10100101
( 2)


Exer c ci os:
Conver t er o nmer o 1335
( 10)
par a base 2, 8 e 16.

1335 2
13_ 667 2
15 06_ 333 2
1 07 13_ 166 2
1 13 06 83 2
1 0 03 41 2
1 01 20 2
1 00 10 2
0 0 5 2
1 2 2
0 1


Embase 2: 10100110111
( 2)

1335 8
53_ 166 8
55 06 20 8
7 6 4 2


Embase 2: 2467
( 8)

1335 16
055 83 16
07 03 5

8

Embase 16: 537
( 16)


Conver ses ent r e base 2 e bases 8 e 16
Conver so ent r e base 2 e 8

a
3n+2
2
3n+2
+a
3n+1
2
3n+1
+a
3n
2
3n
+a
5
2
5
+a
4
2
4
+a
3
2
3
+a
2
2
2
+a
1
2
1
+a
0
2
0

J unt ar emgr upos de 3 par cel as, a comear pel a
di r ei t a:
(a
3n+2
2
3n+2
+a
3n+1
2
3n+1
+a
3n
2
3n
) +(a
5
2
5
+a
4
2
4
+a
3
2
3
) +(a
2
2
2
+a
1
2
1
+a
0
2
0
)

Emcada gr upo, f act or i zar pot nci as de 2:
(a
3n+2
2
2
+a
3n+1
2
1
+a
3n
2
0
).2
3n
+(a
5
2
2
+a
4
2
1
+a
3
2
0
).2
3
+(a
2
2
2
+a
1
2
1
+a
0
2
0
).2
0

Passar pot nci as de 2 f act or i zadas a pot nci as de 8:
(a
3n+2
2
2
+a
3n+1
2
1
+a
3n
2
0
).8
n
+(a
5
2
2
+a
4
2
1
+a
3
2
0
).8
1
+(a
2
2
2
+a
1
2
1
+a
0
2
0
).8
0

Somar as par cel as dent r o de par nt esi s:
x
n
8
n
+x
1
8
1
+x
0
8
0

emque x
i
umnmer o de 0 a 7, segundo a t abel a:

( 8) ( 2)
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

Conver t er de base 2 par a base 8: 11011010110
( 2)

011 011 010 110
3 3 2 6

11011010110
( 2)
= 3326
( 8)


Par a conver t er de base 2 par a base 16, usar a
t abel a:
( 16) ( 2)
0 0000
9
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Conver t er de base 2 par a base 16: 11011010110
( 2)

0110 1101 0110
6 D 6

11011010110
( 2)
= 6D6
( 16)

Conver t er de base 16 par a base 8: AB9C3
( 16)

Passar pr i mei r o par a base 2:
A B 9 C 3
1010 1011 1001 1100 0011

AB9C3
( 16)
= 10101011100111000011
( 2)

Conver t er de base 2 par a base 8:
010 101 011 100 111 000 011
2 5 3 4 7 0 3

AB9C3
( 16)
= 2534703
( 8)


Nmer os f r acci onr i os
Conver t er base ( b) par a base ( 10)

165, 23
( 10)
= 1 x 10
2
+ 6 x 10
1
+ 5 x 10
0
+ 2 x 10
-1
+ 3 x 10
-2


10
2
10
1
10
0
10
- 1
10
- 2
1 6 5 2 3

10

Conver t er par a base 10: 10110, 101
( 2)

125 , 0
8
1
2
1
2
3
3
= = =


Lembr ar que: b
- n
= 1/ b
n

10110, 101
( 2)
= 2
4
+ 2
2
+ 2
1
+ 2
- 1
+ 2
- 3

= 16 + 4 + 2 + 0, 5 + 0, 125
= 22, 625
( 10)



Conver t er par a base 10: 375, 34
( 8)

375, 34
( 8)
= 3 x 8
2
+ 7 x 8
1
+ 5 x 8
0
+ 3 x 8
- 1
+ 4 x 8
- 2

= 192 + 56 + 5 + 0, 375 + 0, 0625
375 , 0
8
3
8
3
8 3
1
1
= = =

0625 , 0
16
1
64
4
8
4
8 4
2
2
= = = =




= 253, 4375
( 10)





Conver t er par a base 10: 1A7, C8
( 16)

1A7, C8
( 16)
= 1 x 16
2
+ 10 x 16
1
+ 7 x 16
0
+ 12 x 16
-1
+ 8 x 16
-2
= 256 + 160 + 7 + 0, 75 + 0, 03125
= 423, 78125
( 10)
75 , 0
4
3
16
12
16 12
1
1
= = =

03125 , 0
32
1
2 16
1
16
8
16 8
2
2
= =

= =










Conver t er base ( 10) par a base ( b)

Nmer o embase ( b) : 0, a
- 1
a
- 2
a
- n

O mesmo nmer o embase 10:
a
- 1
x b
- 1
+ a
- 2
x b
- 2
+ + a
- n
x b
- n

Mul t i pl i car a par t e f r acci onr i a dos pr odut os
sucessi vament e por b, obt m- se os a
i
.

( a
- 1
x b
- 1
+ a
- 2
x b
- 2
+ + a
- n
x b
- n
) x b

Resul t ado da 1 mul t i pl i cao:
a
- 1
x b
0
+ a
- 2
x b
- 1
+ + a
- n
x b
- n+1
11

O que cor r esponde ao nmer o:
a
- 1
, a
- 2
a
- n

Depoi s mul t i pl i ca- se apenas a par t e f r acci onr i a:
0, a
- 2
a
- n

Ou sej a:
( a
- 2
x b
- 1
+ + a
- n
x b
- n+1
) x b

Resul t ado da 2 mul t i pl i cao:
a
- 2
x b
0
+ a
- 3
x b
- 1
+ + a
- n
x b
- n+2

O que cor r esponde ao nmer o:
a
- 2
, a
- 3
a
- n

Por f i mconst r i - se o nmer o, combase nos a
i
.

Resul t ado f i nal : 0, a
- 1
a
- 2
a
- n


Exempl o: Passar 0, 5625
( 10)
par a base 2

0, 5625 x 2 = 1, 125 ext r ai - se um1 ( i nt ei r o)
0, 125 x 2 = 0, 25 ext r ai - se um0 ( i nt ei r o)
0, 25 x 2 = 0, 5 ext r ai - se um0 ( i nt ei r o)
0, 5 x 2 = 1, 0 ext r ai - se um1 ( i nt ei r o)

0, 5625
( 10)
= 0, 1001
( 2)


Exer c ci o: Passar 12, 3125
( 10)
par a base 2

12 2
0 6 2
0 3 2
1 1


12
( 10)
= 1100
( 2)

0, 3125 x 2 = 0, 625
0, 625 x 2 = 1, 25
0, 25 x 2 = 0, 5
0, 5 x 2 = 1, 0

12, 3125
( 10)
= 1100, 0101
( 2)

12
Conver t er base ( 2) par a base ( 8) ou ( 16) e vi ce- ver sa

Conver t er par a base 8: 11101, 10101
( 2)

011 101 101 010
3 5 5 2

11101, 10101
( 2)
= 35, 52
( 8)


Conver t er par a base 16: 11101, 10101
( 2)

0001 1101 1010 1000
1 D A 8

11101, 10101
( 2)
= 1D, A8
( 16)


13
Soma embase 10

1 1
Tr anspor t e da col una ant er i or
1 5 6
( 10)
+ 6 7
( 10)
2 2 3
( 10)


Soma embase 2

Tabel a de soma de 2 bi t s

0 0 1 1
+ 0 + 1 + 0 + 1
0 1 1 1 0
Vai um (a somar
coluna seguinte)




Exempl o:

1 1 1
Tr anspor t e da col una ant er i or
1 0 1 1
( 2)
2
3
+2
1
+2
0
= 11
( 10)
+ 1 0 1
( 2)
2
2
+2
0
= 5
( 10)
1 0 0 0 0
( 2)
2
4
= 16
( 10)

Exer c ci o:

1 1 1 1 1
Tr anspor t e da col una ant er i or
1 0 1 0 1 1
( 2)
2
5
+2
3
+2
1
+2
0
= 43
( 10)
+ 1 1 1 0 1
( 2)
2
4
+2
3
+2
2
+2
0
= 29
( 10)
1 0 0 1 0 0 0
( 2)
2
6
+2
3
= 72
( 10)



Soma embase 8

1 1
Tr anspor t e da col una ant er i or
1 5 6
( 8)
+ 6 7
( 8)
2 4 5
( 8)




14
Soma embase 16

1 1
Tr anspor t e da col una ant er i or
1 A E
( 16)
+ 6 7
( 16)
2 1 5
( 16)


Subt r aco embase 10

1
Tr anspor t e da col una ant er i or
1 5 6
( 10)
- 3 7
( 10)
1 1 9
( 10)


Subt r aco embase 2

Tabel a da subt r aco de 2 bi t s

0 0 1 1
- 0 - 1 - 0 - 1
0 1 1 1 0
Vai um (a subtrair na
coluna seguinte)




Exempl o:

1
Tr anspor t e da col una ant er i or
1 0 1 1
( 2)
2
3
+2
1
+2
0
= 11
( 10)
- 1 0 1
( 2)
2
2
+2
0
= 5
( 10)
0 1 1 0
( 2)
2
2
+2
1
= 6
( 10)

Exer c ci o:

1 1 1
Tr anspor t e da col una ant er i or
1 0 1 0 1 1
( 2)
2
5
+2
3
+2
1
+2
0
= 43
( 10)
- 1 1 1 0 1
( 2)
2
4
+2
3
+2
2
+2
0
= 29
( 10)
0 0 1 1 1 0
( 2)
2
3
+2
2
+2
1
= 14
( 10)





15
Subt r aco embase 8

1
Tr anspor t e da col una ant er i or
1 5 6
( 8)
1x8
2
+5x8
1
+6x8
0
= 110
( 10)
- 6 4
( 8)
6x8
1
+4x8
0
= 52
( 10)
0 7 2
( 8)
7x8
1
+2x8
0
= 58
( 10)

Exer c ci o:

1 1 1 1
Tr anspor t e da col una ant er i or
1 0 0 5 6
( 8)
- 2 7 5 7
( 8)
0 5 0 7 7
( 8)



Subt r aco embase 16

1 1
Tr anspor t e da col una ant er i or
A 5 3
( 16)

- 5 4
( 16)

9 F F
( 16)


Exer c ci o:
1 1 1
Tr anspor t e da col una ant er i or
A A 0 3
( 16)

- B F 4
( 16)

9 E 0 F
( 16)



Mul t i pl i cao embase 10

Exempl o:

1 5 4
( 10)
x 2 3
( 10)
4 6 2
+ 3 0 8
3 5 4 2

154 x 23 =
154 x ( 20 + 3) =
154 x 20 + 154 x 3 =
154 x 2 x 10 + 154 x 3

16

Mul t i pl i cao embase 2

Exempl o:

1 0 1 1
( 2)
2
3
+2
1
+2
0
= 11
( 10)
x 1 0 1
( 2)
2
2
+2
0
= 5
( 10)
1 0 1 1
0 0 0 0
1 0 1 1
1 1 0 1 1 1 2
5
+2
4
+2
2
+2
1
+2
0
= 55
( 10)

Exer c ci o:

1 1 1 0 1 1
( 2)
x 1 0 1 1 1
( 2)
1 1 1 0 1 1
1 1 1 0 1 1
1 1 1 0 1 1
0 0 0 0 0 0
1 1 1 0 1 1
1 0 1 0 1 0 0 1 1 0 1
1 1 1
1
1
1
1
1
1
1
1
1 1 1
Transportes da coluna anterior


Di vi so embase 10

Exempl o:

154 13
- 13_ 11
24
- 13
11








17
Di vi so embase 2

Exempl o:

1011101 110
- 110___ 1111
01011__
- 110__
01010_
- 110_
01001
- 110
0011

Exer c ci o:

1100011 1011
- 1011___ 1001
0001011
- 1011
0000





18
Uso explcito da STACK


FFFF


15AB
102C






0

Memria

mov eax, 15AB
mov ebx, 102C

push eax
push ebx

pop ecx
; ecx f i ca com102C
pop edx
; edx f i ca com15AB
ESP
; func01



ret


Uso implcito da STACK

CALL usa PUSH
RET usa POP


; programa


call func01



CALL faz push do endereo de retorno e salta para a funo.
RET faz pop do endereo de retorno e volta ao programa.


Instrues aritmticas

Adio

V1 dd 8

mov eax, 23
mov ebx, 7
add eax, ebx ; eax fica com o valor 30
add ebx, -2 ; ebx fica com 5
add [V1], 4 ; V1 fica com 12
add eax, [V1] ; eax fica com 42

19

adc eax, ebx ; equivalente a: eax =eax +ebx +CF

inc eax ; equivalente a: eax =eax +1


Subtraco

sbb eax, ebx ; equivalente a: eax =eax ebx CF

dec eax ; equivalente a: eax =eax 1

neg eax ; equivalente a: eax = eax


Multiplicao

Os registos eax e edx so usados implicitamente.
eax multiplicador
edx : eax resultado

Neste exemplo o ebx o multiplicando (mas podia ser outro registo qualquer):

mov eax, 4
mov ebx, 7
mul ebx

O resultado fica em edx : eax.
Neste caso, ficam com os seguintes valores:
edx 0
eax 28


Diviso

Os registos eax e edx so usados implicitamente.
edx : eax dividendo
eax cociente
edx resto

Neste exemplo o ebx o divisor (mas podia ser outro registo qualquer):

mov edx, 0
mov eax, 35
mov ebx, 8
div ebx

O resultado desta diviso :
eax 4
edx 3
20


CBW Converte byte em word

mov al, 5
mov bx, 1024
add bx, al ; erro! registos de tamanhos diferentes

mov al, 5
mov bx, 1024
cbw
add ax, bx

J ustificao:
O nmero 5 representado, em binrio com 8 bits, da seguinte forma: 11111011

5=00000101
-5=11111010 (em complemento para 1)
-5=11111011 (em complemento para 2)



O mesmo nmero 5 representado, em binrio com 16 bits, da seguinte forma:
1111111111111011

A instruo CBW converte o nmero 11111011 em 1111111111111011.


Instrues de manipulao de bits

al 10110101

bl 01100011
and al , bl 00100001
or al , bl 11110111
xor al , bl 11010110
not al 01001010
shl bl , 1 11000110
O bi t mai s esquer da per de- se e
ent r a 0 pel a di r ei t a
shl al , 1 01101010
O bi t mai s esquer da per de- se e
ent r a 0 pel a di r ei t a
shr al , 1 01011010
O bi t mai s di r ei t a per de- se e
ent r a 0 pel a esquer da
sar al , 1 11011010
O bi t mai s di r ei t a per de- se e
ent r a o si nal pel a esquer da
sar bl , 1 00110001
O bi t mai s di r ei t a per de- se e
ent r a o si nal pel a esquer da
r ol bl , 1 11000110
O bi t que sai pel a esquer da
ent r a pel a di r ei t a
r or al , 1 11011010
O bi t que sai di r ei t a pel a ent r a
pel a esquer da
r cr bl , 1 00110001
Supor que CF=0 ant es da
i nst r uo. No f i nal , f i ca CF=1

21
Explicao do rcr bl,1:

bl 01100011

0 CF

Aps instruo

bl 00110001

1 CF


22
Instrues Assembly para manipular strings

Byte Word Doubleword
movsb
scasb
cmpsb
lodsb
stosb
movsw
scasw
cmpsw
lodsw
stosw
movsd
scasd
cmpsd
lodsd
stosd

ASCII cdigo de 7 bits, estendido a 8 bits
ASCII American Standard Committee for Information Interchange

UNICODE UTF-8
UTF-16
UTF-32

Com os prefixos REP possvel executar as instrues anteriores repetidas vezes.

Exemplo: rep movsb
Move um string completa da origem para o destino

Completa n de repeties colocado no ECX
Origem endereo que est em ESI
Destino endereo que est em EDI

Funcionamento das instrues lodsb e stosb

Exemplo:

f r ase db Ol Mundo
dest i no r esb 80


O l M u n d o

l odsb
st osb
AL
esi
edi










Se a flag de direco (DF) for igual a 0:
Cada vez que o l odsb executado, o registo esi incrementado 1 unidade.
Cada vez que o st osb executado, o registo edi incrementado 1 unidade.
Se a flag de direco (DF) for igual a 1:
Cada vez que o l odsb executado, o registo esi decrementado 1 unidade.
Cada vez que o st osb executado, o registo edi decrementado 1 unidade.
23
Controlo de fluxo

Condicional tipo IF

Exemplo: calcular o valor absoluto de um nmero

mov eax, numer o
cmp eax, 0
j ge posi t i vo
neg eax
posi t i vo:
mov numer o, eax


Iterao tipo WHILE

Exemplo: somar os 10 primeiros nmeros

mov soma, 0
mov eax, 1
ci cl o:
cmp eax, 10
j g f i m
add soma, eax
i nc eax
j mp ci cl o
f i m:


Iterao tipo FOR

Exemplo: o mesmo

mov soma, 0
mov ecx, 10
ci cl o:
add soma, ecx
l oop ci cl o


24
Ler nmer os do t ecl ado

Ler nmer os emhexadeci mal

Os nmer os so l i dos do t ecl ado como sequnci as de
car act er es ( st r i ngs de t ext o)

Tabel a ASCI I
S mbol o
Cdi go
( 10)
Cdi go
( 16)
0 48 30
1 49 31
2 50 32
3 51 33

9 57 39

A 65 41
B 66 42
C 67 43

Z 90 5A

a 97 61
b 98 62
c 99 63

z 122 7A


Ex:
Se di gi t ar o nmer o A32B50FE no t ecl ado, o pr ogr ama
r ecebe- o como st r i ng, ou sej a:
01000001 00110011 00110010 01000010 00110101 00110000
01000110 01000101

No ent ant o, quer amos r eceb- l o como o nmer o A32B50FE
( 16)

ou 1010 0011 0010 1011 0101 0000 1111 1110
( 2)


Pr ocessament o da ent r ada ( t r ansf or mar t ext o no nmer o
cor r espondent e)

Recebemos ( A ) 01000001 mas quer emos 1010
Recebemos ( 3 ) 00110011 mas quer emos 0011
Recebemos ( 2 ) 00110010 mas quer emos 0010
Recebemos ( B ) 01000010 mas quer emos 1011

Par a os nmer os: descar t ar os 4 bi t s mai s si gni f i cat i vos:

Recebemos ( 3 ) 00110011 0011
Recebemos ( 2 ) 00110010 0010

Par a as l et r as: descar t ar os 4 bi t s mai s si gni f i cat i vos e
somar 9:

Recebemos ( A ) 01000001 0001
( 2)
+ 9
( 10)
= 1010
( 2)
Recebemos ( B ) 01000010 0010
( 2)
+ 9
( 10)
= 1011
( 2)

25
Commi nscul as:

Recebemos ( a ) 01100001 0001
( 2)
+ 9
( 10)
= 1010
( 2)
Recebemos ( b ) 01100010 0010
( 2)
+ 9
( 10)
= 1011
( 2)


Pr ogr ama emAssembl y par a ef ect uar est a conver so:

Cada s mbol o ( l et r a/ car ct er ) pr ocessado vai ser guar dado
no edx:

l i nha A32B50FE









edx

01000001
O
1010
O
O
O
O
O
O
00110011
0011
O




sect i on . dat a
num dd 0
num_l i dos dd 0

sect i on . bss
l i nha r esb 9

sect i on . t ext

; l er nmer o do t ecl ado par a a var i vel l i nha
; decr ement ar num_l i dos numa uni dade
; conver t er " l i nha" par a " num"

xor edx, edx ; apaga edx
xor eax, eax ; apaga eax
mov esi , l i nha
cl d
mov ecx, [ num_l i dos]
conver t e:
l odsb
cmp al , ' 9'
j be al gar i smo
add al , 9
al gar i smo:
and al , 0xF
shl edx, 4
or edx, eax
l oop conver t e
mov [ num] , edx


26
Escr ever nmer os no ecr

Escr ever nmer os emhexadeci mal

Os nmer os so t mque ser escr i t os como sequnci as de
car act er es ( st r i ngs de t ext o)

Ex:
Supondo que t emos o nmer o 0xA32B50FE no pr ogr ama e que o
quer emos i mpr i mi r no ecr , t emos que o t r ansf or mar na
st r i ng cor r espondent e.
Temos o nmer o A32B50FE
( 16)
ou 1010 0011 0010 1011 0101
0000 1111 1110
( 2)

Mas quer emos:
01000001 00110011 00110010 01000010 00110101 00110000
01000110 01000101

Pr ocessament o da sa da ( t r ansf or mar nmer o no t ext o
cor r espondent e)

Recebemos ( A) 1010 mas quer emos 01000001
Recebemos ( 3) 0011 mas quer emos 00110011
Recebemos ( 2) 0010 mas quer emos 00110010
Recebemos ( B) 1011 mas quer emos 01000010

Par a os nmer os: adi ci onar os 4 bi t s mai s si gni f i cat i vos:

Recebemos ( 3) 0011 00110011
Recebemos ( 2) 0010 00110010

Par a as l et r as: subt r ai r 9 e adi ci onar os 4 bi t s mai s
si gni f i cat i vos:

Recebemos ( A) 1010
( 2)
- 9
( 10)
= 0001
( 2)
01000001
Recebemos ( B) 1011
( 2)
- 9
( 10)
= 0010
( 2)
01000010


Pr ogr ama emAssembl y par a ef ect uar est a conver so:

Cada 4 bi t s do edx vo dar or i gema uma l et r a/ s mbol o:

edx cont mA32B50FE
1010 0011 0010 1011 0101 0000 1111 1110
ou
A 3 2 B 5 0 F E






l i nha
letra
somar 00110000
algarismo
O
O
somar 01000000
(2)
9
(10)
O
A 3 2 B 5 0 F E


27
sect i on . dat a
num dd 0xA32B50FE

sect i on . bss
l i nha r esb 9

sect i on . t ext

mov eax, ds
mov es, eax
. . .
mov edi , l i nha
cl d
mov edx, [ num]
mov ecx, 8
conver t e2:
r ol edx, 4
mov eax, edx
and eax, 0xF
cmp eax, 9
j be al gar i smo2
sub eax, 9
add eax, 0x40
j mp pr oxi mo
al gar i smo2:
add eax, 0x30
pr oxi mo:
st osb
l oop conver t e2

; i mpr i mi r st r i ng
; sai r do pr ogr ama

28
Funes emASM

Convenes de chamada de f unes e passagemde par met r os


Supor a segui nt e f uno emC, e r espect i va chamada:

i nt soma ( i nt x, i nt y) {
r et ur n x + y;
}

. . .

r es = soma( n1, n2) ;

A f uno soma emC compi l ada par a o segui nt e cdi go
mqui na:
esp





Stack



n2
n1
ret
ebp



4 bytes

n1 dd 5
n2 dd 3

soma:
push ebp ; esp=pos. 5
mov ebp, esp
; Vou buscar o n1
mov eax, dwor d[ ebp+8]
; Vou buscar o n2
add eax, dwor d[ ebp+12]
pop ebp ; esp=pos. 4
r et ; esp=pos. 3


Os par met r os da f uno ( n1, n2) so
passados por st ack

push dwor d[ n2] ; esp=pos. 2
push dwor d[ n1] ; esp=pos. 3
cal l soma ; esp=pos. 4
add esp, 8 ; esp=pos. 1
mov [ r es] , eax





Supor a segui nt e f uno emPascal , e r espect i va chamada:

f unct i on soma ( x, y: i nt eger ) : i nt eger
begi n
soma : = x + y;
end;

. . .

r es : = soma( n1, n2) ;

A f uno soma emPascal compi l ada par a o segui nt e
cdi go mqui na:
esp


Stack



n1
29

n1 dd 5
n2 dd 3

soma:
push ebp ; esp=pos. 5



mov ebp, esp
; Vou buscar o n1
mov eax, dwor d[ ebp+12]
; Vou buscar o n2
add eax, dwor d[ ebp+8]
pop ebp ; esp=pos. 4
r et 8 ; esp=pos. 1
4 bytes

Os par met r os da f uno ( n1, n2) so
passados por st ack

push dwor d[ n1] ; esp=pos. 2
push dwor d[ n2] ; esp=pos. 3
cal l soma ; esp=pos. 4
mov [ r es] , eax



Funes emC compar met r os var i vei s:

i nt pr i nt f ( char * f or mat o, . . . ) ;

pr i nt f ( %d- %d- %d, di a, mes, ano) ;


Stack - C
Parmetros carregados da
direita para a esquerda


ano
mes
dia
formato
ret
ebp


Sabemos que o formato o
1 parmetro



Stack PASCAL
Parmetros carregados da
esquerda para a direita


formato
dia
mes
ano
ret
ebp


No sabemos onde est o
formato
30
Mul t i pl i cao a 4 bi t s no ci r cui t o mul t i pl i cador

Mul t i pl i cando: 1011
Mul t i pl i cador : 0101

A Q Cont M Coment r i os
0000 0101 0 1011
Q( 0) =0? No A=A+M
1011 0101 0 Ri ght Shi f t ( A, Q)
0101
X
1010 0 Cont =3? No Cont ++
Entra 0
0101 1010 1
Q( 0) =0? Si m Ri ght Shi f t ( A, Q)
0010 1101 1
Cont =3? No Cont ++
0010 1101 2
Q( 0) =0? No A=A+M
1101 1101 2 Ri ght Shi f t ( A, Q)
0110 1110 2
Cont =3? No Cont ++
0110 1110 3
Q( 0) =0? Si m Ri ght Shi f t ( A, Q)
0011 0111 3
Cont =3? Si m FI M
0011 0111


Cl cul os auxi l i ar es:
M 1 0 1 1
( 2)
A + 0 0 1 0
( 2)
A+M 1 1 0 1
( 2)


Exer c ci o: Mul t i pl i car os segui nt es nmer os a 4 bi t s
Mul t i pl i cando: 1001
Mul t i pl i cador : 0110

A Q Cont M Coment r i os
0000 0110 0 1001
Q( 0) =0? Si m Ri ght Shi f t ( A, Q)
0000 0011 0
Cont =3? No Cont ++
0000 0011 1
Q( 0) =0? No A=A+M
1001 0011 1 Ri ght Shi f t ( A, Q)
0100 1001 1
Cont =3? No Cont ++
0100 1001 2
Q( 0) =0? No A=A+M
1101 1001 2 Ri ght Shi f t ( A, Q)
0110 1100 2
Cont =3? No Cont ++
0110 1100 3
Q( 0) =0? Si m Ri ght Shi f t ( A, Q)
0011 0110 3
Cont =3? Si m FI M
0011 0110 Resul t ado f i nal


31
Repr esent ao de nmer os negat i vos

Os nmer os negat i vos podemser r epr esent ados segundo um
dos f or mat os segui nt es ( ent r e out r os que ver emos
f r ent e) :
Si nal e mdul o
Compl ement o par a 1
Compl ement o par a 2


Si nal e mdul o

O bi t mai s si gni f i cat i vo o si nal :
0 r epr esent a o si nal +
1 r epr esent a o si nal -

Exempl o comnmer os de 4 bi t s:

0101 o nmer o +5, o pr i mei r o 0 o si nal ( +) e 101
val e 5 no si st ema bi nr i o de cont agemnat ur al
1101 o nmer o - 5, o pr i mei r o 1 o si nal ( - ) e 101
val e 5 no si st ema bi nr i o de cont agemnat ur al


Pr obl emas:
O 0 t emduas r epr esent aes: 0000 e 1000, ou sej a ( +0 e - 0)


Compl ement o par a 1

Os negat i vos obt m- se a par t i r dos posi t i vos, t r ocando os
bi t s uma um( de 0 par a 1, e de 1 par a 0) .

Exempl os:

0101 posi t i vo e val e +5
1010 negat i vo e val e - 5

01110011 posi t i vo e val e +115 ( si st ema bi nr i o de
cont agemnat ur al )
10001100 negat i vo e val e - 115

Quando o bi t mai s si gni f i cat i vo 0, o nmer o posi t i vo.
Quando o bi t mai s si gni f i cat i vo 1, o nmer o negat i vo.

Exer c ci o:
Quant o val e o nmer o, de 8 bi t s, 11100110, que est em
compl ement o par a 1?

Resol uo:
O nmer o 11100110 negat i vo, l ogo vamos obt er o seu
si mt r i co: 00011001, que posi t i vo e val e 25
( 10)
.
Sendo assi m, 11100110 val e - 25
( 10)
.

Pr obl emas:
32
O 0 t emduas r epr esent aes: 0000 e 1111, ou sej a ( +0 e - 0)

Desvant agens:
Ao somar - se ou subt r ai r - se nmer os emC2, o r esul t ado NO
veml ogo cor r ect o: necessr i o cor r i gi - l o somando o
Car r y ( vai - um) .

Ex. : Somar - 2 com- 4

1101 - 2 emC1
+1011 - 4 emC1
11000
+ 1 Soma o car r y
1001 - 6 emC1
Est e 1 ( car r y) t em
que ser somado ao
r esul t ado.


Compl ement o par a 2

O compl ement o par a 2, de umnmer o, obt m- se
compl ement ando o nmer o par a 1 e somando- l he 1.

Quando o bi t mai s si gni f i cat i vo 0, o nmer o posi t i vo.
Quando o bi t mai s si gni f i cat i vo 1, o nmer o negat i vo.

Exempl o, com4 bi t s:

O nmer o 0101 posi t i vo e val e 5.
O seu compl ement o par a 2 :

0101 5
( 2)
1010 C1( 5)
+ 1
1011 C2( 5) , ou sej a, - 5


Exer c ci o:
Sendo 1011 umnmer o negat i vo emcompl ement o par a 2,
i ndi que quant o val e ( sugest o: obt enha o seu si mt r i co) .

1011
0100 C1
+ 1
0101 C2( 1011)

Respost a:
Se o compl ement o par a 2 de 1011 0101, que posi t i vo e
val e 5, ent o 1011 negat i vo e val e - 5.

Vant agens:
O 0 s t emuma r epr esent ao. Pr ova:

0000
1111 C1
+ 1
10000 C2( 1011)
Est e 1 per de- se
por que os nmer os
t mapenas 4 bi t s.

Ou sej a, o si mt r i co de 0000, emcompl ement o par a 2, 0000.

33
Vant agens ( 2) :
Ao somar - se ou subt r ai r - se nmer os emC2, o r esul t ado vem
l ogo cor r ect o semser necessr i a qual quer cor r eco.

Ex. : Somar - 7 com3

1001 - 7 emC2
+0011 3
1100 - 4 emC2


Ex. : Somar - 2 com- 4

1110 - 2 emC2
+1100 - 4 emC2
11010 - 6 emC2
Est e 1 per de- se
por que os nmer os
t mapenas 4 bi t s.



Tabel a- r esumo
( Exempl o par a nmer os de 4 bi t s)
Deci mal SM C1 C2
- 8 - - 1000
- 7 1111 1000 1001
- 6 1110 1001 1010
- 5 1101 1010 1011
- 4 1100 1011 1100
- 3 1011 1100 1101
- 2 1010 1101 1110
- 1 1001 1110 1111
0 0000
1000
0000
1111
0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 0101 0101
6 0110 0110 0110
7 0111 0111 0111


Exer c ci o:
Consi der e o segui nt e nmer o emC2: 10001001.
Repr esent e- o no f or mat o de si nal e mdul o.

10001001
01110110 C1
+ 1
01110111 C2

O si mt r i co de 10001001 ( negat i vo) 01110111 ( posi t i vo) .
Logo, a r epr esent ao de 10001001 emSM 11110111.

34
Di vi so a 4 bi t s no ci r cui t o di vi sor

Di vi dendo: 00110100
Di vi sor : 0101

A Q Cont M Coment r i os
0011 0100 0 0101 LS( A, Q)
0110 100_ 0 A=A- M
0001 100_ 0 A<0? No: Q( 0) =1
0001 1001 0 Cont =3? N: Cont ++
0001 1001 1 LS( A, Q)
0011 001_ 1 A=A- M
1110 001_ 1 A<0? Si m: Q( 0) =0
1110 0010 1 A=A+M
0011 0010 1 Cont =3? N: Cont ++
0011 0010 2 LS( A, Q)
0110 010_ 2 A=A- M
0001 010_ 2 A<0? No: Q( 0) =1
0001 0101 2 Cont =3? N: Cont ++
0001 0101 3 LS( A, Q)
0010 101_ 3 A=A- M
1101 101_ 3 A<0? Si m: Q( 0) =0
1101 1010 3 A=A+M
0010 1010 3 Cont =3? S: FI M


Cl cul os auxi l i ar es:
A 0 1 1 0
( 2)
M - 0 1 0 1
( 2)
A- M 0 0 0 1
( 2)

A 0 0 1 1
( 2)
M - 0 1 0 1
( 2)
A- M 1 1 1 1 0
( 2)

A 1 1 1 0
( 2)
M + 0 1 0 1
( 2)
A- M 1 0 0 1 1
( 2)

A 0 0 1 0
( 2)
M - 0 1 0 1
( 2)
A- M 1 1 1 0 1
( 2)

35
ULHT

1 Trabalho de Arquitectura de Computadores 2005/2006

1 ano do Curso de Eng. Informtica

Ver. 1.01

1. Apresentao

Pretende-se realizar um programa escrito em linguagem ASSEMBLY 386 que efectue as quatro operaes
aritmticas bsicas sobre dois operandos inteiros, com n bits de comprimento, em que 32 n 256 ,
correspondendo a um nmero de doublewords entre 1 e 8.

Os negativos so representados no formato de complemento para 2.


2. Estrutura


No incio o programa dever pedir ao utilizador o nmero de doublewords com que os operandos iro ser
representados (entre 1 e 8).

Depois, o programa dever aceitar os 2 operandos (no formato anteriormente apresentado, em
hexadecimal) e o operador ( +, -, *, / ), a partir do teclado, sendo o resultado mostrado no ecr (monitor) no
mesmo formato.

O programa dever detectar e indicar no ecr situaes de "overflow".

O programa poder ter uma estrutura livre assim como a interface homem-mquina. No entanto aconselha-
se os alunos a fazer a introduo dos dados e operador em Polish Reverse Notation (Notao Polaca).
Exemplo de soma de 2 inteiros em notao polaca:

23 <ENTER> (1 operando)
15 <ENTER> (2 operando)
+<ENTER> (operador)
38 (resultado)

3. Grupos

O trabalho pode ser realizado em grupos de 3 alunos no mximo.


4. Relatrio

Do relatrio deve constar a listagem do programa, o modo como foi estruturado (fluxograma) e uma
explicao simplificada da forma como os operandos so decompostos e tratados para se obterem os
resultados.


5. Data de entrega e discusso

Data de entrega e discusso: dia marcado para a realizao da frequncia desta cadeira.
36