hola a todos.
bueno pues tengo un problema es que no se como hacer el salto de linea si si declaro asi la variable:
Mensaje1 db "Introduce el primer numero: ",10
me da una salida asi:
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:
.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.
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.
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:
.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.
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 ...
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.
http://msdn.microsoft.com/
Bajate el SDK:
http://en.wikipedia.org/wiki/Microsoft_Windows_SDK
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.
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.
Hola Eternal Idol.
Bueno gracias por todo.
Nos vemos.
Saludos.
Drewermerc.