elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ¿por qué me da errores en este code MASM? saltos y etiquetas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿por qué me da errores en este code MASM? saltos y etiquetas  (Leído 4,992 veces)
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
¿por qué me da errores en este code MASM? saltos y etiquetas
« en: 27 Noviembre 2010, 01:48 am »

Hola, estaba practicando saltos condicionales y etiquetas en MASM32, e hice este code:

Código:
.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data
classname db "notepad",0    ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0


.data?
controlador dd ?

.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
cmp controlador,0 ; NULL
jne encontrado  ;si es diferente de cero salta a encontrado
cmp controlador,0
je noencontrado ;si es igual a cero salta a noencontrado
ret

encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo  ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret

noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado

Como ven lo que hace es buscar al block de notas por su classname, si encuentra se va a la etiqueta encontrado donde muestra mensaje y cambia el caption del block, sino saca  un mensaje de que no necontro, he abierto el block de notas antes de ejecutar mi code pero siempre me salta a la etiqueta "noencontrado", lo curioso es que cuando cambio los saltos condicionales y le pongo el incondicional JMP para que vaya directo a la etiqueta encontrado aún asi tambien este salta a noencontrado.

Código:
.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data
classname db "notepad",0    ;classname del block de notas
nuevotitulo db "caption cambiado en MASM32",0
titulo db "ejemplos de saltos y etiquetas",0
mensajeencontrado db "Se encontró el classname",0
mensajenoencontrado db "No se encontró el classname",0


.data?
controlador dd ?

.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
jmp encontrado
ret

encontrado:
invoke MessageBox, NULL, addr mensajeencontrado, addr titulo, MB_OK
invoke SetWindowText, controlador,addr nuevotitulo  ;cambia el titulo del block de notas
invoke ExitProcess, NULL
ret

noencontrado:
invoke MessageBox, NULL, addr mensajenoencontrado, addr titulo, MB_ICONERROR
invoke ExitProcess, NULL
end noencontrado

Pero cuando ejecuto solo la etiqueta inicio sin salto ni nada es decir: findwindow, mov y setwindowtext si me cambia el caption al block de notas:

Código:
.code
inicio:
invoke FindWindow, addr classname, NULL
mov controlador, eax
invoke SetWindowText, controlador, addr nuevotitulo
invoke ExitProcess, NULL
end inicio

Please una mano con esto llevo un buen rato en esta dificultad, estuve buscando saltos y etiquetas en MASM32 pero solo encuentro ejemplo que no me sacan de duda, en este codigo ¿qué  hice mal?


« Última modificación: 27 Noviembre 2010, 01:50 am por theghost_te » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿por qué me da errores en este code MASM? saltos y etiquetas
« Respuesta #1 en: 27 Noviembre 2010, 12:33 pm »

No mire el codigo demasiado pero si lo depuras vas a ver inmediatamente que no hace nada de lo que esperas por una razon: el entry point del programa no es inicio.

Al poner end noencontrado eso hace que noencontrado sea el entry point, es decir el programa se ejecuta desde ahi hasta el final ...  mejor pone end inicio :silbar:


« Última modificación: 27 Noviembre 2010, 12:35 pm por Eternal Idol » En línea

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
theghost_te

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: ¿por qué me da errores en este code MASM? saltos y etiquetas
« Respuesta #2 en: 27 Noviembre 2010, 18:02 pm »

Gracias man, eso era el problema.
« Última modificación: 27 Noviembre 2010, 18:04 pm por theghost_te » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿por qué me da errores en este code MASM? saltos y etiquetas
« Respuesta #3 en: 27 Noviembre 2010, 18:53 pm »

De nadas  ;D
En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Por que no me funciona este code? (Juego)
Scripting
esparta 0 2,040 Último mensaje 4 Noviembre 2007, 14:06 pm
por esparta
Errores en MASM con RadASM
Ingeniería Inversa
Erik# 2 4,449 Último mensaje 2 Enero 2009, 16:31 pm
por Erik#
Ayuda errores en el code
.NET (C#, VB.NET, ASP)
_CrisiS_ 0 1,519 Último mensaje 22 Noviembre 2010, 19:28 pm
por _CrisiS_
buenas este es el mismo programa de listas con etiquetas
Programación C/C++
eduardo17445 1 1,562 Último mensaje 29 Abril 2015, 14:48 pm
por eferion
Usando etiquetas apropiadas para los mensajes con codigo/logs/errores!
GNU/Linux
MinusFour 0 8,131 Último mensaje 11 Mayo 2015, 01:05 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines