Cap2 – Representação de Números e Caracteres.

Página 1 de 9

2. Representação de Numeros e Caracteres.

Bit= BInary digiT = vale sempre 0 ou 1

2.1 Conceitos básicos 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)

Para 1 byte:7 6 5 4 3 2 1 0

Posição de bits: 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 – 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 b) 1 word

0101011101101110b = 0.215 + 1.214 ++ 1.2 + 1.21 + 0.20

= 576E16 ou 576Eh (mais fácil de representar!)

Números em base octal (base 8): a) byte

2578= 2.82 + 5.81 + 7.80

b) word

0573268= 0.85 + 5.84 + 7.83 + 3.82 + 2.81 + 6.80

Cap2 – 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

b) word

A03916= 10.163 + 0.162 + 3.161 + 9.160

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 – 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:

valor sinalizado bit de sinal = 1 => " - " (negativo)

+1_

01001110 <= número com todos os bits invertidos 01001111 <= valor do número (magnitude)

Cap2 – Representação de Números e Caracteres.

Página 5 de 9

valor não sinalizado = 0.215 + 1.214 ++ 1.2 + 1.21 + 1.20

valor sinalizado bit de sinal = 0 => " + " (positivo) = valor igual ao não sinalizado

valor não sinalizado = 1.215 + 1.214 ++ 1.2 + 1.21 + 1.20

bit de sinal = 1 => " - " (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 – Representação de Números e Caracteres.

Página 6 de 9

2.4 Representação de caracteres ASCII:

• Letras e pontuação não são representáveis diretamente em computadores e circuitos lógicos.

• 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.

• código mais conhecido e utilizado é o ASCII (American Standard Code for Information Interchange). Veja a tabela 2.5, pagina 32 do livro-texto.

• Exemplos:

Cap2 – 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 – Representação de Números e Caracteres.

Página 8 de 9

O programa SOMA completo:

.DATA
ADB 2 ;definicao e inicializacao da variavel A
BDB 5 ;definicao e inicializacao da variavel B
SUM DB? ;definicao da variavel SUM (não inicializada)
MOV DS,AX;inicializa DS

TITLE PROGRAMA PARA SOMA DE DOIS NUMEROS .MODEL SMALL .STACK 100h ; ; .CODE ;inicializacao de DS MOV AX,@DATA ;

MOV AL,A;AL recebe o conteudo de A
ADD AL,B;AL contem A+B

;soma dos numeros 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

INT 21h;exibe na tela

MOV AH,02h ;funcao DOS para exibicao de caracter MOV DL,SUM ;dado pronto para sair em DL ;

;saida do DOS

INT 21h;saida para o DOS

MOV AH,4Ch ;funcao de retorno para o DOS END

Cap2 – 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:

Troque a instrução ADD AX,B por SUB AX,B e use as variáveis:

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 –2 e 5 expressos em binário e em hexadecimal. Use complemento de 2 para representar o número negativo.

Se você desejar “formatar” a resposta que o programa exibe no monitor, procure incluir mudanças de linha e alguns “tabs” para mover o cursor na tela.

Comentários