Вы находитесь на странице: 1из 12

UNIVERSIDADE CATLICA DE BRASLIA - UCB

Bacharelado em Cincia da Computao BCC


Arquitetura de Computadores I

4.1 REPRESENTAO DE DADOS

4.1 Unidades com Binrios

1 Bit = BInary DigiT a menor unidade de informao dentro do computador.


1 Nibble = 4 bits , um nibble pode representar qualquer dgito hexadecimal.
1 Byte = 8 bits , segundo [TOCCI 2007 ], o Byte se tornou a unidade fundamental para se
representar qualquer tipo de informao, principalmente em dispositivos de armazenamento como memria
primria e secundria. E [HYDE 2003] complementa informando-nos que a menor quantidade de
dados enderevel dentro da memria na maioria das arquiteturas.
Word (Palavra) : em termos gerais, a palavra um conjunto de bits que no seja um nibble ou byte.
Dessa forma, pode-se ter palavras de 10 bits, por exemplo. Entretanto, na maioria das arquiteturas uma
palavra representa 16 bits. Assim, segundo [HYDE 2004]:
1 Word (Palavra) = 16 bits.
1 Double Word , DWord (Palavra Dupla) = 32 bits.
1 Quad Word, QWord (Palavra Qudrupla) = 64 bits.
1 Long Word , LWord (Palavra Longa) = 128 bits.

Palavras de 10 bits, por exemplo, so conhecidas como Ten Word (TWord).

Em [HYDE 2003], tem-se as seguintes representaes na memria:

BYTE
Bit 7 mais significativo ( HO Bit) Bit 0 menos significativo (LO Bit)
HO = High Order HO Nibble LO Nibble LO = Low Order

BYTE

WORD

HO BYTE LO BYTE

Nibble 3 (HO) Nibble 2 Nibble 1 Nibbe 0 (LO)

DWORD

HO WORD LO WORD

BYTE 3 (HO) BYTE 2 BYTE 1 BYTE 0 (LO)

Nibble7(HO) Nibble 6 Nibble 5 Nibbe 4 Nibble 3 Nibble 2 Nibble 1 Nibbe0 (LO)

BCC Arquitetura de Computadores I 1


4.2 Endereamento de Byes e Palavras na Memria

A figura abaixo ilustra contedos de memria (em Bytes) sendo endereados por instrues de 1 byte,
word , dword e qword:
Instruo Unidade a ser endereada Endereo 16 MEMRIA2
0F 00000000
Load(10) BYTE 10 00000000
11 00000000
Load[W](12) 12 00000000
WORD
W = word 13 00000000
14 00000000
Load[D](14) 15 00000000
DWORD
D = Dword 16 00000000
17 00000000
18 00000000
19 00000000
1A 00000000
Load[Q](18) 1B 00000000
QWORD
Q= QWord 1C 00000000
1D 00000000
1E 00000000
1F 00000000

Como j sabemos, o byte a menor unidade de informao enderevel na memria. Por exemplo,
uma determinada arquitetura trabalha com a instruo LOAD(M) que carrega para um determinado
registrador o contedo de 1 Byte de dados localizado no endereo M da memria. Nesse caso, essa mesma
arquitetura pode ter instrues que carregam uma word, dword ou qword. Nesse caso, na sintaxe da instruo
h a indicao da unidade entre colchetes. Por exemplo, LOAD[W](12) carregar um registrador de 16 bits
com o contedo de 2 bytes a partir do endereo 1216, ou seja, os bytes armazenados em 1216 e 1316.
Os registradores unidade de memria dentro da CPU tambm podem ser organizados conforme a
quantidade de bytes endereados. Por exemplo, na arquitetura 80x86 (ou x86), o acumulador conhecido
apenas como registrador AX segue a estrutura abaixo:
AX
BYTE BYTE
AH AL
Sistemas de 16 bits
EAX
BYTE BYTE BYTE BYTE
Sistemas de 32 bits
RAX
BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE
Sistemas de 64 bits

importante observar que na arquitetura x86, o processador de 16 bits (word). Dessa forma, a
unidade bsica de endereamento uma palavra de 16 bits. Entretanto, para manter a compatibilidade, h
como enderear o byte por meio do AH (registrador A com byte mais significativo) e AL (registrador A com
o byte menos significativo). O EAX uma dword para arquitetura de 32 bits e o RAX uma qword para
64bits.

Ler sobre famlias de processadores Intel em:


http://pt.wikipedia.org/wiki/X86

BCC Arquitetura de Computadores I 2


4.3 Representao de Dados

At o momento, temos manipulado apenas valores numricos em diversas bases. Entretanto, h outros
tipos de dados como, por exemplo, caracteres alfanumricos e especiais - que devem ser representados,
armazenados e manipulados de forma binria dentro do computador. Para tanto, deve-se utilizar tcnicas de
codificao diversos smbolos de dados para o binrio.
Nesse sentido, [TOCCI ] esclarece: Quando nmeros, letras ou palavras so representados por um
grupo especial de smbolos, dizemos que eles esto codificados, sendo o grupo de smbolos denominado
cdigo.
4.3.1 Cdigo BCD (Binary Coded Decimal)

Segundo [STALINGS 2002 ],


Embora toda a operao interna de um computador seja, por natureza, binria, usurios
do sistema lidam com nmeros decimais. Portanto, nmeros decimais devem ser
convertidos para binrio, na entrada, e nmeros binrios devem ser convertidos para
nmeros decimais na sada. Para aplicaes com grande quantidade de E/S e
relativamente pouca computao, prefervel armazenar e operar sobre nmeros na
forma decimal. A representao mais comumente usada para esse propsito a
representao de nmero decimal empacotado em unidades de 4 bits (essa representao
conhecida como BCD binary coded decimal).

No BCD cada valor decimal codificado pelo respectivo valor em binrio de um nibble conforme a
tabela abaixo:
Cdigo BCD
Valor Binrio Codificao em Dgitos Decimais
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
Segundo [TOCCI 2007]:
Vimos que qualquer nmero decimal pode ser representado por um nmero binrio
equivalente. Os grupos de 0s e 1s em um nmero binrio podem ser usados como uma
representao codificada de um nmero decimal. Quando um nmero decimal
representado pelo seu binrio equivalente, dizemos que uma codificao em binrio
puro.
Todos os sistemas digitais usam alguma forma de numerao binria em suas operaes
internas; porm, o mundo externo naturalmente decimal. Isto significa que converses
entre os sistemas decimal e binrio so realizadas frequentemente. Vimos que converses
entre decimal e binrio podem se tornar longas e complicadas para nmeros grandes. Por
isso, uma maneira de codificar nmeros decimais, que combine algumas caractersticas
dos dois sistemas, binrio e decimal, usada em determinadas situaes.

BCC Arquitetura de Computadores I 3


Pela tabela anterior, pode-se verificar que com um nbble possvel representar os dez dgitos do
sistema decimal. Dessa forma, como 1 byte possvel representar valores de 0 a 99 onde as dezenas sero
codificadas com o nibble mais significativo e as unidades com o nibble menos significativo:
BYTE

Nibble HO Nibble LO

1 0 0 1 0 1 1 1

9 7 97 codificado em BDC

Lembre-se de que estamos tratando aqui de uma codificao e no de converso de binrio


para decimal. Portanto, se convertermos o binrio 10010111 teremos o valor 151 em decimal.
Segundo [HYDE 2003], com o BCD o uso da memria ineficiente; pois com 8 bits, o BCD
armazena apenas valores de 0 a 99 enquanto que na converso entre as bases, com os mesmos 8 bits pode-se
representar valores decimais de 0 a 255. Dessa forma, o BCD encontra aplicaes em dispositivos de uso
especfico principalmente nas interfaces de exibio de valores decimais tais como displays de dispositivos
digitais.
Quando um byte codifica um valor decima de dois dgitos (um dgito por nibble), dizemos ser um
BCD empacotado (packed BCD). Quando um byte s representa um dgito decimal, dizemos ser um BCD
desempacotado (unpacked BCD).
Como h combinaes binrias sobrando no BCD, pode-se utiliz-las para representao de sinal.
Neste caso, tem-se:

Cdigo BCD

Valor Binrio Sinal

1111 Sem sinal

1100 Positivo

1101 Negativo

BCC Arquitetura de Computadores I 4


4.3.2 Cdigo Alfanumrico ASCII

