[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
ascii para hexa
- Subject: ascii para hexa
- From: Andre Uratsuka Manoel <andre@xxxxxxxxxxxxx>
- Date: Sun, 6 Apr 2003 19:02:47 -0300 (BRT)
* Subject: ascii para hexa
* From: "Alexandre Pitta Guedes" <apguedes2000@xxxxxxxxxxx>
* Date: Fri, 28 Mar 2003 14:34:15 -0300
Sem querer ser chato, mas já sendo mó mala,
eu queria saber como eu "digo" para o programa
que eu quero que o numero saia em hexa...
tipo, toda informação é guardada em hexa,
certo?
Errado. As informações são guardadas em binário. São os
programadores que preferem hexa para trabalhar, porque é fácil de
convertar números binários em hexa.
quando eu recebo o arquivo texto, ele
vai guarda-lo em hexa... como eu falo para
ele que é para devolver os dados como hexa???
O texto é salvo em ASCII (ou, eventualmente alguma outra
codificação), mas é binário, de qualquer forma. O que voce precisa fazer é
pegar esse código binário e interpretar, obtendo os códigos ASCII
correspondentes a cada dígito da representação em hexa daquele número
binário. (nao sei se deu para entender, espero que sim).
A conversão é fácil: você vai dividindo por 16 e pegando o resto.
Mas como o computador é binário. Dividir por 16 é equivalente a fazer um
shift right de 4 bits. O resto da divisão por 16 é obtido com um "and 15"
(que é 00001111 em binário).
Isso serve para você obter cada um dos "nibbles" ou digitos hexa
do número. Daí você pode pegar o código ASCII que corresponde ao dígito
hexa dado:
hexdigits db '0123456789abcdef'
.text
<...>
mov bx, hexdigits
mov al, <numero>
xlat [hex_table] ; nao sei se tem os colchetes na notacao do NASM
; agora al contem o codigo ascii
-------------
Isso equivale ao seguinte em C:
unsigned char hexdigits[] = "0123456789abcdef";
unsigned char tohexdigit(unsigned char c)
{
return hexdigit[c];
}
-------------
Seria o contrario da função que o prof deu na aula. uma que converte ascii
para hexa.
Infelizmente não vi essa aula, mas o que precisa, resumindo, é:
converter binário -> hexa
converter hexa -> ascii
O código que eu passei acima serve para a segunda parte.
Andre