Академический Документы
Профессиональный Документы
Культура Документы
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
DWORD
HO WORD LO WORD
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.
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)
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.
Nibble HO Nibble LO
1 0 0 1 0 1 1 1
9 7 97 codificado em BDC
Cdigo BCD
1100 Positivo
1101 Negativo
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
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
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 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
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
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
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.
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
4.1 Adio
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
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
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.