cap2
9 pág.

cap2


DisciplinaTecnologias Web3.495 materiais10.488 seguidores
Pré-visualização1 página
Cap2 \u2013 Representação de Números e Caracteres. 
Página 1 de 9 
2. Representação de Numeros e Caracteres. 
 
2.1 Conceitos básicos 
 
Bit = BInary digiT = vale sempre 0 ou 1 
 elemento básico de informação 
 
Byte = 8 bits processados em paralelo (ao mesmo tempo) 
 
Word = 2 bytes = 16 bits 
 
Double word = 2 words = 4 bytes = 32 bits 
 
Nibble = 4 bits (utilidade para BCD) 
 
 
Posição de bits: 
 
 
Para 1 byte: 7 6 5 4 3 2 1 0 
0 1 0 1 0 1 0 1 
 
 
Para 1 word: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
 byte alto (high byte) | byte baixo (low byte) 
 
 
Obs: 
Words são armazenados em bytes consecutivos em memórias de 8 bits. 
Byte baixo = byte inferior ou byte de menor ordem -> endereço N 
Byte alto = byte superior ou byte de maior ordem -> endereço N+1 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 2 de 9 
2.2 Representação de números 
 
Números em base binária (base 2): 
 
a) 1 byte 
 
00100111b = 0.27 + 0.26 + 1.25 + 0.24 + 0.23 + 1.22 + 1.21 + 1.20 
 = 0 + 0 + 32 + 0 + 0 + 4 + 2 + 1 = 39d 
 = 2716 ou 27h 
 
b) 1 word 
 
0101011101101110b = 0.215 + 1.214 + ... + 1.22 + 1.21 + 0.20 
 = 22382d 
 = 576E16 ou 576Eh (mais fácil de representar!) 
 
 high byte = 0101 0111b = 57h 
 low byte = 0110 1110b = 6Eh 
 
 
Números em base octal (base 8): 
 
a) byte 
 
2578 = 2.82 + 5.81 + 7.80 
 = 128 + 40 + 7 = 175d 
 = 010_101_111b = 10101111b 
 
b) word 
 
0573268 = 0.85 + 5.84 + 7.83 + 3.82 + 2.81 + 6.80 
 = 0 + 20480 + 3584 + 192 + 16 + 6 = 24278d 
 = 000_101_111_011_010_110b = 0101111011010110b 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 3 de 9 
Números em base hexadecimal (base 16): 
 
a) byte 
 
D516 = 13.161 + 5.160 
 = 208 + 80 = 288d 
 = 1101_0101b = 11010101b 
 
b) word 
 
A03916 = 10.163 + 0.162 + 3.161 + 9.160 
 = 40960 + 0 + 48 + 9 = 41017d 
 = 1010_0000_0011_1001b = 1010000000111001b 
 
 
Conversão entre bases numéricas: 
 
Tipo de conversão Procedimento 
 
Decimal => Binário Divisões sucessivas por 2 até se obter zero no 
quociente; leitura dos dígitos binários de baixo 
para cima. 
Binário = > Decimal Soma de potências de 2 cujo expoente é a 
posição do bit e cujo coeficiente é o próprio bit. 
Hexadecimal => Binário Expandir cada dígito hexa em quatro dígitos 
binários segundo seu valor. 
Binário => Hexadecimal Compactar cada quatro dígitos binários em um 
único dígito hexa segundo seu valor. 
Decimal => Hexadecimal Divisões sucessivas por 16 até se obter zero no 
quociente; leitura dos dígitos de baixo para cima. 
Hexadecimal => Decimal Soma de potências de 16 cujo expoente é a 
posição do dígito e cujo coeficiente é o valor do 
próprio dígito hexa. 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 4 de 9 
2.3 Representação sinalizada e não sinalizada de números inteiros: 
 
 
Exemplo 1: 01110001b 
 
valor não sinalizado = 0.27 + 1.26 + 1.25 + 1.24 + 0.23 + 0.22 + 0.21 + 1.20 
 
 = 64 + 32 + 16 + 1 = 113d 
 
 
valor sinalizado bit de sinal = 0 => " + " (positivo) 
 
 = 1.26 + 1.25 + 1.24 + 0.23 + 0.22 + 0.21 + 1.20 
 
 = 64 + 32 + 16 + 1 = 113d logo: +113d 
 
 
Exemplo 2: 10110001b 
 
valor não sinalizado = 1.27 + 0.26 + 1.25 + 1.24 + 0.23 + 0.22 + 0.21 + 1.20 
 
 = 128 + 32 + 16 + 1 = 177d 
 
valor sinalizado bit de sinal = 1 => " - " (negativo) 
 
 10110001 <= número em complemento de 2 (C2) 
 
 01001110 <= número com todos os bits invertidos 
 + 1_ 
 01001111 <= valor do número (magnitude) 
 
 magnitude (7 bits) = 1.26 + 0.25 + 0.24 + 1.23 + 1.22 + 1.21 + 1.20 
 
 = 64 + 8 + 4 + 2 + 1 = 79d logo: - 79d 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 5 de 9 
Exemplo 3: 70FFh = 0111000011111111b 
 
valor não sinalizado = 0.215 + 1.214 + ... + 1.22 + 1.21 + 1.20 
 
 
valor sinalizado bit de sinal = 0 => &quot; + &quot; (positivo) 
 
 = valor igual ao não sinalizado 
 
 
 
Exemplo 4: C777h = 1100011101110111b 
 
valor não sinalizado = 1.215 + 1.214 + ... + 1.22 + 1.21 + 1.20 
 
 bit de sinal = 1 => &quot; - &quot; (negativo) 
 
valor sinalizado = a ser calculado considerando o número em C2 
 
 
 
Alguns números em hexadecimal, em representação sinalizada: 
 
0FFFh positivo, 2 bytes 
EF0h positivo, 3 dígitos hexa, 2 bytes, byte alto 0Eh, byte baixo F0h 
1h positivo, 1 byte, 01h 
80h positivo, se 2 bytes => 0000000010000000b 
 negativo, se 1 byte => 10000000b 
8000h negativo, byte alto 80h, byte baixo 00h 
C321h negativo 
FFFFh negativo 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 6 de 9 
2.4 Representação de caracteres ASCII: 
 
 
\u2022 Letras e pontuação não são representáveis diretamente em computadores 
e circuitos lógicos. 
 
\u2022 Utiliza-se alguns códigos binários de de 6, 7 ou 8 bits, que atribuem a cada 
combinação binária um caracter alfa-numérico. 
 
\u2022 código mais conhecido e utilizado é o ASCII (American Standard Code for 
Information Interchange). Veja a tabela 2.5, pagina 32 do livro-texto. 
 
\u2022 Exemplos: 
 
\u201cA\u201d \u2013 42h ou 0100 0010 
\u201cB\u201d \u2013 43h ou 0100 0011 
\u201cX\u201d \u2013 58h ou 0101 1000 
\u201ca\u201d \u2013 62h ou 0110 0010 
\u201cx\u201d \u2013 78h ou 0111 1000 
\u201c0\u201d \u2013 30h ou 0011 0000 
\u201c9\u201d \u2013 39h ou 0011 1001 
\u201c?\u201d \u2013 3Fh ou 0011 1111 
\u201c \u201d \u2013 20h ou 0010 0000 
\u201c . \u201d \u2013 2Eh ou 0010 1110 
 
 
 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 7 de 9 
2.5 Exemplo de um programa processando números 
 
A especificação do programa SOMA: 
 
 - iniciar 
 - ler a variável A da memória 
 - ler a variável B da memória 
 - somar A + B 
 - converter o resultado para caracter ASCII 
 - exibir o caracter no monitor 
 - terminar 
 
O fluxograma: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Início 
Ler a variável A 
Ler a variável B 
Somar A + B 
Exibir caracter no monitor 
Fim 
Converter o resultado para 
caracter ASCII 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 8 de 9 
O programa SOMA completo: 
 
TITLE PROGRAMA PARA SOMA DE DOIS NUMEROS 
.MODEL SMALL 
.STACK 100h 
; 
.DATA 
A DB 2 ;definicao e inicializacao da variavel A 
B DB 5 ;definicao e inicializacao da variavel B 
SUM DB ? ;definicao da variavel SUM (não inicializada) 
; 
.CODE 
;inicializacao de DS 
 MOV AX,@DATA 
 MOV DS,AX ;inicializa DS 
; 
;soma dos numeros 
 MOV AL,A ;AL recebe o conteudo de A 
 ADD AL,B ;AL contem A+B 
 MOV SUM,AL ;variavel SUM recebe o conteudo de AL 
; 
;conversao de hexa para ASCII 
 ADD SUM,30h ;somando 30h para compatibilizar a 
 ;quatidade em SUM com o caracter ASCII 
; 
;visualizacao do resultado na tela 
 MOV AH,02h ;funcao DOS para exibicao de caracter 
 MOV DL,SUM ;dado pronto para sair em DL 
 INT 21h ;exibe na tela 
; 
;saida do DOS 
 MOV AH,4Ch ;funcao de retorno para o DOS 
 INT 21h ;saida para o DOS 
 END 
 
Cap2 \u2013 Representação de Números e Caracteres. 
Página 9 de 9 
2.6 Atividades práticas: 
 
Rode o programa utilizando o TASM e o TLINK. 
 
Verifique o que ocorrerá se os valores definidos inicialmente nas variáveis A 
e B forem alterados para: 
 
a) \u20132 e 5 
b) 2 e \u2013 5 
 
Troque a instrução ADD AX,B por SUB AX,B e use as variáveis: 
 
c) \u20132 e 5 
d) 2 e \u2013 5 
 
Procure explicar os resultados obtidos com o auxílio da teoria de números 
sinalizados e com a tabela de caracteres ASCII. 
 
Tente agora especificar os valores iniciais de A e B em: 
 
a) Binário 
b) Hexadecimal 
 
Faça finalmente \u20132 e 5 expressos em binário e em hexadecimal. Use 
complemento de 2 para representar o número negativo. 
 
Se você desejar \u201cformatar\u201d a resposta que o programa exibe no monitor, 
procure incluir mudanças de linha e alguns \u201ctabs\u201d para mover o cursor na tela.