[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: "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