SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: Carlos Corona en Domingo 23 de Noviembre de 2003, 01:19

Título: CONVERSIONES NUMERICAS
Publicado por: Carlos Corona en Domingo 23 de Noviembre de 2003, 01:19
Disculpen las molestias, sigo aqui molestando a los usuarios asiduos de este foro con dudas quizás ya obsoletas... bueno, solo quisiera saber si hay algún método que me ayude a transformar un número decimal a hexadecimal y a octa, siendo que el número está en una variable de 16 bits... y no sé que más datos se necesiten...
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Lunes 24 de Noviembre de 2003, 04:22
Aque te refieres???

NO SE SI ES EXACTAMENTE ESTA TU DUDA :


en principio yo me rayaba con los numeros en esamblador eso de los binarios los decimales hexadecimales y octales, yo queria trabajar solo en decimal; despues comprendi muchas cosas y al final lo mas importante y basico "todo esta en binario" claro asi lo maneja el procesador con estados logicos "1" y "0" PERO y QUE!! pues si tenemos en un regisrtro o memoria el valor "00001010"b tambien se "tiene" en ese mismo registro "0A"h que es igual a "010"d; entoces no importa porque de todos modos es el mismo valor sea en binario hexa o decimal; en mi programa(codigo fuente) puedo trabajar todo en decimal y al ponerlo en TurboDebug todo estara en sus correspondientes hexa, pero el micro todo estara en binario;


no se si este es el caso pero podria dar una pauta Ó una aclaracion seria buena.
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Carlos Corona en Martes 25 de Noviembre de 2003, 02:09
No me quedó tan claro.. es verdad que el procesador trabaja con números en binario, pero si lo que quiero es mover un número de una base a otra... que es lo que debo hacer? porque, por decir,entre Hex, Oct, o Binario no hay mucho rollo, son múltiplos y listo, pero en cuanto a la base 10... es otro cantar... como lo puedo trabajar que teniendo un dato en dec, lo escriba como hex?
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Miércoles 26 de Noviembre de 2003, 20:00
dices que teniendo un dato en decimal(en tu programa) lo muestre en hexadecimal????????????????????
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Carlos Corona en Jueves 27 de Noviembre de 2003, 04:56
No!, al contrario... si quiero leer un dato, como hago para manejarlo como decimal? para una conversión a binario por ejemplo.

Es decir, yo estoy metiendo un dato del teclado, se supone que checo que no sean letras ni nada por el estilo, lo que en teoría es un dato en decimal, pero para mostrarlo en binario como hago? porque lo que hacía era esto:

Metía en Ax el dato
Corrimiento a la Izquierda 1 vez de Ah
Si hay Carry, Imprime un 1
Si no hay Carry, Imprime un 0
Loop al Corrimiento de Ah, 8 Veces
Y lo mismo para Al

Pero eso me proporciona el dato en BCD, y yo lo quiero en Binario Puro, así que lo que hice fueron divisiones...

Pero obtube el mísmo número solo que a la inversa (si tenía "0001", me daba "1000")

Quiero saber como se puede hacer entonces....
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Viernes 28 de Noviembre de 2003, 16:18
Aver:

primero lees una del teclado un numero(en principio de un digito 0-9) y despues quieres mostrarlo por pantalla en su efroma binaria,¿eso es correcto?

pues primero lo mas recomendable es convertir ese dato leido(de un digito) de ascii a numerico restandole 48d o 30h;
depues es ya esta listo para ser trabajado;

(si el dato ya esta en AL):

;;*******************************

sub al,48;conversion de ascii ascii a numer
(el resto me da flojera asi que aui tengo el progra de un compañero "GORDO"; y lo adjunto; el progrma lee un numero de 0-9 osea un digito y lo meuastra en binario)
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Viernes 28 de Noviembre de 2003, 16:21
ese NO!!! es

ESTE SI
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Carlos Corona en Sábado 29 de Noviembre de 2003, 03:14
Pues muchas gracias por el código, voy a darle una buena revisada

Lo que si puedo decir, es que hice algunas pruebas, sobre todo para convertir números de 4 dígitos, obtuve que si divido el número entre 15, y el cosiente más uno se multiplica por 6 y ese resultado se resta del número original, puedes obtener el valor de un número de 2 dígitos metido en decimal, en hexa... pero si aumento la cantidad de dígitos, deja de funcionar el código, pues convierte, digamos, literalmente.

Esto es, que si meto desde teclado 99, y aplico lo anterior, obtengo: 99=63, que es en realidad 99 en hexa... pero si pongo 100... entonces obtengo A0, pues A=10, unido con 0 = 100.... jejeje...

Que me recomiendan para este caso?
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Domingo 30 de Noviembre de 2003, 04:01
No entendi
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Ericka en Jueves 13 de Mayo de 2004, 00:20
Cita de: "Super_G"
Aver:

primero lees una del teclado un numero(en principio de un digito 0-9) y despues quieres mostrarlo por pantalla en su efroma binaria,¿eso es correcto?

pues primero lo mas recomendable es convertir ese dato leido(de un digito) de ascii a numerico restandole 48d o 30h;
depues es ya esta listo para ser trabajado;

(si el dato ya esta en AL):

;;*******************************

sub al,48;conversion de ascii ascii a numer
(el resto me da flojera asi que aui tengo el progra de un compañero "GORDO"; y lo adjunto; el progrma lee un numero de 0-9 osea un digito y lo meuastra en binario)
 :) Hola como estas... este mensaje primeramente es para felicitarte por ayudarnos con tantas dudas... y en segunda es ver si me puedes decir que emulador usas para assembler, es que en mas de algun mensaje lei que usas un emulador, yo tengo el emu8086 pero al tratar de compialr un porgrama que tu hiciste en otro emulador obviamente no me compila... :gracias: y  :suerte: en todo!
Título: Re: CONVERSIONES NUMERICAS
Publicado por: Super_G en Martes 18 de Mayo de 2004, 02:07
Bueno primero "se hace lo que se puede" y "no hay de queso no mas de papa".
y yo no utilizo un emulador sino un compilador que es el TASM de Borland, bajo el DOS de win98. ver 2.0(creo) tambien con el TASM del BorlandC++ 3.11, y alguna ves con el MASM32 de Microsoft.
Título: Re: CONVERSIONES NUMERICAS
Publicado por: deldar en Martes 18 de Mayo de 2004, 17:25
Vamos a ver  si esta es una solucion:

1.- Decimal (suscribo lo dicho por Super_G).

2.- Hexadecimal : Supongo el número cargado ya (evidentemente en BCD) el paso no es mas que una agrupacion de bits p.ej:
 00110000b = 48 d = 30h --> 0011 (3)   0000 (0)
Con lo que nos bastaría desplazar el registro pasando el desbordamiento a otro cuatro veces. En este segundo tendremos el primer dígito hexadecimal , lo mostramos por pantalla, inicializamos y repetimos la operación hasta mostrar todos los dígitos.

3.- Octal: Igual que el Hexadecimal pero agrupamos en bloques de tres en lugar de bloques de cuatro.

Un Saludo  B)