Conforme [TOCCI 2007], o cdigo alfanumrico mais utilizado o Cdigo Padro para Troca de
Informaes (American Standard Code for Information Interchange - ASCII).
O ASCII codifica caracteres alfanumricos imprimveis e caracteres de controle no imprimveis por
meio de 7 bits, ou seja, h no total 128 (27) representaes codificadas conforme a tabela abaixo:
Dec Hexa Caracter Dec Hexa Caracter Dec Hexa Caracter Dec Hexa Caracter
00 00 NUL 32 20 64 40 @ 96 60 `
01 01 SOH 33 21 ! 65 41 A 97 61 a
02 02 STX 34 22 " 66 42 B 98 62 b
03 03 ETX 35 23 # 67 43 C 99 63 c
04 04 EOT 36 24 $ 68 44 D 100 64 d
05 05 ENQ 37 25 % 69 45 E 101 65 e
06 06 ACK 38 26 & 70 46 F 102 66 f
07 07 BEL 39 27 ' 71 47 G 103 67 g
08 08 BS 40 28 ( 72 48 H 104 68 h
09 09 HT 41 29 ) 73 49 I 105 69 i
10 0A LF 42 2A * 74 4A J 106 6A j
11 0B VT 43 2B + 75 4B K 107 6B k
12 0C FF 44 2C , 76 4C L 108 6C l
13 0D CR 45 2D - 77 4D M 109 6D m
14 0E SO 46 2E . 78 4E N 110 6E n
15 0F SI 47 2F / 79 4F O 111 6F o
16 10 DLE 48 30 0 80 50 P 112 70 p
17 11 DC1 49 31 1 81 51 Q 113 71 q
18 12 DC2 50 32 2 82 52 R 114 72 r
19 13 DC3 51 33 3 83 53 S 115 73 s
20 14 DC4 52 34 4 84 54 T 116 74 t
21 15 NAK 53 35 5 85 55 U 117 75 u
22 16 SYN 54 36 6 86 56 V 118 76 v
23 17 ETB 55 37 7 87 57 W 119 77 w
24 18 CAN 56 38 8 88 58 X 120 78 x
25 19 EM 57 39 9 89 59 Y 121 79 y
26 1A SUB 58 3A : 90 5A Z 122 7A z
27 1B ESC 59 3B ; 91 5B [ 123 7B {
28 1C FS 60 3C < 92 5C \ 124 7C |
29 1D GS 61 3D = 93 5D ] 125 7D }
30 1E RS 62 3E > 94 5E ^ 126 7E ~
31 1F US 63 3F ? 95 5F _ 127 7F DEL

Caracteres de controle: de 0 at 31 mais o 127.


Caracteres imprimveis: de 32 at 126.
No ASCII, o bit mais significativo utilizado para verificao de erro por clculo de paridade (vide
Anexo). Isso foi necessrio em virtude de o ASCII ser utilizado para a codificao de informao transmitida
entre mquinas.

BCC Arquitetura de Computadores I 5


4.3.3 Unicode

Com o ASCII possvel representar todos os caracteres latinos. Entretanto, h outros caracteres de
idomas no latinos que no cabem nos 7 bits do ASCII. Dessa forma, foram sendo criadas extenses para
permitir a representao de caracteres de outros idiomas. Uma dessas extenses, por exemplo, foi a srie de
normas ISO 8859.
O Unicode um padro mantido pela Unicode Consortium que visa representar qualquer sistema de
escrita existente e que conta, atualmente, com pouco mais de 107.000 caracteres.
Os esquemas de padronizao do Unicode so conhecidos como UTF (Unicode Transformation
Format):
UTF-7: uma codificao de caracteres de tamanho varivel capaz de representar um texto Unicode
usando uma seqncia de caracteres ASCII. usada principalmente em emails.
UTF-8: uma codificao de tamanho varivel de um a quatro bytes (octetos). necessrio apenas
um byte para codificar os 128 caracteres ASCII (Unicode U+0000 a U+007F). So necessrios dois bytes
para caracteres Latinos com diacrticos. So tambm usados dois bytes para representar caracteres dos
alfabetos Grego, Cirlico, Armnio, Hebraico, Srio e Thaana (Unicode U+0080 a U+07FF). So necessrios
trs bytes para o resto do Plano Multilingual Bsico (que contm praticamente todos os caracteres comuns
utilizados). Existem ainda outros caracteres que necessitam de quatro bytes.
UTF-16: um formato Unicode de 16-bits que prov uma maneira de representar os diversos
caracteres abstratos, presentes no Unicode e no ISO/IEC 10646, como uma srie de palavras (neste caso, de
16-bits), para ento poder ser armazenados ou transmitidos por uma rede.
UTF-32: um formato Unicode de 32 bits. Sua principal vantagem fornecer um modo uniforme para
representao de todos os caracteres.
Para saber mais, acesse: http://www.w3.org/International/questions/qa-choosing-encodings.pt-
br.php

BCC Arquitetura de Computadores I 6


4.2 REPRESENTAO DE NMEROS INTEIROS COM SINAIS

No armazenamento de valores numricos com sinal, no possvel utilizar os sinais e vrgulas, pois
apenas com dgitos 0s e 1s so representados os estados de circuitos eletrnicos que correspondem a essas
grandezas numricas.
Nesta seo estudaremos dois mecanismos para a representao do sinal: sinal-magnitude e
complemento-de-dois.

1 Representao sinal-magnitude

Tendo como referncia um Byte, o bit mais significativo indicar o sinal ( 0 = positivo , 1 = negativo)
Binrio Decimal

0 0 0 0 0 0 0 0 0 H 127 valores positivos e 127 negativos.


H dois valores para representar o 0.
0 0 0 0 0 0 0 1 1

0 0 0 0 0 0 1 0 2
Valores representveis:
. -(2n-1 -1) at +(2n-1 -1)
0 1 1 1 1 1 1 1 127

1 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 1 -1

1 0 0 0 0 0 1 0 -2

1 1 1 1 1 1 1 1 -127

2 Representao por Complemento-de-Dois

Assim como a representao sinal-magnitude, a representao em complemento de dois usa o bit mais
significativo como bit de sinal, o que torna mais fcil testar se o nmero inteiro positivo ou negativo.
Entretanto, os demais bits so interpretados de maneira diferente:
Dado o valor inteiro positivo, o seu negativo o complemento do positivo adicionado de 1. Na
organizao do bits, o bit mais significativo bit de sinal ( 0 = positivo , 1 = negativo).
Exemplo:
+ 13 = 01101 -13 = ?
Passo 1: Inverte-se todos os bits. 0 1 1 0 1
1 0 0 1 0

Passo 2: Soma-se 1 ao valor do Passo 1. 1 0 0 1 0


1
1 0 0 1 1

Valor -13 em complemento de dois 1 0 0 1 1

BCC Arquitetura de Computadores I 7


Segundo [STALLINGS 2002], Embora a representao em complemento de dois possa parecer
pouco natural, do ponto de vista humano, veremos que ela torna mais fcil a implementao das operaes
aritmticas mais importantes a adio e a subtrao. Por isso, ela usada quase universalmente para
representar nmeros inteiros no processador.
Segundo [STALLINGS 2002], so caractersticas desse sistema:
a) Faixa de valores Representveis: -(2n-1) a +(2n-1 -1).
b) Um valor para representao do 0.
Decimal Sinal Magnitude oo Complemento 2
+8 - - - - - - - -
+7 0 1 1 1 0 1 1 1
+6 0 1 1 0 0 1 1 0
+5 0 1 0 1 0 1 0 1
+4 0 1 0 0 0 1 0 0
+3 0 0 1 1 0 0 1 1
+2 0 0 1 0 0 0 1 0
+1 0 0 0 1 0 0 0 1
+0 0 0 0 0 0 0 0 0
-0 1 0 0 0 - - - -
-1 1 0 0 1 1 1 1 1
-2 1 0 1 0 1 1 1 0
-3 1 0 1 1 1 1 0 1
-4 1 1 0 0 1 1 0 0
-5 1 1 0 1 1 0 1 1
-6 1 1 1 0 1 0 1 0
-7 1 1 1 1 1 0 0 1
-8 - - - - 1 0 0 0

c) Negao: pegue o complemento booleano de cada bit do nmero positivo correspondente e ento
some 1 ao padro de bits resultantes.
d) Expanso do nmero de bits: acrescente posies de bits esquerda e preencha esses bits com o
valor do bit de sinal original.
12 = 01100 -> 00001100
-13 = 10011 -> 11110011
e) Regra de overflow: se dois nmeros com o mesmo sinal (ambos positivos ou ambos negativos)
forem somados, ocorrer overflow apenas se o resultado tiver sinal oposto.
O resultado de uma adio pode ter um nmero de bits maior do que o tamanho da palavra usada. Essa
condio denominada overflow (transbordamento). Quando isso ocorre, a Unidade de Lgica e
Aritmtica do processador deve sinalizar esse fato, para que o resultado no seja utilizado.

+5 0 1 0 1 -7 1 0 0 1
+4 0 1 0 0 -6 1 0 1 0
1 0 0 1 1 0 0 1 1

f) Regra de subtrao: para subtrair B de A, pegue o complemento de dois de B e some-o com A.

BCC Arquitetura de Computadores I 8


Na converso entre bases 2 e 10 com nmeros negativos, deve-se considerar o bit mais significativo
como sendo o bit de sinal e fazer a converso considerando esse sinal. Por exemplo, na converso de valores
de 1 byte:
-128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0 -120
0 1 1 1 1 0 0 0 120
1 1 1 1 1 1 0 0 -4
0 0 0 0 0 1 0 0 4

Representao Geomtrica de Nmeros de Complemento-de-Dois com 4 bits [STALLINGS 2002]:

Segundo [STALLINGS 2002]: A representao em complemento de dois pode ser visualizada por
meio da representao geomtrica mostrada na figura acima, extrada de Benham (1992). O crculo na
metade superior de cada parte da figura formado selecionando o segmento adequado da reta de nmeros e
juntando as duas extremidades. Comeando a partir de qualquer nmero do crculo, podemos somar um valor
k positivo (ou subtrair um valor k negativo) a esse nmero, movendo k posies no sentido horrio, ou
subtrair um valor k positivo (ou somar um valor k negativo), movendo k posies no sentido anti-horrio.
Caso essa operao cruze o ponto em que as duas extremidades se juntam, a resposta obtida incorreta.

BCC Arquitetura de Computadores I 9


3 Aritmtica convencional

a) Soma:
1 1 1 1 1 1 1
0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1
+ 0 0 1 + 1 + 0 0 1 0 + 0 0 0 0 1 + 0 0 1 1 1 0
0 1 1 1 0 1 0 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

b) Subtrao:
0 2 0 1 1 2
0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1
- 0 0 1 - 1 - 0 0 1 0 - 0 0 0 1 - 0 0 1 1 1 0
0 1 0 0 1 0 1 0 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c) Multiplicao:

1 0 1 1 0 1 1 0 1 0 0 1
x 1 0 x 1 0 1 x 1 1
0 0 0 1 0 1 1 0
1 0 1 0 0 0 0 0
1 0 1 0 1 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d) Diviso:

1 0 1 0 1 0 1 0 0 0 1 1 1 0 1
1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1
0 0 1 0 1 0 1
1 0 0 0 1 1 1
0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
1 0 1
0 0 0

BCC Arquitetura de Computadores I 10


4 Adio e Subtrao em Complemento de Dois

4.1 Adio

Conforme [TOCCI 2007] , h os seguintes casos para a adio entre binrios:


a) Entre dois nmeros positivos: adio feita diretamente.
b) Entre um nmero positivo e outro menor e negativo: faz-se a soma com o complemento
de dois do nmero negativo.
Ex: 9 4 (em oito bits): -4 em complemento de 2 : 1100 , expandido para 8 bits =
11111100
1 1 1 1 1
0 0 0 0 1 0 0 1
+ 1 1 1 1 1 1 0 0
1 0 0 0 0 0 1 0 1

Bit desconsiderado
Portanto = 00000101 = 01012 = 510
c) Entre um nmero negativo e outro maior e negativo: faz-se a soma com o complemento
de dois do nmero negativo.
Ex: -9 + 4 (em oito bits) -9 em complemento de 2 = 10111, expandido para 8 bits =
11110111
1
1 1 1 1 0 1 1 1
+ 0 0 0 0 0 1 0 0
1 1 1 1 1 0 1 1

Bit desconsiderado

Portanto: 11111011 = 10112 = -510


d) Dois nmeros negativos: faz-se a soma de ambos em complemento de 2.
Ex: -9 4 (em oito bits) -9 = 11110111 -4 = 11111100

1 1 1 1 1 1
1 1 1 1 0 1 1 1
+ 1 1 1 1 1 1 0 0
1 1 1 1 1 0 0 1 1

Bit desconsiderado

Portanto : 11110011 = 100112 = -1310

BCC Arquitetura de Computadores I 11


4.2 Subtrao

Segundo [TOCCI 2007], a operao de subtrao que usa o sistema de complemento de 2 na


verdade envolve a operao de soma e no diferente dos diversos casos, vistos no item anterior.
Ou seja: ao valor negativo aplique o complemento de dois e some com o outro valor
desconsiderando o overflow.
O overflow quando o vai-um excede a capacidade de bits da representao.
Ex: 120 97
23910 = 0111100002
-97 (em complemento de dois) = 100111112

1 1 1 1 1
0 1 1 1 1 0 0 0
+ 1 0 0 1 1 1 1 1
1 0 0 0 1 0 1 1 1

Bit desconsiderado

Referncias:

[STALLINGS 2002] STALLINGS, Willian. Arquitetura e organizao de Computadores, Prentice Hall Brasil,
5 Edio, 2002.

[HYDE 2004] HYDE, R. Write Great Code: Understanding the Machine, Volume I. San Francisco,
CA. No Starch Press, 2004.

[HYDE 2003] HYDE, R. The Art of Assembly Language. San Francisco, CA. No Starch Press, 2003.

[TOCCI 2007] TOCCI, R. J.; WIDMER, N.S.; MOSS, G. L. Sistemas Digitais: princpios e aplicaes.
10 Ed. So Paulo, SP: Person Prentice Hall, 2007.

BCC Arquitetura de Computadores I 12

Вам также может понравиться