[Solucionado]duda sobre salto de linea

Iniciado por Drewermerc, 7 Septiembre 2014, 18:22 PM

0 Miembros y 1 Visitante están viendo este tema.

Drewermerc

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 (asm) [Seleccionar]

Mensaje1 db "Introduce el primer numero: ",10

me da  una salida asi:
Código (asm) [Seleccionar]

Introduce el primer numero:
Introduce el segundo numero:
Tu numero es: 2
Tu numero es: 2
Introduce el segundo numero:
Tu numero es: 2
Tu numero es: 2
la suma de los numeros son: 4La resta de los numeros son: 0


no se si hay alguna otra forma de hacer un salto de linea.
estes mi codigo:
Código (asm) [Seleccionar]

.386
.model  flat, stdcall
option casemap :none

include c:\masm32\include\windows.inc
include c:\masm32\include\masm32.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\kernel32.lib

.data
Numero1 dword 0
Numero2 dword 0
Entrada1 db 10 DUP(0)
Entrada2 db 10 DUP(0)
Mensaje1 db "Introduce el primer numero: \n",0
Mensaje2 db  "Introduce el segundo numero: ",0
Mensaje5 db "Tu numero es: ",0
SumCadena db 10 DUP(0)
ResCadena db 10 DUP(0)
Mensaje3 db "la suma de los numeros son: ",0
Mensaje4 db "La resta de los numeros son: ",0
NumSum dword 0
NumRes dword 0
.code
start:
invoke StdOut, addr Mensaje1
invoke StdIn, addr Entrada1, 10
invoke StdOut, addr Mensaje5
invoke StdOut, addr Entrada1

invoke StdOut, addr Mensaje2
invoke StdIn, addr Entrada2, 10
invoke StdOut, addr Mensaje5
invoke StdOut, addr Entrada2

invoke ExitProcess, 0
end start

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.

Eternal Idol

#1
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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

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 (asm) [Seleccionar]

.386
.model  flat, stdcall
option casemap :none

include c:\masm32\include\windows.inc
include c:\masm32\include\masm32.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\kernel32.lib

.data
Numero1 dword 0
Numero2 dword 0
Entrada1 db 10 DUP(0)
Entrada2 db 10 DUP(0)
Mensaje1 db "Introduce el primer numero: ",10
Mensaje2 db  "Introduce el segundo numero: ",10
Mensaje5 db "Tu numero es: ",0
SumCadena db 10 DUP(0)
ResCadena db 10 DUP(0)
Mensaje3 db "la suma de los numeros son: ",0
Mensaje4 db "La resta de los numeros son: ",0
NumSum dword 0
NumRes dword 0
.code
start:
invoke StdOut, addr Mensaje1
invoke StdIn, addr Entrada1, 10
invoke StdOut, addr Mensaje5
invoke StdOut, addr Entrada1

invoke StdOut, addr Mensaje2
invoke StdIn, addr Entrada2, 10
invoke StdOut, addr Mensaje5
invoke StdOut, addr Entrada2

invoke ExitProcess, 0
end start

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.

Eternal Idol

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 ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

#4
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.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

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.

Eternal Idol

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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

Hola Eternal Idol.
Bueno gracias por todo.
Nos vemos.
Saludos.
Drewermerc.