Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Corazones y Estómagos (Parte 3 de 3)

–Procesamiento de Mensajes en Windows–

Hace mucho tiempo que no recibía comentarios en este blog. Tales cosas me hacen sentir un poco menos loco. Ahora sigamos con este asunto del ciclo de mensajes:

Muchos dicen que este es el corazón de una ventana porque responde con un ciclo a cada mensaje recibido. Y cuando este se detiene, la aplicación queda congelada o se apaga.

No hay que confundir el ciclo de mensajes con la función de CallBack.

Una aplicación puede tener muchos ciclos de mensajes en diferentes partes. En esto ya no se parece a un corazón, con excepción de los pulpos que tienen 3 corazones.

Del mismo modo que una aplicación puede tener cero, una o muchas ventanas. También es posible tener varios procesos CallBack, pero solo uno para cada ventana.

La ejecución de una aplicación se ‘congela’ al llamar GetMessage. Pero con PeekMessage no.

Es posible salir del ciclo de mensajes leyendo directamete el mensaje WM_DESTROY, el cero que retorna GetMessage en EAX es tan solo una optimización. Esto es especialmente importante en el caso de PeekMessage, pues su valor de retorno sigue otras reglas.

Existen ventanas predefinidas cuyas funciones CallBack corren a cargo del Windows. Como las cajas de diálogo y mensajes.

Las cajas de diálogo y mensajes del tipo OK, CANCEL retornan la selección del usuario en EAX

Bueno, creo que todo lo que tenía que decir sobre el segundo de los códigos ya está dicho, el resto del programa simplemente se encarga de decirle al Windows que funciones de la API vamos a necesitar. Por cierto, si quieren mas información de la API de Windows, pueden utilizar cualquier documentación en lenguaje C. Solo recuerden como se le dice al sistema que función queremos en la sección de datos de importación y que los argumentos se introducen por el Stack comenzando por el último. O como quien dice en reversa.

Anuncios

enero 30, 2009 - Posted by | Uncategorized

6 comentarios »

  1. Esto parecio mas “Como programar en güindows con lenguaje ensamblador” que “Como programar en Lenguaje Ensamblador”

    Comentario por blackpig | marzo 30, 2009 | Responder

    • No se si esta es una felicitacion o una critica. Programo en Windows porque es el sistema mas extendido. Pero si quieren puedo hacer programas para Linux, (en consola o con X-Window) Lo unico que no voy a hacer son programas de 16 bits para DOS porque luego el Solis y sus pupilos se los van a lamear. Ademas no quiero contribuir a la mala fama del Ensamblador. Aunque un bootloader podria ser una curiosidad para los mas geeks.

      Comentario por asm86 | marzo 30, 2009 | Responder

  2. Excelente, pues como vaya avanzando el curso seria bueno hacer un bootloader. un videojuego sin Sistema Operativo.

    Comentario por blackpig | marzo 31, 2009 | Responder

    • Como curiosidad podria ser. Pero para empezar hay que estudiar las nuevas unidades de almacenamiento. Ya no hay floppies de 3.5″ ni discos duros con formato FAT como en los que haciamos ese tipo de cosas. Todo lo demas seria mas o menos lo que ya hicimos.

      Comentario por asm86 | marzo 31, 2009 | Responder

  3. Una ves tuve la osadia de intentar hacer mi propia version de street fighter en ensamblador, el programa empezaba en msdos pero cambiaba al procesador al modo “unreal” para tener completo control de la memoria y asi cargar los numerosos sprites del personaje de Ryo. Desafortunadamente para mi a mis 16 años no sabia nada de Inteligencia Artificial ni contaba con una computadora lo suficientemente potente como para permitirme diseñar un nuevo personaje y colorearlo; mucho menos un scaner para digitalizar mis propios bocetos. Tuve que conformarme con los sprites que consegui en la red.

    Ojala hubiera existido una asosiacion como “Apadrina un programador” en la que me hubieran apollado con libros y una buena computadora.

    Peor aun!, siempre me he quejado y odiado nuestro sistema de enseñanza en Mexico. No deberiamos culparlo, teniendo en cuenta que se independizo apenas en el año 1971 e inicio su operacion como universidad en el año 1933. Es decir, mi abuelo vivio los inicios de la universidad. Siendo asi, a mi corta edad no sabia lo que era un vector, mucho menos una matriz! como se suponia haria mi propio Duke Nukem, Mortal Kombat 4, Quake Master?

    Creo que me sali del tema por mucho, pero me gustaria terminar con esto: La Constancia debe ser enseñada desde niños, se aprende! no se nace con ella.

    Saludos

    Comentario por Puerco | marzo 31, 2009 | Responder

    • Creo que entonces todavia no estaba aquello del REDONDEO. Ni la iniciativa OLPC. La OLPC seria la plataforma perfecta para desarrollar en Ensamblador si no te obligaran a entregar muestras de ADN a las autoridades. Lo bueno es que las fuerzas del mal ya crearon modelos mas o menos libres para venta al publico.
      Lo bueno es que ya hay mas acceso a Internet donde puedes encontrar mas informacion para programar. Incluido este blog. En cuanto a la universidad, no vale la pena amargarse cuando puedes reirte. Hay que conseguir toda la informacion posible antes de que sea delito aprender algo de memoria. En cuanto a la constancia, es mas bien una evolucion. Si no la desarrollas no duras.

      Comentario por asm86 | marzo 31, 2009 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: