Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Conferencia de Gráficas por Computadora

–Tecnológico de Zitácuaro, Michoacán–

sala de computo itz
Zitácuaro Michoacán, 6:00 am. A esa hora desperté y como de costumbre dejé la presentación para último momento. Afortunadamente el buscador de imágenes del Google me ayudó a poner imágenes bonitas en esas diapositivas. Por suerte la presentación se retrasó hasta las doce del día y eso me dio tiempo para acabar esas diapositivas y de paso preparar el equipaje para el regreso. Luego de tomar por asalto el buffet y acabar de ponerme bonito para salir en público me llevaron al lugar del evento. Sin embargo, cuando me preparaba para iniciar el show este se retrasó una hora mas, de modo que la función comenzó pasadas la una de la tarde en una de las salas audiovisuales del centro de cómputo.

No se si ya lo había mencionado; pero la conferencia al final no fue enteramente sobre lenguaje ensamblador; sino de gráficas por computadora (específicamente aquellas generadas en Tiempo-Real en computadoras caseras). Debo de confesar que me sorprendió ver a tanta gente reunida en la sala para escucharme hablar; no sabría precisar un número pero seguro había “al menos 100” personas entre maestros, alumnos y hasta un par de empleados de mantenimiento que observaron por una ventana al fondo de la sala. Luego de la presentación comencé a hablar, aunque algo confundido no me di cuenta que dije algunas cosas muy raras y otras que son imperdonables. De entre lo gracioso, en lugar de “Gráficas por computadora y programación en Ensamblador” dije “Gráficas en Ensamblador y programación por computadora” pero la imperdonable fue la de que Ivan Sutherland no solo había sido el padre de las Gráficas por Computadora sino de la computadora en general. Ahora que reviso detenidamente la grabación que hice de la conferencia en formato MP3; que por cierte pienso subir en formato de Podcast veo otras imprecisiones no tan graciosas que creo que es mejor editar para la versión final. Por cierto, eso de confundir al ‘padre de tal arte o ciencia’ es un chiste bastante malo que de seguro entenderán por ahí un par de otakus.

La presentación se dividió en estas partes:

1.- Presentación de lo que eran las gráficas por computadora

2.- Poder matemático involucrado en la creación de las mismas

3.- Diferencia entre imágenes Pre-rendereadas y las generadas en Tiempo-Real

4.- Estructura general de los sistemas gráficos en una computadora

5.- Funcionamiento de un sistema capaz de generar gráficas en Tiempo-Real

6.- Comparación entre las gráficas generadas por GPU contra el CPU solo.

7.- Técnicas para optimizar la programación gráfica en Tiempo-Real (aquí es donde entra el ASM)

8.- Explicación de la generación de imágenes por polígonos y trazado de rayos

9.- Desarrollo de las Gráficas por Computadora en Ensamblador en México (esta fue la mejor de las diapositivas)

10.- Presentación del demo DEBRIS hecho por un grupo de hackers del norte de europa y que genera una animación 3D con música y que mide tan solo 177 kilobytes

11.- Sección de preguntas y respuestas

12.- Despedida

La verdad no hay mucho que pueda decir sobre la conferencia que no pueda encontarse con detalle en el podcast; pero cabe mencionar que entre los presentes había un reducido grupo de Geeks que hicieron unas preguntas muy buenas. La verdad es que no imaginé que encontraría a estudiantes tan preparados en una escuela tan apartada como el Tecnológico de Zitácuaro. Espero que si se hace el proyecto que voy a mencionar en la entrada siguiente, cuente con su activa participación. Por cierto, uno de ellos me hizo la única pregunta que me costó mucho trabajo contestar: ¿Y yo que era lo que había hecho y que aplicación tenía mi trabajo en ‘la industria’? Ahí fue donde me salió la gota gigante de sudor en la cara. Pero dije la verdad, que a pesar de llevar mas de 10 años de investigación independiente hasta el día de hoy no había logrado producir nada digno de ser vendido en el mercado internacional. Espero que la próxima vez que alguien me pregunte eso ya tenga algo hecho por mi que pueda mostrarles. Pues un cuestionamiento como este fue lo que desencadenó mi “vendetta” contra cierto grupo de autodenominados desarrolladores (que para mi no son mas que un montón de lamers con dinero) que opera en Guadalajara.

industria en mexico
Y hablando de guerras y vendettas, aquí les muestro la que fue la mejor de todas las diapositivas mostradas en la presentación donde, como todos pueden ver, se aprecia al detalle el crecimiento y desarrollo de ‘la industria’ de las gráficas por computadora y la programación en Ensamblador en México, así como las reputadas mentes que han hecho investigaciónes serias en este campo entre las que destacan la creación de engines gráficos en tiempo-real altamente optimizados hechos por nuestros talentosos programadores mexicanos en instituciones educativas supercaras de prestigio internacional. Por cierto, a mi regreso a Monterrey filtré esta diapositiva en el foro de discusión de cierta comunidad dedicada al desarrollo de videojuegos en México como respuesta a una discusión sobre el (muy precario) desarrollo de videojuegos en América Latina. Y mientras todos discutían como típicos intelectuales de café diciendo que si la falta de dinero o la ‘indiosincracia’ del latino eran las culpables yo saqué a relucir esa imagen. Como por arte de magia apareció alguien que decía estar desarrollando gráficas por computadora en una sucursal del reputado CALMECAC en el centro del país. Y otro, que aunque mas mexicano que los lancheros que mueven la panza por unas monedas me mentó la madre en sueco y me dijo que con esa diapositiva solo demostraba mi ignorancia sobre los grandes avances en gráficas por computadora hechos por los mundialmente reconocidos desarrolladores mexicanos. Y eso que no escucharon la parte de la conferencia cuyo fondo fue esa imagen. Creo que a la hora de editarla le voy a poner BEEPS a los nombres de empresas e instituciones mencionadas. Aunque estoy bien seguro de que mas de uno de ellos va a reconocer al amigo de un amigo al escuchar los logros ahí mencionados.

Por ahora hago una pausa, en la siguiente entrada hablaré no solo de mi mundano regreso a la ciudad de Monterrey sino de un par de planes que, si todo va bien, podrían convertirse en un grupo dedicado al desarrollo de videojuegos con reconocimiento internacional y el inicio de lo que podría ser la enseñanza de la verdadera programación en Ensamblador en una institución de educación superior. Eso si no se me ocure tomar unas vacaciones en guadalajara o playa del carmen antes de que esto suceda.

Anuncios

noviembre 3, 2009 - Posted by | Uncategorized | , ,

