Título: Conversion de bases, consulta Publicado por: fofaso en 4 Noviembre 2014, 05:05 am Hola Gente!! quizás alguien tenga la amabilidad para contestar una pregunta que tengo sobre Assembler, desde hace rato...
Estoy tratando de hacer un programa en Assembler para que pueda convertir un numero dado en base 10 a cualquier base (desde base 2 hasta base hexadecimal). No tengo grandes conocimientos en este lenguaje, pero sé lo básico. Hasta ahora pude armar toda la estructura del programa, pidiendo el número a convertir y los resultados dados luego de la conversión. Mi pregunta es: Como puedo hacer para convertir un numero en esas condiciones? Hasta ahora no pude encontrar una manera, se me hace muy difícil. No les estoy pidiendo que me resuelvan el programa completo ni mucho menos. Solo les pido algun centro, con algún código que resuelva ese numero convertido a alguna base (ninguna en particular), así yo después puedo relacionar ese código con las restantes conversiones y poder terminar mi anhelado programa. Ojala me puedan contestar, seria de muchísima ayuda. En ese caso, voy a estar eternamente agradecido. Soy un visitante de esta pagina con frecuencia, ya que de aca saco gran información y por esa misma razon decidi registrarme, ya qe siempre lo hacia en modo anonimo!! Mis respetos y saludos a toda esta comunidad, saludos! Título: Re: Conversion de bases, consulta Publicado por: ivancea96 en 4 Noviembre 2014, 10:08 am El código ya es cosa tuya, pero el algoritmo es muy sencillo (desde base 10 a base X).
Tedejoe stá página que lo explica bien (by Google): http://www.ceibal.edu.uy/UserFiles/P0001/ODEA/HTML/091111_binario.elp/cambio_de_base_10_a_otras_bases.html (http://www.ceibal.edu.uy/UserFiles/P0001/ODEA/HTML/091111_binario.elp/cambio_de_base_10_a_otras_bases.html) Título: Re: Conversion de bases, consulta Publicado por: plataplomo2948 en 9 Noviembre 2014, 01:16 am Exactamente que quiere hacer?. En ASM todo ya es base 2, pero lo leamos en base 16. En ASM todo lo siguente es igual
Código: mov eax , 0xf Si no refiere a eso, tendria que estar hablando de punteros del string asi? en ese caso puede usar strtol de libc Código:
Seria mejor si postea su codigo pra mostrar su problema fofaso - Recibi su mensaje privado, seria mejor si usted postea su codigo aqui para tener mas opiniones. Título: Re: Conversion de bases, consulta Publicado por: Eternal Idol en 9 Noviembre 2014, 02:13 am fofaso - Recibi su mensaje privado, seria mejor si usted postea su codigo aqui para tener mas opiniones. plataplomo2948: no escribas mensajes consecutivos. Título: Re: Conversion de bases, consulta Publicado por: fofaso en 17 Noviembre 2014, 21:14 pm Respondiendo a plataplomo2948 dejo mi codigo hasta ahora es el esqueleto!!
;PROGRAMA DE CONVERSION DE NUMEROS #make_COM# org 100h include emu8086.inc ;libreria donde hay algunas funciones basicas gotoxy 5,1 printn 'Programa conversor de numeros' printn ;Inicio del codigo call OTRO_PARRAFO call FIN_DE_LINEA call PEDIR_NUMERO ;pide un numero call CONV_B2 ;call CONV_B3 ;call CONV_B4 ;call CONV_B5 ;call CONV_B6 ;call CONV_B7 ;call CONV_B8 ;call CONV_B9 ;call CONV_BHEXA printn ;printn ES UN ENTER! ;call print_num ;MUESTRA LO QE HAY EN AX! call TERMINAR_PROGRAMA ;DESARROLLO DE FUNCIONES CONV_B2: putc 10 putc 13 mov ax,cx mov cx,10 div cx call print_num putc 10 putc 13 ;Codigo para resolver numero a base 2 print 'Numero convertido base 2: ' ret ;CONV_B3: putc 10 putc 13 ;Codigo para resolver numero a base 3 print 'Numero convertido base 3: ' ret ;CONV_B4: putc 10 putc 13 ;Codigo para resolver numero a base 4 print 'Numero convertido base 4: ' ret ;CONV_B5: putc 10 putc 13 ;Codigo para resolver numero a base 5 print 'Numero convertido base 5: ' ret ;CONV_B6: putc 10 putc 13 ;Codigo para resolver numero a base 6 print 'Numero convertido base 6: ' ret ;CONV_B7: putc 10 putc 13 ;Codigo para resolver numero a base 7 print 'Numero convertido base 7: ' ret ;CONV_B8: putc 10 putc 13 ;Codigo para resolver numero a base 8 print 'Numero convertido base 8: ' ret ;CONV_B9: putc 10 putc 13 ;Codigo para resolver numero a base 9 print 'Numero convertido base 9: ' ret ;CONV_BHEXA: putc 10 putc 13 ;Codigo para resolver numero a base hexa print 'Numero convertido base hexa: ' ret PEDIR_NUMERO: print 'Numero a convertir: ' call scan_num ;funcion de la libreria incluida ret ;vuelve a donde habian llamado a la funcion TERMINAR_PROGRAMA: mov ah,4ch int 21h FIN_DE_LINEA: print 10 print 13 ret OTRO_PARRAFO: print 10 print '--------------------------' print 13 ret define_scan_num define_print_string define_print_num define_print_num_uns define_pthis define_clear_screen end Se nota que estan todas las bases indicadas, pero falta el codigo (importante -.-). Bueno, se asume qe se ingresan decimales. Desde ahi se tendrian qe hacer divisiones constantes respecto al total de caracteres ingresados, para que el resto de cada una de esas divisiones pueda conformar mi numero convertido. Mi primer problema es como saber cuantos caracteres se ingresaron? Luego el siguiente problema es como guardar el resto y poder mostrarlos todos juntos para formar el numero convertido? Estuve investigando desde hace 2 semanas este problema y no pude tener muchos resultados qe me sirvan, espero alguna ayuda. Ojala me puedan ayudar/orientar. Gracias chicos, saludos! |