Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Drewermerc en 7 Septiembre 2014, 18:22 pm



Título: [Solucionado]duda sobre salto de linea
Publicado por: Drewermerc en 7 Septiembre 2014, 18:22 pm
hola a todos.

bueno pues tengo un problema es que no se como hacer el salto de linea si si declaro asi la variable:
Código
  1. Mensaje1 db "Introduce el primer numero: ",10
  2.  
me da  una salida asi:
Código
  1. Introduce el primer numero:
  2. Introduce el segundo numero:
  3. Tu numero es: 2
  4. Tu numero es: 2
  5. Introduce el segundo numero:
  6. Tu numero es: 2
  7. Tu numero es: 2
  8. la suma de los numeros son: 4La resta de los numeros son: 0
  9.  

no se si hay alguna otra forma de hacer un salto de linea.
estes mi codigo:
Código
  1. .386
  2. .model  flat, stdcall
  3. option casemap :none
  4.  
  5. include c:\masm32\include\windows.inc
  6. include c:\masm32\include\masm32.inc
  7. include c:\masm32\include\kernel32.inc
  8. includelib c:\masm32\lib\masm32.lib
  9. includelib c:\masm32\lib\kernel32.lib
  10.  
  11. .data
  12. Numero1 dword 0
  13. Numero2 dword 0
  14. Entrada1 db 10 DUP(0)
  15. Entrada2 db 10 DUP(0)
  16. Mensaje1 db "Introduce el primer numero: \n",0
  17. Mensaje2 db  "Introduce el segundo numero: ",0
  18. Mensaje5 db "Tu numero es: ",0
  19. SumCadena db 10 DUP(0)
  20. ResCadena db 10 DUP(0)
  21. Mensaje3 db "la suma de los numeros son: ",0
  22. Mensaje4 db "La resta de los numeros son: ",0
  23. NumSum dword 0
  24. NumRes dword 0
  25. .code
  26. start:
  27. invoke StdOut, addr Mensaje1
  28. invoke StdIn, addr Entrada1, 10
  29. invoke StdOut, addr Mensaje5
  30. invoke StdOut, addr Entrada1
  31.  
  32. invoke StdOut, addr Mensaje2
  33. invoke StdIn, addr Entrada2, 10
  34. invoke StdOut, addr Mensaje5
  35. invoke StdOut, addr Entrada2
  36.  
  37. invoke ExitProcess, 0
  38. end start
  39.  
y bueno otra pregunta hay alguna forma de capturar el numero ingresado por el ususario pero sin que sea string es que yo primero obtengo el  valor que este se captura en string despueslo convierto a entero y después lo vuelvo a convertir a string para poder imprimirlo.
Bueno espero me pueda ayudar.
Saludos.
Drewermerc.


Título: Re: duda sobre salto de linea
Publicado por: Eternal Idol en 7 Septiembre 2014, 18:45 pm
El codigo que dejaste no se corresponde con la salida ... pero a ese codigo si le pones el 10 adelante de mensaje2 ya funciona correctamente.

Mensaje2 db  10, "Introduce el segundo numero: ",0

Y no, la consola lee caracteres, cualquier forma tendra que pasar los caracteres a entero.


Título: Re: duda sobre salto de linea
Publicado por: Drewermerc en 7 Septiembre 2014, 19:02 pm
muchas gracias por responder Eternal Idol.
creo que me falto decir que modificando la variable me daba esa salida.
ahorita tengo otra dos preguntas.
por si mi codigo es este:
Código
  1. .386
  2. .model  flat, stdcall
  3. option casemap :none
  4.  
  5. include c:\masm32\include\windows.inc
  6. include c:\masm32\include\masm32.inc
  7. include c:\masm32\include\kernel32.inc
  8. includelib c:\masm32\lib\masm32.lib
  9. includelib c:\masm32\lib\kernel32.lib
  10.  
  11. .data
  12. Numero1 dword 0
  13. Numero2 dword 0
  14. Entrada1 db 10 DUP(0)
  15. Entrada2 db 10 DUP(0)
  16. Mensaje1 db "Introduce el primer numero: ",10
  17. Mensaje2 db  "Introduce el segundo numero: ",10
  18. Mensaje5 db "Tu numero es: ",0
  19. SumCadena db 10 DUP(0)
  20. ResCadena db 10 DUP(0)
  21. Mensaje3 db "la suma de los numeros son: ",0
  22. Mensaje4 db "La resta de los numeros son: ",0
  23. NumSum dword 0
  24. NumRes dword 0
  25. .code
  26. start:
  27. invoke StdOut, addr Mensaje1
  28. invoke StdIn, addr Entrada1, 10
  29. invoke StdOut, addr Mensaje5
  30. invoke StdOut, addr Entrada1
  31.  
  32. invoke StdOut, addr Mensaje2
  33. invoke StdIn, addr Entrada2, 10
  34. invoke StdOut, addr Mensaje5
  35. invoke StdOut, addr Entrada2
  36.  
  37. invoke ExitProcess, 0
  38. end start
  39.  
me da la salida anterior quisiera saber por que se comporta el programa asi al modificar la terminación de la variable.
y como podria hacer para que el programa se pause antes de terminar ya que si ejecute el exe no da tiempo de ver el resultado la operacion.

Saludos.
Drewermerc.


Título: Re: duda sobre salto de linea
Publicado por: Eternal Idol en 7 Septiembre 2014, 20:07 pm
El error radica en que las dos cadenas siguientes estan unidas, a ambas les falta el cero terminador.

Mensaje1 db "Introduce el primer numero: ",10
Mensaje2 db  "Introduce el segundo numero: ",10

Podes llamar a StdIn de nuevo, o leer un caracter de consola ...


Título: Re: duda sobre salto de linea
Publicado por: Drewermerc en 7 Septiembre 2014, 20:27 pm
Bueno muchas por todo ya  me quedo mas claro entonces el 0 al final de la variable equivale al \0 en c.

edito: oye sabes cual es la pagina de microsoft donde puedo ver las funciones del sistema.


Título: Re: duda sobre salto de linea
Publicado por: Eternal Idol en 7 Septiembre 2014, 21:36 pm
http://msdn.microsoft.com/

Bajate el SDK:
http://en.wikipedia.org/wiki/Microsoft_Windows_SDK


Título: Re: duda sobre salto de linea
Publicado por: Drewermerc en 7 Septiembre 2014, 23:55 pm
oye una pregunta ya lo instale pero aun no encuentro donde esta la documentación solo  veo un debuger, consola  y otras herramientas que no había visto o también tengo que instalar microsoft visual c++.
aunque estuve investigando sobre sdk entendí que es para programar cualquier plataforma de miccrosoft pero también se puede programar asm
no se si me pueda proporcionar un manual si es que lo hay o investigo las herramientas por separado.


Título: Re: duda sobre salto de linea
Publicado por: Eternal Idol en 8 Septiembre 2014, 01:13 am
No se, no tengo todas las versiones, busca un minimo por tu cuenta por favor. Y si, con ensamblador podes llamar a cualquier funcion de la API de Windows.


Título: Re: duda sobre salto de linea
Publicado por: Drewermerc en 8 Septiembre 2014, 02:45 am
Hola Eternal Idol.
Bueno gracias por todo.
Nos vemos.
Saludos.
Drewermerc.