Atividade prática: Rodando o programa SOMA 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. O código mais conhecido e utilizado é o ASCII (American Standard Code for Information Interchange). Veja um exemplo desta tabela no link: Exemplos: http://geocities.yahoo.com.br/conexaopcpc/artigos/asc.htm Caracter Codificação em Hexa Codificação em Binario A 41h 01000001 B 42h 01000010 X 58h 01011000 a 61h 01100001 b 62h 01100010 x 78h 01111000 0 30h 00110000 1 31h 00110001 9 39h 00111001? 3Fh 00111111 20h 00100000. 3Bh 00111011 <HT> 09h 00001001 <LF> 0Ah 00001010 <CR> 0Dh 00001101 Página 1 de 6
Números positivos e negativos Numa máquina digital, todo número é representado em binário. Entretanto, para facilitar o uso para o usuário, os programas montadores permitem a representação de de números em diversas bases numéricas: decimal, hexadecimal e binária. Exemplos: a) Representação do zero: 0, 0h, 00h, 00000000b b) Números positivos: 2, 2d, 2h, 02h, 00000010b c) Números negativos: -2, -2d, 1111 1110b, FEh Escrevendo números negativos: 1) Escrever -2 em binário (complemento de dois C2) 2 00000010 11111101 + 00000001 11111110-2 (em C2) 2) Verificando o valor de um número negativo em hexadecimal ou binário: F6h 11110110 Sinal negativo 00001001 + 00000001 00001010 10 equivale a -10 Página 2 de 6
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. Página 3 de 6
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 Converter o resultado para caracter ASCII Exibir caracter no monitor Fim Página 4 de 6
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 leitura das variáveis A e B e 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 INT 21h END funcao de retorno para o DOS saida para o DOS Página 5 de 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) 2 e 5 b) 2 e 5 Troque a instrução ADD AL,B por SUB AL,B e use as variáveis: c) 2 e 5 d) 2 e 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 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. Página 6 de 6