15 comentarios »

  1. como, es q puedes critar las graficas en los juegos actuales, si es q no has realizado nada en la industria, si no has realizado alguna prueba de q tus graficas pueden ser mejores si no hay respaldo en lo q dices, criticas pero no veo resultado.

    Se dice q los toros se ven mejores desde afuera!!!

    Comentario por Jonathan | noviembre 3, 2009 | Responder

    • Sospecho que estuviste presente en el evento porque hasta ahora no he mostrado en Internet las imagenes de la presentacion. En especial la segunda.

      Las graficas de los juegos actuales son buenas pero podrian ser aun mejores o producirse a mucho mas bajo costo. La regla (y esta no es mia sino de uno de los fundadores de PIXAR) es que las mejores graficas por computadora son indistinguibles de la realidad. O como el mismo dijo: “Lo que se ve como buenas graficas por computadora son malas graficas por computadora”

      Ahora que si quieres ver mi trabajo te invito a volverte seguidor de este blog. Si lo descrito en la entrada siguiente se concreta podras ver esas graficas que quieres (y en tiempo real, no simples videos o fotos). Claro, esto no lo voy a hacer solo sino con ayuda de algunas instituciones. Asi que mantente al pendiente.

      Comentario por asm86 | noviembre 3, 2009 | Responder

  2. La verdad estuvo muy interesante la conferencia… y me kede muy sorprendido por el “video” (demo) ke nos mostro, solo me hizo pensar ke la sony (play station) y microsofth (xbox, y xbox 360) nos venden un producto… si no malo… si de baja kalidad para lo ke pagamos por el, sin mensionar las fallas ke tiene el 360, el mas comun el error de las luces rojas, ke avarios de mis cuates ya les ha pasado, pero bueno…
    Mis felicitaciones para el ponente, y yo si estare al pendiente de este blog, ya ke es se me hace muy interesante lo ke esta planeando, ya ke debe de ser algo bueno, por las critikas ke le tira al diseño grafiko de mex…:P
    saludos…
    a solo una pregunta…
    Cual podria ser el mejor, o uno de los mejores juegos en la actualidad?
    gracias…

    Comentario por ojagro | noviembre 4, 2009 | Responder

    • Gracias por tus comentarios, en cuanto al asunto de las consolas como el Xbox 360 y Playstation 3 ambas son excelentes sistemas, el problema es el software. Programar es muy muy caro en cuanto a tiempo y dinero en los paises mas avanzados y a menudo sacan software (en este caso juegos) que no explotan estos sistemas a su máxima capacidad. En el caso particular de la Playstation 3 aún no se llega a su nivel máximo (si es cierto lo que escuché en un segmento del CNN en Español). La ventaja que tiene programar para consolas es que al no haber problemas de compatibilidad es mas facil efectuar optimizaciones exóticas. Aunque parece que falta un buen rato para que estas se alcancen. Estas siempre aparecen cuando el sistema está a punto de salir del mercado.

      En cuanto a lo de cual es el mejor juego eso es una pregunta dificil. Incluso en las premiaciones internacionales como la Independent Game Festival hay diferentes categorías. Unos son muy ingeniosos en cuanto a diseño, otros están muy bien programados y otros mas tienen un arte impresionante. Por desgracia el único criterio objetivo para juzgar un juego son las ventas, aunque ha habido juegos muy buenos que no se han vendido por mala mercadotecnia. El mejor juego debe de sacar lo mejor de un sistema, ser divertido y tener buen precio. Aunque ya en lo personal, a mi me gusta mucho la serie de “Resistance” para Playstation 3. Aunque a\un hasta hoy (noviembre 2009) no ha salido al mercado un juego que lleve a la PS3 a su máxima capacidad técnica.

      Y en cuanto a lo que tengo planeado para el Tec de Zitácuaro espera leer la siguiente nota.

      Comentario por asm86 | noviembre 5, 2009 | Responder

  3. Hola “inge Mario”, a todos los muchachos de Zitácuaro nos da gusto que aya llegado bien pese a todos los rituales judús, que realizamos para ver si en un desatino el avion colapsaba, sobre todo el reducido grupo de Geeks que lo hicimos con tanto fervor, pero bueno despues del respectivo protocolo, es un placer para mi informarle que sin duda alguna seguiremos expectantes a las atinadas y brillantes entradas que sin lugar a dudas leeremos en los proximos dias, las cuales no nos podemos perder sobre todo después de su colaboración en el programa de “igual se trata de trata 2.0” auspisiado por nosotros mismos con la finalidad de conocer gente desarrolladora independiente y que cubra el requisito principal de burlarse de otros….
    De igual modo esperamos el audio de la ponencia el cual nos gustaria que no este editado para poder apreciar en su totalidad todo lo que en esos momentos se grito al mundo entero sobre todo la parte en que “yo” su seguro servidor le hago la pregunta que usted refiere donde lo puse a sudar, quiero que sepa que no me jacto de ello, ya que realmente me interesaba saber lo que usted ha hecho, de cual también esperamos que halla elementos mas notorios en el blog para deliberar acerca de la vaibilidad de su investigación y como pueda impactar esta en nuestra agitada vida. Bien sin otro particular por el momento me despido de usted, le enviamos un coordial saludo….. y por cierto al mas puro estilo James Bond, puede llamarme Mcklein…Toñiero Mcklein.

    Comentario por Toñeiro Mcklein | noviembre 5, 2009 | Responder

    • Mas gracias, de hecho a mi también me hubiera gustado tener algo que comentar sobre lo que he hecho. Pero siempre hay una primera vez para todo y si esto se da bien ustedes podrán ser parte de ello. Pienso ponerme de acuerdo con el maestro Mauricio Delgado y algunos otros directivos para ver si se puede organizar un grupo de desarrollo de videojuegos donde puedan hacerse ese tipo de investigaciones. En realidad no se necesita demasiado, solo un cuarto con unas pocas computadoras con acceso a Internet(que pueden ser las suyas si las tienen) y un pizarrón y si acaso algunos libros que bien podrían quedarse en la biblioteca.

      Afortunadamente con el Internet y este blog podremos ponernos todos de acuerdo sin necesidad de vivir en el mismo lugar. Así que si quieres corre la voz de una vez porque esto se va a poner bueno; nada mas adviérteles que en este grupo se va a programar en Ensamblador (lenguaje máquina para los no conocedores) o cuando mucho en C.

      Comentario por asm86 | noviembre 5, 2009 | Responder

  4. q onda oye haber segun master del ensamblador, me puedes otorgar un manual chingon de ensamblador, aunq apenas estamos empezando a programar en ensablador….

    Como puedes copiar un caddena de caractes y pegarla en el display, si se usa uns la 0Ah, donde te almacena la cadena y como imprimirla?????

    Comentario por jonathan | noviembre 12, 2009 | Responder

    • El mejor de todos los manuales sin lugar a dudas son los manuales de INTEL, ahi encontraras todo lo que necesitas sobre todo lo que puede hacer un CPU, informacion detallada de cada una de sus instrucciones y mucha informacion sobre como programar. Ademas de cosas sobre optimizacion, son varios miles de paginas en PDF que se actualizan cada que sale un procesador nuevo.
      Puedes descargar gratis todos esos manuales en el enlace de la derecha que dice “Manuales de Intel”

      En cuanto a lo de la cadena de caracteres la copias igual que cualquier arreglo ascii. Una manera facil es con la instruccion MOVS, cargas en ECX la longitud de la cadena, en ESI la posicion de origen y en EDI la de la zona de la memoria donde vas a copiarla. Si estas trabajando en l6 bits solo quita la ‘E’ de los registros para que quede como CX, SI, DI. No olvides que en 16 bits SI esta asociado a DS y DI a ES.

      En cuanto a lo de las interrupciones, al llamar a la funcion 0ah de la int21h la cadena se almacena en la posicion de memoria indicada en DS:DX. Para imprimir la cadena a la pantalla llamas a la funcion 9 de la int 21h con DS:DX conteniendo la posicion de la cadena. No olvides que debe de acabar en el signo de dinero ‘$’ para indicar el final.

      Comentario por asm86 | noviembre 12, 2009 | Responder

  5. hola… buscando un tema me encontre con esta pagina…
    estoy estudiando la carrera de ing en sistemas y me gustaria tener comunicacion con usted, pues se me parece interesante… saludos y espero respuesta…

    Comentario por susana | diciembre 5, 2009 | Responder

    • Por supuesto que puedes entrar en comunicacion conmigo. Lo bueno del Internet es que las distancias no importan a la hora de comunicarse. Si quieres puedes comenzar por postear comentarios en las entradas de este blog. Actualmente estoy organizando una red social en la que los programadores de Ensamblador puedan convivir. Aunque aun le falta bastante para ser realmente util.
      Por cierto, dentro de unas 4 notas voy a comenzar una serie de articulos sobre las aventuras y peripecias por las que pasan los estudiantes y maestros de las carreras de Ingenieria en Computacion que estoy seguro les va a gustar no solo a los interesados en programar en ensamblador. Ademas de poner a trabajar un grupo de desarrollo de graficas por computadora en este mismo lenguaje. Y por cierto, tu participacion y la de cualquiera que le interesen estos temas es bienvenida.

      Comentario por asm86 | diciembre 5, 2009 | Responder

  6. antes que nada esta nuy bueno el blog,
    solo un para de preguntas para en pezar!

    — Se puede hacer en ensamblador todo lo que se hace en un
    lenguaje de alto nivel, objetos, clases, funciones,
    reproduccion de video, etc., bueno la pregunta en si
    todo lo que te imagines se puede hacer con assembler?

    — Algo que se hace en FAMS para MsWin se puede usar en
    GNU/Linux, solamente codigo Assembler nada de ventanitas
    MsWin y cosas por el estilo, hablando de la misma
    pc intel compatibles?

    Comentario por RChavz | diciembre 10, 2009 | Responder

    • Gracias por las felicitaciones, ahora vamos con las preguntas:

      1.- Si es posible hacer en ensamblador todo lo que se hace en alto nivel, en el caso de las funciones existen las instrucciones CALL y RET, los mas avanzados CODECS de procesamiento de video estan programados en este lenguaje. En cuanto a lo de las clases y los objetos en ASM hasta hay libros dedicados al tema, pero recuerda que la programación orientada a objetos es una filosofía y nada tiene que ver con ventanas, iconos, sistemas operativos ni hardware. Solo es una forma mas de ver el mundo.

      2.- En cuanto a lo de la portabilidad del ensamblador, el propio FASM está hecho para correr en Windows, Linux, Unix y hasta el viejo DOS. Y la \unica diferencia entre una versión y otra es en la parte en la que interactúa con el sistema operativo. El nucleo es el mismo. Por lo de las ventanas, en linux tienes el famoso “X Window” que te permite manejar ventanitas como el Windows, y si. Puedes programar en ASM con interfaz gráfica en Linux o si eres muy bueno hasta hacer tu propia GUI (Graphic User Interface) para sistemas que no la tengan.

      Comentario por asm86 | diciembre 10, 2009 | Responder

  7. hola necesito un programa en lenguaje ensamblador que me grafique la temperatura, alguien que me peude ayudar…. porfas…
    este es mi correo(ing.favian.sanchez@gmail.com)

    Comentario por favian | marzo 29, 2011 | Responder

    • es por el puerto paralelo, con el de la impresora

      Comentario por favian | marzo 29, 2011 | Responder

      • Si me dijeras para que sistema operativo tienes que hacer el programa podria ayudarte, el acceso a puertos IO es muy diferente dependiendo del OS en el que se programe.

        Comentario por asm86 | marzo 31, 2011


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: