Ensamblador - alguien me podria decir q malo tiene esto?

 
Vista:

alguien me podria decir q malo tiene esto?

Publicado por BORAX (1 intervención) el 20/04/2002 07:22:53
necesito q aparesca 5 veces el mensaje
esto hace q se repita infinito.
si es posible q ese bRead sea como un contador q se incremente o decremente me ayudaria mas.
ej:
MOV CX,0005h
bucle: INC DX
CMP DX,0000h
inv MessageBox, hWnd, bRead, bRead, MB_OK
JE Acaba
LOOP bucle
Acaba:

gracias .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Puede ser que sea...

Publicado por Jorge (126 intervenciones) el 21/04/2002 05:48:54
Aunque nunca ví la "instrucción inv", lo único que se me ocurre es que MessageBox esté modificando a CX y no lo estés controlando.
¿Te fijaste cómo funciona?. Quizá deje alguna información ahí y no la estes controlando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Puede ser que sea...

Publicado por BORAX (1 intervención) el 22/04/2002 03:16:39
hola "inv es invoke" pero podrias poner un arreglo del codigo q yo escribi
osea lo q arias para q funcione .
gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alguien me podria decir q malo tiene esto?

Publicado por Googol (61 intervenciones) el 24/04/2002 19:06:33
Sí, Jorge debe tener razón. En algún sitio leí que las llamadas al API de Windows destruyen el contenido de un montón de registros, y solo dejan "vivos" unos cuantos. Seguramente CX esté entre ellos.
A si es que lo mejor es que salves los registros tengan información útil que quieras utilizar después del MessageBox:

bucle: INC DX
PUSH CX
CMP DX,0000h
inv MessageBox, hWnd, bRead, bRead, MB_OK
JE Acaba
POP CX
LOOP bucle

Lo que no entiendo es lo del DX la verdad. ¿Para qué comparas DX con 0? Luego no utilizas los flags para nada :-? (el invoke seguramente los destroce).

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alguien me podria decir q malo tiene esto?

Publicado por Dreamer (2 intervenciones) el 28/04/2002 01:36:10
Yo coincido con Googol y no entiendo el uso de DX en esta rutina. Desde mi punto de vista (e intentando dejarlo todo bien atado antes de intentar siquiera compilarlo) tu programa debería quedar algo parecido a esto (si no se modifica CX dentro del invoke):

MOV CX,0005h
bucle:
inv MessageBox, hWnd, bRead, bRead, MB_OK
LOOP bucle

..que incluso podría quedar (con CH=0) como un:

MOV CL,05h
rep inv MessageBox, hWnd, bRead, bRead, MB_OK

Pero en el caso de que la función modifique CX (perdón.. .no lo puedo comprobar ahora, pero de veras estoy convencido de que no) la función debería tener un aspecto semejante a este:

MOV CX,0005h
bucle:
push CX
inv MessageBox, hWnd, bRead, bRead, MB_OK
pop CX
LOOP bucle

Ojalá esto te ayude en algo..
Sigue soñando, es gratis.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar