SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Calzifer en Lunes 14 de Mayo de 2007, 23:07
-
Hola: :D
Soy nuevo aqui. Esta pagina me parece genial. Necesito que me expliquen como convertir de Int a String y de String a Int en ASM. Todo en C++, pero utilizando la llave del ASM, como lo muestro debajo:
Seri algo asi:
IntToString (int a)
{
.
.
.
.
ASM
{
.
.
.
}
Cualquier ayuda la voy a agradecer.
}
-
De int a string:
Se divide por 10 mientras sea posible y se va tomando el resto como digito para nuestra cadena sumandole el valor de '0' (48 en decimal). Cuando ya no podemos dividir por 10 hacemos lo mismo con el dividendo.
Ejemplo:
319 / 10 = 31
319 % 10 = 9 + '0' = '9'
31 / 10 = 3
31 % 10 = 1 + '0' = '1'
3 + '0' = '3'
De string a int:
Se le resta '0' a cada cifra y se la multiplica por 10 ^ posicion (empezando por cero en las unidades), se suman todos los resultados para obtener el numero final.
Ejemplo:
'3' - '0' = 3 * 10 ^ 2 = 300
'1' - '0' = 1 * 10 ^ 1 = 10
'9' - '0' = 9 * 10 ^ 0 = 9
-
Hola a todos:
Necesito, de ser posible, ayuda u orientacion para crear algunas funciones en ensamblador. No poseo mucha experiencia en este lenguaje, asi que puedo necesitar de mucha ayuda, pero tambien apreciare la poca, en fin lo que me puedan ayudar.
Las funciones deben convertir de:
Int a String, String a Int, Int a Hexagesimal y la ultima, (aunque no es conversion, es calculo) hallar el factorial de un Int.
No pido que me hagan el trabajo, solo pido un poco de orientacion, en la medida de lo posible. Cualquier ayuda o sugerencia sera bien recibida.
Gracias
-
Esto es lo que yo estuve haciendo, pero no funca.
__int8* MyIntToStr(__int32 pValue)
{
__int8 *temp = new __int8(20);
asm
{
mov eax,pValue
lea si,temp
cmp eax,10
jb resto
mov bx,10
ciclo: div bx
cmp ax,0
add dx,'0'
mov [si],dx
inc si
cmp eax,10
jb resto
jmp ciclo
resto: add ax,'0'
mov [si],dx
jmp salir
salir:
}
return temp;
}