Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Poor Programmer Reto 1 Episodio 5

–Llamadas COM o ¿Va a querer papas con su orden?–

Este en realidad es la segunda parte del episodio cuatro. Aquí se deja en claro la diferencia entre una llamada tradicional a la API de windows y una de modelo de objeto componente. También se analiza un poco o mejor dicho se disecciona la macro COMINVK o el INVOKE para COM. Una llamada a una función COM tiene 2 diferencias principales respecto a las funciones tradicionales que simplemente reciben sus argumentos con el stack y luego ejecutamos la instrucción CALL del procesador.

Para que sea mas facil de entender esto funciona de la misma manera en que se toman las órdenes de un restaurante. Cuando uno entra a comer en un restaurante pide su platillo; además del platillo damos ciertas indicaciones por ejemplo pedimos una hamburguesa, que sea doble carne, que tenga queso, papas grandes y refresco sin hielo. Al hacerlo la mesera va a tomar la orden en su libreta y va a apuntar en ella que queremos una hamburguesa con tales o cuales complementos; pero también va a anotar la mesa donde estamos. Luego va a llevar a la cocina esa orden y luego de un rato ya cuando la hamburguesa esté servida con todo y sus complementos nos lo llevará a la mesa.

Las llamadas a COM trabajan de esa misma manera. No solo reciben los argumentos que en este caso serían los complementos. El platillo sería la función que queremos llamar y la mesa a la que han de ser entregados es el objeto que “da la orden”. Para seguir con la burla el ejemplo del restaurante en este caso la tabla de funciones sería igual al menú. Cada menú tiene una serie de entradas donde cada una corresponde a un platillo que el comensal puede ordenar. Igualmente podemos cambiar la preparacion de los platillos siempre y cuando el menú siempre se respete. Y a la hora de tomar la orden internamente lo que se pasa es la posición del platillo dentro del menú. Sus complementos(en este caso los argumentos de la funcion) y la mesa a la que se va a servir. El modelo COM trabaja exactamente de esa manera.

También se muestra en el video lo que en este caso sería la mesa que es la interfaz al objeto creado. No se va a detallar por ahora como trabaja internamente sino como se comunica la aplicación que tenemos con este tipo de objetos. Lo que es un gran avance y optimización si lo comparamos con la llamada tradicional a una típica función DLL.

En el siguiente capítulo utilizaremos toda la información obtenida en los capítulos anteriores ahora si para generar una aplicación sencilla. Aunque no será muy vistosa si nos dirá si el sistema nos obedece o no. A partir de ahí el resto será sencillo. Simplemente jugar con las constantes, argumentos y funciones para obtener diferentes efectos. Parece que el reto uno va a terminar mucho antes de lo que tenía esperado pero no tan rápido como me gustaría.

abril 5, 2010 - Posted by | Uncategorized | , , ,

3 comentarios »

  1. Que onda Mario, como estas? pasaba a dejarte un mensaje…
    estaba viendo la pelicula de Terminator, una de mis favoritas.. y al llegar al segundo 1:19:59, entre las lineas que aparecen como visiones del Terminator hay unos codigos en ni mas ni menos que ensamblador… te dejo el codigo para que te diviertas, al parecer hace un par de sumas jeje.. como dato curioso, hace referencia a la direccion de memoria B000-B3FF, para memoria de video.

    Las instrucciones de este codigo se asemejan al lenguaje ensamblador del microprocesador 6502. Te dejo un link http://richardbowles.tripod.com/durham/comparch/instruc.htm

    Saludos!!

    8 *******************
    9
    10 ORG $4000
    11 A1 = $3C
    12 A2 = $3E
    13 A4 = $42
    14 AUXMOVE = $C311
    15
    16 ****************************
    17 * SETUP – move data for VTOC
    18 * and catalog to auxmom at
    19 * B000-B3FF *pseudo trk 11
    20 * 0-3)
    21 **************************
    22 SETUP LDA #VTOC
    25 STA A1+1
    26 LDA #END
    29 STA A2+1
    30 LDA #800
    31 STA A4
    32 LDA #800
    33 STA A4+1
    34 SEC
    35 JMP AUX MOVE
    36
    37 0$ 4
    38 ******************

    Comentario por Puerco | abril 9, 2010 | Responder

    • De hecho tengo una nota que habla sobre el tema en este mismo blog. De Automatas, aceptores y Terminators pero no me habia fijado la referencia a la memoria de video. El CPU 6502 se uso en las APPLE II y en el Nintendo Entertainment System. Hay otra pelicula de godzilla donde sale codigo ensamblador de intel. Es una donde reprograman un satelite.

      Asi que ya saben lo que pueden programar en ASM, pues el 2029 esta a la vuelta de la esquina.

      Comentario por asm86 | abril 9, 2010 | Responder

      • Tienes razon Mario, ya habias escrito todo un post sobre el tema, jeje, siempre me has sorprendido porque te fijas en detalles.. Saludos!

        Comentario por Puerco | abril 10, 2010


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: