Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

C O N T A C T O

De momento me es imposible aceptar trabajos de tiempo completo o de freelance hasta nuevo aviso

toma externa

Solo digamos que por cuestiones profesionales no voy a poder aceptar trabajos relacionados con la programación en ensamblador, gráficas por computadoras ni mucho menos con desarrollo de videojuegos hasta nuevo aviso. De momento no puedo decirles el porqué. Solo digamos que yo si respeto a la gente que viene a este sitio queriendo aprender a programar y los voy a seguir ayudando hasta donde me esté permitido hacerlo.

En cuanto a cualquier otra actividad relacionada con estos temas voy a seguir contestando dudas por medio de esta web y aceptando invitaciones a eventos offline. Este sitio va a continuar tal y como está y seguiré publicando temas relacionados con la programación en ensamblador, gráficas y los contenidos de siempre.

Mario Salazar
Monterrey Nuevo León, México.

159 comentarios »

  1. Hola, quisiera platicar contigo en algún rato libre que me puedas otorgar, ya te he agregado al messenger, soy estudiante de la uvm de lomas verdes y me interesa el ambito de desarrollo de videojuegos.

    Comentario por Edgar | abril 15, 2010 | Responder

    • Por supuesto, no estoy conectado todo el dia pero si nos podemos poner de acuerdo, supongo que eres “dante” en el messenger. Normalmente estoy conectado por la tarde o bien entrada la noche.

      Por cierto. De casualidad no conoces al maestro Gonzalo Sanchez a.k.a Udii o el “Tio Phill”? Creo que el da clases en esa misma universidad y es bien conocido en el ambito del desarrollo de juegos. Si lo conoces el tambien puede ayudarte a conocer ese tipo de temas.

      Comentario por asm86 | abril 15, 2010 | Responder

  2. hola que tal… mi nombre es cristian y me gustaria contactarme contigo poqur necesito ayuda con ensamblador en linux y no entiendo mucho de este lenguaje… te agradezco la ayuda… pura vida

    Comentario por Cristian | abril 21, 2010 | Responder

    • Pues si quieres contactarme ya conoces el proceso, me dejas una dirección de correo válida y yo te contacto. La que se pide en los comentarios no siempre llega a mis manos.

      En cuanto a lo de linux, si te sirven estos consejos, puedes probar el ensamblador NASM que aunque no es el mejor es sencillo de usar desde linux, puedes escribir el programa con el gedit si encuentras los editores de linea muy complicados, y vaya que lo son. Hay muchas páginas con programas de ejemplo de ensamblador para linux. Si pueden encuentra información sobre la INT 80h, ahi encontrarás todas las llamadas a función de linux desde ASM.

      Avísame si aun después de estos consejos sigues necesitando ayuda.

      Comentario por asm86 | abril 21, 2010 | Responder

  3. Hola Mario,
    avanzo lento pero seguro en la traducción de los tutoriales de ICZELION al FASM, actualmente voy en el 8, pero aqui me estanqué (aún soy muy dummie en esto). Al igual que antes he abierto el ejecutable que viene con el tutorial usando el OllyDBG y copié el codigo en el FASM, pero no logro hacer que cargue el menú de la aplicación. Quisiera enviarte el archivo ASM, a ver si me puedes orientar un poco en lo que me hace falta.
    Gracias

    Comentario por Ricar2 | mayo 14, 2010 | Responder

    • Eso es por la sección de recursos de un programa de Windows. Los archivos de recursos del windows son casi programas compilados y hace falta un compilador de recursos para generarlos. Hay 3 cosas que pueden hacerse:

      1.- Hacer los recursos directamente sin pasar por la sección de recursos. Es lento y revoltoso pero funciona.

      2.- Hacer una sección de recursos directo en FASM llamada section .rsrc aunque para esto vas a necesitar aparte usar un editor hexadecimal puro y conocer el formato de los archivos de recursos porque el ollydbg no es muy bueno analiando estructuras de datos no ejecutables.

      3.- Puedes conseguir un compilador de recursos independiente, hay algunos de uso libre. Solo pon en Google “resource compiler” y generar un archivo de recursos independiente de la aplicación. La ventaja de hacer esto es que puedes hacer cambios a la aplicación sin necesidad de modificar el source code solo cambiando este archivo. Por ejemplo cuando vas a hacer una versión en otro idioma. Para cargar estos archivos llamas a una cierta función de la API de windows que de momento no recuerdo como se llama.

      4.- Ya si quieres ir un poco mas allá puedes intentar programar tu propio compilador de recursos que tome un archivo de texto y lo genere. Sea como sea vas a necesitar conocer la estructura de uno de estos archivos para poder usar recursos en un programa de windows. Por cierto, los recursos abarcan mucho mas que solo menus e iconos, son casi todo lo que llaman layout de una interfaz grafica de un programa para windows.

      Comentario por asm86 | mayo 14, 2010 | Responder

  4. Hola Mario, gracias por tu respuesta.
    El camino que he tomado es tener un archivo de recursos con extensión .rc, pero no sé que código hace falta para cargar dicho archivo. Te agradezco cualquier orientación que puedas dar en esto.

    Comentario por Ricar2 | mayo 15, 2010 | Responder

  5. hola solo tengo una duda que no se si mi profa de ensamblador me responda, en ensamblador se pueden desarrollar interfaces graficas????asi como se pueden hacer programas enormes en java, se pueden hacer en ensamblador???cierto es que es mas dificil pero a mi modo de ver es un poco mas facil que c y java claro ensamblador tambien tiene sus enredos pero por lo que se ensamblador es mas rapido.
    gracias!!

    Comentario por laura | septiembre 11, 2010 | Responder

    • El si un programa puede trabajar con una interfaz gráfica no depende del lenguaje en el que se haya escrito sino del sistema operativo en el que funcione. Por supuesto que en ensamblador es posible utilizar la interfaz gráfica del Windows, solo hay que hacer llamadas a la API (Application Program Interface) y solicitarlo. En esta misma página hay un sencillo hola mundo que despliega una caja de texto con un botón.

      En cuanto a lo de los programas grandes también es posible pero en la práctica muy pocos lo hacen a menos que en verdad necesiten un programa muy pero muy eficiente. Lo que muchos hacen es hacer la mayor parte del programa en C o C++ y solo usan ensamblador para los cálculos mas intensos. En general el ensamblador solo se usa cuando no queda ninguna otra opción pero teóricamente hacer programas grandes y completos no es para nada imposible.

      Comentario por asm86 | septiembre 12, 2010 | Responder

      • esta pagina me gusta, por que ame el ensamblador, soy programador y te respondo, “SI SE PUEDE USAR INTERFASES GRAFICAS”, puedes usar las de windows si aprendes como enlazarlas y llamarlas, o puedes crear tu propia libreria es decir crear tus propias rutinas que manipulen la memoria de video, que es el lugar donde debes poner todo lo que quieres mostrar en pantalla, y llamarlas contu codigo assembler con sus parametros te costara mucho tiempo creo que te resultara mas facil aprender a usar las basicas de windows para poner una ventana, ponerle barras de dezplamiento, desplegar dibujitos etc

        igual puedes empezar desde desarollar tu sistema operativo, un sistema operativo que se cargue solo para manipular vido pudiendo omitir secciones de red o manejo de usb, solo rutinas de video y el programa que muestra algo

        Comentario por Victor Villalobos | noviembre 6, 2016

  6. Hola, fui programador en lenguaje maquina del 8086, ensamble programas con el debug.com,
    solo programe en modo real, aun con el 386.
    nunca he usado un ensablador com NASM
    tengo 20 años haciendo programas simples, tal vez podamos compartir anecdotas y experiencias.
    escribeme…!

    Comentario por Gabriel Amezquita Delgado | septiembre 19, 2010 | Responder

    • Yo todavia programo con el debug.com pero en una 8088 y funciona bastante.

      Si programaste con el debug.com mis respetos.

      Comentario por b1ackpig | septiembre 21, 2010 | Responder

      • modifique el debug para hacer mi propio assembler, un archivo que tenia los opcode directos sin cabecera o directivas aprendi assembler como pude, no se donde quedo pero lo hize

        Comentario por Victor Villalobos | noviembre 6, 2016

  7. Hola espero que te encuentres bien, tu no utilizas el RadASM? que opinion tienes de el?
    Epa gracia por la información

    Comentario por Elvis Cortijo | octubre 12, 2010 | Responder

  8. hola buenas tardes lo que pasa es que tengo que hacer un robot suguidor de linias que controle dos motores y 5 sensores cy270 pero la verdad tengo problemas con el programa por que es para un proyecto escolar espero que me puedas ayudar y decirme cuanto cuesta gracias espero tu respuesta

    Comentario por juan | noviembre 5, 2010 | Responder

    • Bueno, la verdad es que no tengo practica programando robots y no podria hacer mucho para ayudarte por ahora.

      Comentario por asm86 | noviembre 9, 2010 | Responder

  9. Mario , necesito tu ayuda , quiero saber como puedo hacer un print screen y llevarlo a bmp.
    Me puedes ayudar , es para un programa que estoy haciendo en asm.

    Saludos
    Respondeme please.

    Comentario por Yuri | noviembre 22, 2010 | Responder

    • De aqui al viernes voy a estar un poco ocupado pero puedes investigar las llamadas a las funciones GDI y GDI+ de Windows. Hay unas que pueden manejar tanto la salida por pantalla e impresora usando el formato BMP e inclusive es posible (o al menos lo era en un tiempo) poner estos comandos en ciertos archivos que no tengan extension EXE. El tema de los Memory Mapped Files tambien puede serte de utilidad. Incluso hay una funcion de la API de Windows que puede leer directo del clipboard y guardarlo en un archivo.

      Estos proyectos se ven muy interesantes y bien vale la pena que hable de esos temas mas adelante, pero por ahora tengo algunos problemitas que tengo que resolver offline, por eso no habia podido contestar.

      Comentario por asm86 | noviembre 22, 2010 | Responder

  10. ya te envie un correo a gamep… con el resultado de mi programa , aun en desarrollo.

    Saludos hermano.

    Comentario por yuri | noviembre 29, 2010 | Responder

  11. Saludos–
    Soy nuevo en este mundo me gustaria saber por donde empezar– para manejar dicho lenguaje te agredezco que me orientes–
    Gracias

    Fernando Diagama

    Comentario por diagama | diciembre 28, 2010 | Responder

    • Te recomiendo que descargues el FASM de flatassembler.net e intentes teclear los programas sin preocuparte por que funcionen. Luego lee los manuales de Intel cuyo link se encuentra a la derecha de esta pagina. Lee todos los documentos sobre ensamblador que encuentres sin importar si son muy viejos u obsoletos y lee de vez en cuando este blog para estar al pendiente y sobre todo lee sobre temas tan elementales de la programacion como el sistema binario y logica matematica.
      Ten paciencia y nunca te detengas, el lenguaje ensamblador es el lenguaje de las computadoras y puede tener sus diferencias entre un tipo de computadora y otra (como las PC con CPU de intel y los telefonos moviles con CPU ARM) pero todos entienden el sistema binario.

      Comentario por asm86 | diciembre 29, 2010 | Responder

  12. hola buen dia , me gustaria conversar contigo sobre un proyecto simple para un pic .

    por ru atencion gracias , anexe mi correo .

    :)

    Comentario por Adrian Muñoz | enero 27, 2011 | Responder

    • Si quieres contactarme, puedes dejarme una direccion de correo electonico o tu MSN, yo me encargare de comunicarme contigo en cuanto lo tenga

      Comentario por asm86 | enero 29, 2011 | Responder

  13. neitor30@hotmail.com

    Comentario por adrian | enero 29, 2011 | Responder

  14. yo tambien tengo algunas dudas.. =) si puedes agregame a al MSN nero903@hotmail.com

    Comentario por Pavon | enero 30, 2011 | Responder

  15. a ambos ya les envie la invitacion este jueves 3 de febrero, espero que no sea demasiado tarde porque no pude conectarme bien en todo lo que va de la semana

    Comentario por asm86 | febrero 3, 2011 | Responder

  16. =) gracias..

    Comentario por Pavon | febrero 4, 2011 | Responder

  17. como a que hora te conectas en el messenger para poder contactarte

    Comentario por Adrian Muñoz | febrero 5, 2011 | Responder

  18. En estos dias me dejaron un trabajo en la universidad de llevar un programa hecho en assembly y me abrio mucho mi mente.
    Pensaba que el assembly era un lenguaje oscuro y muy muy dificil y ps la verdad si es muy dificil jejeje pero Estoy completamente entuciasmado para aprenderlo cueste lo que cueste.
    Me parece excelente Sus aportes, Gracias!

    Comentario por DMihawk | marzo 1, 2011 | Responder

  19. Hola amigo, soy de Peru y tengo un problema muy grande, por lo que he leido se que me puedes ayudar, mi correo es: leosanzio@yahoo.com, por favor contacte conmigo para trabajar juntos, gracias.

    Comentario por Leonardo | marzo 5, 2011 | Responder

    • Acabo de mandarte un correo para que te comuniques conmigo en forma directa y me digas exactamente como te puedo ayudar. Pero el sistema no me recibe el correo y me envia el mensaje Delivery Status Notification (Failure)‏. Si puedes darme el nombre de otra cuenta o contactarme por estos mismos comentarios

      Comentario por asm86 | marzo 7, 2011 | Responder

  20. hola, amigo me gustaría tener tu ayuda para un proyecto de la uni, lo tengo que hacer en nasm, supongo que es algo sencillo, pero es que no encuentro buena información sobre nasm linux. Si me ayudas a encontrar guías, o tutoriales, ejemplos en nasm estaría muy agradecido. Espero tu respuesta, gracias.

    Comentario por emisael | marzo 29, 2011 | Responder

    • El ensamblador para sistemas basados en procesadores intel o compatibles siempre es el mismo, solo hay diferencias ligeras de sintaxis. Puedes encontrar la sintaxis del NASM junto con su manual en el website del nasm. Para tener mas acceso al sistema puedes descargar las llamadas de la interrupcion del sistema, solo googlea “int 80h”, es facil de encontrar. puedes encontrar mas informacion de ensamblador para linux en linuxassembly.org

      Comentario por asm86 | marzo 31, 2011 | Responder

  21. K onda bueno muy interesante todo el blog soy novato en esto de aprender ensamblador y en muchos aspectos me late todo lo que dice ( desde la queja a la industria y el patearle los …vos a los estandares del desarrollo actual) y bueno ya se que aunk mucha critica mi idea actual y proyecto en proceso es un os que realmente funcione como debe ser no como las decepciones de vista y 7 que solo sirven para que la pantalla del escritorio se vea apantalladora pero las demas funciones y aprovechamiento del procesador estan para la basura tanto en la clasica x86 como en las nuevas arquitecturas de nucleos multiples te agradesco men y espero seguir en contact x cierto soy de gdl

    Comentario por Heartless82 | marzo 31, 2011 | Responder

  22. hola, necesito platicar sobre un problema q me ha surgido en LINUX, ya que necesito realizar el juego sencillo de adivinar numeros, sin embargo esto del ensamblador es nuevo para mi, y no se como utilizar el RANDOM, porfa en cuanto puedas dejo ahi mi correo
    saludos

    Comentario por fernando | abril 26, 2011 | Responder

    • una salida rapida es ejecutar RDTSC y quedarte con los ultimos bits de EAX, con los 3 mas bajos puedes obtener un numero entre 0 y 7, no es random pero es muy dificil que se repita. Para hacer una subrutina verdaderamente random investiga el metodo de congruencia lineal que no voy a explicar ahora porque no hago tareas escolares gratis. Pero los ultimos bits del RDTSC te serviran bien.

      Comentario por asm86 | abril 27, 2011 | Responder

      • ok, pero tengo una duda, te comentaba lo del random porq encontre una funcion de sistema q es echo $RANDOM, no la podria utilizar???

        Comentario por fernando | mayo 1, 2011

      • pues si puedes llamarla desde ensamblador adelante.

        Comentario por asm86 | mayo 2, 2011

  23. Hola amigo creo que esta pagina llego ami por un milagro ajaja me gustaría mucho contactar contigo por algunas ideas que tengo a futuro y para poder habkarte acerca de programacion, por favor espero que podmaos contactar

    gracias
    ROY

    Comentario por Roy Gracia | mayo 24, 2011 | Responder

    • De acuerdo, si el email que que me diste es el correcto, voy a comunicarme contigo por Messenger en los proximos dias

      Comentario por asm86 | mayo 25, 2011 | Responder

  24. ¿Cual es tu opinión de Unlimited Data(http://www.youtube.com/watch?v=00gAbgBu8R4)?¿Es puro trollface.jpg o estamos ante los mendeleiev de las gráficas computacionales?

    Comentario por anon | agosto 3, 2011 | Responder

    • No se si este video en particular sea real o no pero lo que se dice en el es perfectamente posible. Se llama Modelado Procedural y consiste en crear un objeto con rutinas en lugar de leerlo de un archivo.

      Piensa en una esfera que mientras mas te acercas a ella se despliega con mayor cantidad de poligonos. Aunque la esfera esta definida solo como una esfera se crea de modo dinamico cuando la miras. Tales caras pueden ser tan reducidas como un pixel y ser interpretadas como muchas esferitas . Un buen ejemplo de esto es el raytracing que toma la interseccion de un rayo que pasa entre el pixel y la superficie. Hay tantos rayos como pixeles en pantalla.

      Lo que suena sospechoo del video es como lo anuncian como “detalle infinito”. Eso es como decir que el pan no engorda solo porque no tiene grasa animal.

      Comentario por asm86 | agosto 4, 2011 | Responder

  25. Buenas tardes, quisiera hacerte una pregunta, sobre un programa en ensamblador que estoy haciendo, fijate que no se como lograr calcular la edad a partir del año que ingreo :S! si me podrias ayudar dandome una idea te lo agradeceria muchisimo, que no se como puedo hacer el calculo muchas gracias

    Comentario por Rafael | agosto 25, 2011 | Responder

    • simplemente ingresa el año de nacimiento y el año actual y restalos. El resultado de la resta es la edad y asunto arreglado. Aunque la verdad ese metodo no tiene nada que ver con programar en ensamblador

      Comentario por asm86 | agosto 25, 2011 | Responder

  26. Hola… Me he encontrado este blog recomendado por un amigo… realmente espectacular..

    Yo tb tengo un blog de creación de videojuegos (http://lordpakus.blogspot.com/ por si le quieres echar un ojo) y he creado un directorio de blogs y páginas sobre tecnologia en general y programación en especial (http://dirprog.blogspot.com/ ) . Si te interesa , te podrías unir (tu y quien quiera) a la iniciativa, no es más que una forma de hacer llegar los blogs modestos al gran público.

    Espero que te guste la idea y nuevamente, felicidades por el blog

    Comentario por LordPakus | octubre 3, 2011 | Responder

  27. hola amigo necesito ayuda estoy empezando la programacion en simuproc pero me dejaron un ejercicio el cual es el siguiente no se si me puedes ayudar: un programita en simuproc que ingreses un N numero de alunmos y que pida cuales son hombres o mujeres y al final me diga cuantos fueron hombres y mujeres te lo agradeceria mucho si de corazon me ayudaras porfavor

    Comentario por jesus guzman | noviembre 16, 2011 | Responder

    • Primero haz un ciclo con Loop dependiendo de cuantos alumnos vayas a capturar, dentro de cada ciclo almacena el nombre como cadena ascii. Para los generos puedes usar un simple byte a modo de bandera de modo que cero sea hombre y uno mujer (o al reves si quieres) o dos bytes que indiquen si son o no son hombres o mujeres (no olvides una mascara XOR para evitar que digan que son las dos cosas). A la hora de desplegar la informacion solo despliega las cadenas de nombre junto con otra que diga “es hombre” o es “mujer” que seleccionaras para elegir esta cadena usa un par de saltos condicionales leyendo las banderas de genero. Finalmente suma los valores de las banderas de genero y obtendras cuantos hay de cada uno. Para leer las cadenas usa una funcion del sistema operativo y las banderas manejalas con instrucciones como TEST, CMP , AND y OR. Espero que te sirva, de momento no puedo contactar a nadie por motivos que prefiero no explicar

      Comentario por asm86 | noviembre 16, 2011 | Responder

      • ok amigo pues mira la verdad no tengo ni idea como se usa ese loop pero are todo lo posible y si no creo que te voy a volver a molestar para que me ayudes….. porfavor

        Comentario por jesus | noviembre 16, 2011

  28. hola amigo quisiera que me respondieras esta pregunta como se llego a programar las primeras pc si no tenian ningun sistema ni programa,ni sistema operativo, ni nada cual fue la base de esa programacion.

    Comentario por freddy ferrer | diciembre 2, 2011 | Responder

    • El concepto de lenguaje de programación es relativamente reciente. En inicio las primeras computadoras no eran mas que circuitos de cables e interruptores que solo podían hacer aquellos cálculos para los que habían sido creados. Si querían que las computadoras hicieran otra cosa era necesario reconectar todos los cables en otro orden. Esos cables y conexiones capaces de calcular y tomar decisiones son la basé de lo que hoy conocemos como lógica digital.

      Pasado el tiempo surgió la idea de crear un circuito que en lugar de tener que desarmarse fuera capaz de leer y ejecutar instrucciones. Ahí nació el microprocesador. Ahora ya no había necesidad de reconstruir el circuito sino solo de cambiar los contenidos de una memoria. Ese primer lenguaje que no eran mas que ceros y unos fue nuestro querido Lenguaje Máquina. Ese fue el inicio de lo que conocemos hoy como programación. Con el tiempo se hicieron lenguajes mas sencillos de entender que los ceros y unos (el ensamblador fue el primer paso pero nunca se desligó por completo del lenguaje máquina), se construyeron sistemas operativos, herramientas y el resto es historia.

      La PC es otra asunto, cuando se crearon microprocesadores lo bastante baratos para ser comprados por civiles los aficionados a la electrónica construyeron computadoras lo bastante pequeñas y baratas para experimentar con ellas en casa, uno de estos entusiastas fue el cofundador de Apple Steve Wozniak. Luego empresas de electrónica fabricaron este tipo de dispositivos en masa e inició el mercado de las computadoras personales (PC) que conocemos hoy, que por cierto aun pueden ser programadas en ensamblador y lenguaje máquina como en la antiguedad.

      Comentario por asm86 | diciembre 3, 2011 | Responder

  29. y biem como hago para crear un sistema operativo desde 0 a si como se creo el ms-dos .

    Comentario por freddy ferrer | diciembre 3, 2011 | Responder

    • Lo primero es crear un bootstrap loader que es un programa escrito en una sección del disco que se ejecuta de manera automática al arrancar el sistema. Puedes aprender mucho sobre como se hacer un sistema operativo gráfico de 32 bits a partir de la nada si buscas en Google “MenuetOS”. Que es un sistema operativo programado en ensamblador hecho en europa oriental. El código es libre y hay mucha documentación disponible.

      Hace mucho yo intenté hacer un OS. No llegué a ningun lado porque no quise pero aprendí mucho intentándolo. Incluso tengo una serie de 4 entradas donde conté esa historia. Definitivamente el intentar hacer un OS es un paso obligado para cualquier programador que quiera en verdad aprender.

      Comentario por asm86 | diciembre 3, 2011 | Responder

      • mechas grasias he, quiero que sepas que te pregunto tanto por que en verdad me gusta programar,me sali de la uni por que vi que no iva a llegar a algun lado con lo que dan hay de programacion grasias.

        Comentario por freddy ferrer | diciembre 3, 2011

      • en realidad si puedes llegar a algo si te titulas, conozco a muchos desarrolladores que no pudieron vender sus juegos y ahora se ganan la vida dando clases por horas. Por lo que pagan y lo que cuesta es mejor negocio ganarse la vida en cualquier otra cosa. Recurre a la escuela para aprender y no la uses como agencia de recursos humanos. Puede que encuentras la inspiracion que estas buscando en estas 4 entradas:

        Revolución de 32 Bits

        Destierro de 32 Bits

        Vagabundos de 32 Bits

        Revancha de 32 Bits

        tengo problemas para poner enlaces en los comentarios pero puedes poner el nombre de estas entradas en el buscador del blog

        Comentario por asm86 | diciembre 3, 2011

  30. me prodrias contar la historia sobre la consola coreana GP32

    Comentario por freddy ferrer | diciembre 4, 2011 | Responder

    • El GP32 fue una consola portatil de videojuegos lanzada a finales del 2001. A nivel hardware era muy similar a la Game Boy Advance de Nintendo pero su desarrollo era mucho mas abierto. Los mas interesante era que además de los juegos comerciales podía correr software libre. Por lo que era posible que un programador de cualquier parte del mundo aprendiera a programar un GP32 y luego pudiera vender sus aplicaciones por un sistema muy similar a lo que hoy hacen las tiendas de aplicaciones móviles para teléfonos inteligentes (appstore, android market, ovi store, etc).

      Era posible ganarse la vida con este aparatito si uno era lo bastante buen programador y tenía la suficiente paciencia para aprender a hablar coreano. Eso fue lo que la hundió, pues aunque la consola se vendió en todo el mundo el único mercado sólido para vender juegos era Corea del Sur. El GP32 era muy poderoso para su tiempo, pues en el 2002 ya era capaz de manejar juegos multiplayer local y en linea, suscribirse a sistemas de video por internet para ver películas, era un buen reproductor portatil de MP3 y sobre todo era capaz de correr juegos 3D. Este sistema dejó de fabricarse alrededor del 2008.

      Mi historia con el GP32 fue corta pero emocionante y la contaré en detalle en una entrada algún dia. De momento solo comentaré que dejé sin terminar un modesto entorno de desarrollo que incluia un ensamblador/ desensamblador que podía trabajar directamente con sus archivos ejecutables FXE y un convertidor de archivos gráficos que podía convertir imágenes creadas en otros editores gráficos al extraño sistema que tenía para desplegar gráficos en pantalla.

      Como ya saben la historia terminó mal y se me obligó a rehacer mis estudios en una universidad para hijos de trabajadores (o mas bien para trabajadores con hijos) y cuando salí no solo se fue al demonio el negocio con los coreanos sino que además yo estaba mas pobre, mas viejo y mas amargado de lo que estaba cuando me expulsaron de la facultad de Matemáticas. Lo mas humillante es que esos estudios tan valorados por los ancianos solo me sirven para obtener trabajos malpagados manejando software de bases de datos ya hecho y resolviendo problemas que son mas administrativos y contables que tecnológicos. Puede que no muera de hambre pero soy incapaz de vivir dia a dia con mi propia deshonra.

      En fin, cualquier estudio universitario que me hubiera servido para programar pude haberlo conseguido por mi mismo leyendo libros. Es por eso que ataco tan ferozmente a cualquier autodenominado productor de videojuegos que exija un título profesional como condición para trabajar para él. Solo les perdono esta acción a las escuelas y unicamente para trabajos relacionados directamente con los estudios que piden, es decir nada de comunicólogos dando clase de programación de videojuegos.

      Hoy en día, las oportunidades como la del GP32 abundan para los programadores emprendedores que saben buscarlas. Actualmente estoy ahorrando para volverme a lanzar como desarrollador independiente, pero no porque programar requiera mucho dinero. Sino porque programar demanda mucho tiempo y hay que tener suficiente comida congelada para resistir. Hasta entonces, continuaré perfeccionando mis habilidades y compartiendo mis descubrimientos con todos aquellos programadores que realmente se interesen por el Ensamblador y el Lenguaje Máquina.

      Comentario por asm86 | diciembre 4, 2011 | Responder

      • estoy mas orientado sobre la programacion en ASM al fin,para proramar en asm es nesesario entender la arquitectura del procesador , y todos sobre asm ,ya e leido varios articulos y estoy con el desarrollo del sector de arraque e encontrado mucha informacion y estoy interpretando poca a poco

        Comentario por freddy ferrer | diciembre 4, 2011

  31. me encanta esta musica

    Comentario por freddy ferrer | diciembre 14, 2011 | Responder

  32. Muy bueno tu blog, y te entiendo he visto gente que se aprovecha mucho en una forma no muy etica.

    Saludos

    Comentario por Anon | enero 3, 2012 | Responder

  33. buenas amigo usted nunca a desarrollado un motor grafico propio desde 0 me gustaria saber como hacerlo desde 0 :D

    Comentario por freddy ferrer | enero 9, 2012 | Responder

    • La definición de motor no es sencilla, yo le llamo motor a lo que queda de un juego cuando le quitas todos los datos relacionados con el arte y dejas solo funciones reutilizables. Pero actualmente se le llama así a complejos sistemas de desarrollo compatibles con lenguajes de scripting. En el caso de los videojuegos el engine nace del juego y no al revés como muchos creen.

      En cuanto a hacer un engine desde cero, lo mejor es aprender primero los algoritmos geométricos y las matemáticas básicas que los hacen funcionar. Esto puede tomar algunos años pero nunca se van a hacer obsoletos. Luego aprende todo lo que puedas sobre el hardware de desarrollo y cuando domines por lo menos el conjunto de instrucciones y funcionamiento interno estudia el software con el que vas a interactuar, como sistema operativo, drivers y cualquier otro módulo de software que se interponga entre el hardware y tu. Considérate capaz de empezar a hacer tu motor gráfico cuando puedas entender las estructuras de datos con solo verlas en hexadecimal y puedas definir cualquier objeto del mundo con expresiones matemáticas programables.

      En mi experiencia puedo decirte que lo que he aprendido sobre gráficas por computadora (y que estoy publicando en este blog) me tomó mas años para aprenderlo que lo que me tomó hacer cualquier carrera universitaria. Y si me hubiera aplicado a la escuela como todos los otros matados ahora mismo estaria llevándole el café a un ayudante de administrador de bases de datos en alguna empresita de mala muerte o peor aun en alguna de esas granjas de codigo que los hindues han puesto de moda y de la que me hubieran echado a la calle al llegar a los 30. Solo puedo decirte que para hacer un motor 3D (e incluso uno 2D con capacidades vectoriales) necesitas saber matemáticas y si quieres que el motor sea eficiente también ensamblador. Ten paciencia y comienza por apender las matemáticas que esas no se hacen obsoletas

      Comentario por asm86 | enero 11, 2012 | Responder

      • muy buena tu respuesta sabes no tenia ni idea de que un motor grafico funcionaba haci, muy buena tu pagina he aqui e aprendido cosas que nunca he podido aprender en ningun otro lado ni en la universidad,bueno actualmente estoy leyendo LA SAGA DE PROGRAMACION GRAFICA 3D espero aprender algun dia. muchas gracias por responderme :D

        Comentario por freddy ferrer | enero 11, 2012

  34. Cuando era jóven, y tenía aquel tipo de ordenador que parecía una caja de zapatos, al encenderlo me salia una pantalla negra donde poner las líneas de códigos para crear juegos y otros programas sencillitos. Mi pregunta es la siguiente: ¿se podría hacer con los ordenadores de ahora? ¿Esto no se llama programar directamente?
    POR FAVOR EXPLICAME :D

    Comentario por freddy ferrer | enero 12, 2012 | Responder

    • Creo que te refieres a las computadoras Commodore de 8 bits o algunos modelos de Atari como podría ser la XE. En esos dias, incluso las PC con DOS contaban con un interprete de BASIC integrado en su memoria de solo lectura. Hasta tiempos del 486 aun se podían encontrar los restos de este intérprete en una región muy específica del primer megabyte de memoria. En realidad ni siquiera eran códigos ejecutados directamente sino interpretados. Es decir que había un programa que leia tus instrucciones y luego de leerlas las ejecutaba. Lo que era muy lento.

      La respuesta de si puede hacerse eso con las computadoras actuales tiene truco. Actualmente cualquier computadora comienza a ejecutar código en cuanto su CPU arranca. Varía de un sistema a otro pero el proceso es mas o menos el mismo en todo sistema con un CPU, que es cargar instrucciones almacenadas en algún lugar del sistema. Ya sea un ROM BIOS, firmware o una sección del dispositivo de almacenamiento interno. Entonces la respuesta de si se puede programar directamente una computadora actual es si. Sin embargo una computadora no puede ser programada desde cero por si misma del mismo modo que una persona no puede nacer por si sola. Normalmente se usa lo que se llama un Cross Assembler que es cuando tienes 2 computadoras, con una creas los programas y con la otra solo ejecutas lo que programaste en la primera. Las consolas de videojuegos, los dispositivos móviles mas reducidos y los controladores usados en aparatos electrónicos industriales se programan de esta manera. Toma en cuenta que una computadora puede tener cualquer forma y no siempre es una PC de escritorio con monitor y teclado incluidos.

      Comentario por asm86 | enero 12, 2012 | Responder

  35. hola,soy nuevo en esto de la programación y no se nada de nada,pero aun así quiero aprender a usar este lenguaje de programación llamado ensamblador que según usted es el mas “dificil de los lenguajes de programación”

    cosas creadas con esto le veo mejor futuro que con otros lenguajes.

    ayer descargue el progrmama que usted usa el flat ensambler…vi los ejemplos que la descarga tenia incluida y vi uno que me parecio interesante,uno donde me aparecio un aviso(no recuerdo lo que decía) cuando hacia click en no se salio,pero cuando le hacia click en yes se habría el lector de CD/DVD de mi computadora,entonces quisiera preguntarte como es eso posible? y como podria hacerlo yo,pero en español diciendo:
    ______________________________
    * quieres abrir tu lector CD/DVD? *
    * *
    * ( > si) O (>no) *
    * *
    ______________________________

    Comentario por armorineSKY | enero 29, 2012 | Responder

  36. Lo que dice el ejemplo es si necesitas espacio para poner la cerveza (como si la bandeja de CD fuera un portavasos), lo que el programa hace es simplemente llamar a una funcion del sistema operativo. No es tan impresionante una vez que entiendes el codigo. La parte mas dificil es entender como el fasm llama a una funcion del sistema operativo pero una vez que entiendes eso puedes llamar cualquier otra funcion del sistema sin importar lo que haga con solo conocer sus argumentos

    Comentario por asm86 | enero 30, 2012 | Responder

    • ok,peor del code no entiendo nada niq eu signica nada de lo que es xD

      no se hacer pero nada con el ensamblador pero me gustaria hacerle un laucher a un juego,como ago eso?

      un menu pequeño donde al darle clcik jugar me pida el CD y habra el lector del CD luego de que se cierre y este ejecute el archivo exe dle juegoq ue este en el CD….claro no quiero ser lamer y que me dne un codigo xD,yo quiero aprender a hacer todo eso….

      he incluso quisiera saver como pueodo crearme un juego,no importa que tna pequeño xD sea no me importa que sea un space inavder creado en ensambaldor lo que me importa es que quiero aprender a hacer cosas con ensambaldor

      asi qeu por donde puedo empesar? porque hay muchos articulos en este block y no se por donde empesar…me dan una ayudita?

      Comentario por armorineSKY | enero 30, 2012 | Responder

      • He escrito un directorio con entradas para los principiantes, puedes llegar ahi por medio del enlace que dice “desde cero” en el apartado de SAGAS. No te preocupes si no entiendes nada. Yo estuve igual, ya veras que si le dedicas tiempo pronto seras capaz no solo de entender el codigo fuente sino incluso el lenguaje maquina en un editor hexadecimal

        Comentario por asm86 | febrero 3, 2012

  37. ok,peor del code no entiendo nada niq eu signica nada de lo que es xD

    no se hacer pero nada con el ensamblador pero me gustaria hacerle un laucher a un juego,como ago eso?

    un menu pequeño donde al darle clcik jugar me pida el CD y habra el lector del CD luego de que se cierre y este ejecute el archivo exe dle juegoq ue este en el CD….claro no quiero ser lamer y que me dne un codigo xD,yo quiero aprender a hacer todo eso….

    he incluso quisiera saver como pueodo crearme un juego,no importa que tna pequeño xD sea no me importa que sea un space inavder creado en ensambaldor lo que me importa es que quiero aprender a hacer cosas con ensambaldor

    asi qeu por donde puedo empesar? porque hay muchos articulos en este block y no se por donde empesar…me dan una ayudita?

    Comentario por armorineSKY | enero 30, 2012 | Responder

  38. Hola Mario, soy de Argentina, y hace varios años que leo tus excelentes artículos, también estaba en la red social para programadores de Ensamblador, que no esta mas en linea. Es verdad lo que escribiste – Lenguaje Ensamblador ¡El mas dificil de dominar de todos los lenguajes de programación en la historia de las computadoras!. Esos dos libros de la foto, donde aparece la pizarra, el joystick y la PC, ¿son libros de Ensamblador?.
    ¿Que libros de Ensamblador recomendarías?
    Gracias!!! por tus grandes e intelectuales aportes.

    Comentario por Adrian | febrero 3, 2012 | Responder

    • Los libros de la foto no son de ensamblador sino de gráficas por computadora. El blanco en “Computer Graphics Principles and Practice” escrito por James Foley y es de los libros clásicos el mas importante para aprender sobre programación gráfica 3D. El verde es otro libro clásico de gráficas “Computer Graphics” escrito por Hearn y Baker.

      En cuanto a libros de ensamblador te recomiendo para empezar el de Barry Brey “Los Microprocesadores Intel”. Aun las ediciones antiguas son buenas para aprender como funciona el ensamblador. Luego puedes leer los manuales de Intel (puedes descargarlos gratis del enlace que dice “manuales de intel”). Puede que necesites leer algunos libros sencillos de electrónica y lógica digital para entender algunos conceptos de ensamblador. Aunque hablando de libros, te recomiendo “El Arte de la Programación de Computadoras” de Donald Knutt. Es antiguo pero luego de leerlo vas a ver las computadoras de otra manera.

      Comentario por asm86 | febrero 3, 2012 | Responder

  39. Muchas gracias Mario por el grandisimo aporte. Si es verdad me vi obligado a hacer un curso de electrónica digital cuando arranque con este apasionante lenguajes de programación. Hace unos meses compre el libro “El Arte de la Programación de Computadoras” de Donald E. Knuth que me recomendas, y veo que tendré que profundizar mis conocimientos en matemáticas, es un libro apacionante, un tesoro, como ese articulo que habías escrito “El Petroleo Informático: aprender de los antiguos Maestros”, en esos tiempos los Programadores eran todos científicos. Hoy alguien que escribe unas rutinas en cualquier lenguaje moderno se hace llamar programador, sin tener noción de lo grande y amplio que es este apasionante Don de Programar.
    Dejo un pequeñito fragmento de texto del prefacio del libro de Donald E. Knuth
    “El proceso de preparar programas para un ordenador digital tiene un atractivo especial, no solo por que puede ser recompensado económica y científicamente, sino también por que puede ser una experiencia estética como la poesía o la música.”

    Comentario por Adrian | febrero 4, 2012 | Responder

  40. OK gracias!…

    si le dedico una hora diaria como cuanto crees me tarde en aprender a usar este lenguaje?

    Comentario por armorineSKY | febrero 5, 2012 | Responder

    • Toma todo el tiempo que quieras pero nunca dejes de practicar o leer sobre ASM aunque sea poco ni un solo dia. Tu mismo sabras cuando hayas aprendido sin que nadie te lo diga. La pregunta es dificil y depende de cada quien

      Comentario por asm86 | febrero 7, 2012 | Responder

  41. Mario me sorprendió leer todos tus comentarios y la aportación que haces de manera gratuita, realmente estoy muy bien impresionada y creo que es el momento de pensar en abrir una carrera que pudiera tener todo lo que necesita un estudiante interesado en el mundo de la programación. Yo dirijo un Instituto de educación que esta abriendo oportunidades en diferentes áreas a nivel licenciaturas y posgrados me gustaría platicar contigo de este tema , el mail al que pudieras dirigirte es auroradelapena@hotmail.com , estoy a tus órdenes y espero podamos contactarnos.

    Comentario por aurora de la peña | febrero 23, 2012 | Responder

    • Acabo de enviar un correo a la dirección del comentario. Espero poder contactar y colaborar en lo que me sea posible con su proyecto. Disculpe la tardanza.

      Comentario por asm86 | febrero 27, 2012 | Responder

  42. hola bro me interesaría platicar contigo un rato cuando puedas soy estudiante de la prepa de la uanl.
    y bueno quisiera ver si me puedes explicar sobre ensamblador y un poco mas sobre C
    honestamente nunca me he metido a estos lenguajes por falta de tiempo pero ahora que puedo quisiera saber si me puedes explicar por favor. ya que mi mayor sueno y anhelo es estudiar una licenciatura y maestría en vídeo juegos.en la universidad de hal en japon pero para eso quiero irme preparado con lo mas interesante que en este caso es ensamblador.

    te dejo mi msn kira_otaku2011@hotmail.com si no estoy en ese me encuentras en kakaruelo@mundoanimehd.com

    un saludo bro y buena tarde.

    Comentario por Jose (kakaruelo) | mayo 2, 2012 | Responder

  43. Hola! Quería que me ayudaran a crear un juego en lenguaje ensamblador. El juego es “Hundir la flota” (Battleship).
    ¿Alguien sabe como?

    Se lo agradecería eternamente.

    Un saludo

    Comentario por Javi | mayo 23, 2012 | Responder

    • Puedes definir 2 arreglos, uno con las coordenadas verticales y otro con las horizontales. Al iniciar la partida inicializas todas las posiciones con ceros y escribes unos en donde vayas a colocar los barcos. Los jugadores introducen las coordenadas en cada ciclo y se toman esos valores como los índices del arreglo. Si en ambas posiciones hay unos significa que dio en el blanco, de lo contrario el tiro cayó al agua.

      Este juego puedes hacerlo en modo texto sin necesidad de dibujar nada. Algunas optimizaciones que puedes hacer es que el tablero sea de potencias de 2, por ejemplo de 16 por 16. Así usas un solo arreglo en lugar de 2 y armas el índice con desplazamientos de bits y algunas máscaras. Te aconsejo que cuando quieras hacer un juego de computadora que simule un juego de mesa intenta primero jugar la versión de papel pero ayudado por la computadora (los mas sencillos son los juegos que usan dados), luego en la entrada del jugador como oprimir teclas y deja las gráficas y efectos especiales para el final. Como me imagino que es una tarea, creo que te basta el consejo dado en el inicio del comentario.

      Un dia quiero hacer una entrada donde se muestre como programar un Serpientes y Escaleras. Ese juego se presta mucho para enseñar a programar videojuegos en ensamblador.

      Comentario por asm86 | mayo 23, 2012 | Responder

  44. buenas este para programar en esamblador es necesario saber algoritmos o seudocodigo espero su respuesta

    Comentario por freddy ferrer | mayo 30, 2012 | Responder

    • Para hacer programas en ensamblador solo necesitas descargar el compilador, escribir programas en el editor que cumplan con la sintaxis y crear el ejecutable oprimiendo F9 (o usando la versión de linea de comando)

      Saber algoritmos y pseudocodigo puede ayudarte a resolver los problemas de programación que necesites. Te recomiendo que le des una leida a los manuales de Intel y luego descargues el FASM.

      Comentario por asm86 | mayo 30, 2012 | Responder

  45. men tiene correo o facebook

    Comentario por freddy ferrer | mayo 30, 2012 | Responder

    • puedes encontrarme en Facebook como Mario Salazar. Soy el que sostiene un gato gordo de color cafe

      Comentario por asm86 | mayo 30, 2012 | Responder

  46. men no me sale tu face asi si puede me pasa el link de su perfil para agregarlo

    Comentario por freddy ferrer | mayo 31, 2012 | Responder

  47. Saludos desde venezuela!, tu blog es casi orgasmico, soy un estudiante de una universidad de tercera enamorado de la programacion, principalmente la referente a graficas y videojuegos ;descubri tu blog accidentalmetne buscando info sobre programacion de juegos, espero que no lo abandones es en verdad excelente.
    Desde hace un año busco la manera de pasar a otro nivel en programacion, mi promedio en programacion es de 100/100, pero es bien sabido que las evaluaciones del sistema educativo no son lo suficientemente objetivas como para medir el desenpeño de uno , por eso busco ayuda para mejorar por lo que me gustaria mucho conversar con tigo :)

    Comentario por Antonio | agosto 7, 2012 | Responder

    • Pues aqui estoy para cualquier cosa, puedes postear cualquier tema relacionado con el blog en estos mismos comentarios. Aunque yo te recomendaria que si quieres retos de programador esperes a graduarte, las cosas que vas a ver pueden arruinarte la carrera y la mente si no estas debidamente prepapado.

      Comentario por asm86 | agosto 7, 2012 | Responder

      • Muy bien!, cuenta con que tienes un nuevo fan, me voy a leer tu blog desde el primer post hasta el ultimo y voy a probar esas herramientas que patrocinas, pero como no quiero traumarme un paso a las vez :)

        Comentario por Antonio | agosto 10, 2012

  48. Hola saludos

    me pregunto si este blog que tu haces es el mejor metodo de aprender ensamblador o mejor me voy a la Universidad y termino la carrera de cuatro años.

    Comentario por oscar | agosto 22, 2012 | Responder

    • Uno no tiene nada que ver con el otro. Ni te va a servir de nada aprender ensamblador por tu cuenta cuanto trates con el personal de recursos humanos ni te va a servir titularte a la hora de tratar con computadoras. Te recomiendo que estudies una buena carrera universitaria y hagas un postgrado. Si quieres empleo no necesitas saber ASM. Dejale el ensamblador a quien le interesen cosas sin importancia como programar.

      Y no, el mejor metodo para aprender ensamblador es leyendo manuales de los fabricantes de procesadores, haciendo ingenieria inversa y leyendo muchos libros por cuenta propia. Este blog es solo para trollear y recordarle a la gente que el ASM existe. Si te fijas casi no hay source code

      Comentario por asm86 | agosto 22, 2012 | Responder

  49. hola buenas yo soy estudiante de ingeniería en sistemas y ando viendo asm ahora y me cuesta mucho, quisiera ver si hay alguna oportunidad de que puedan ayudarme a comprender mejor este lenguaje, no estamos muy avanzados (creo, xD) el problema lo tengo en el uso de modo grafico ya que no entiendo como se usa o como realizar lo.

    Comentario por Leonel Dominguez | septiembre 17, 2012 | Responder

    • Si copias un programa que te hayan encargado en los comentarios me ayudarias mucho para decirte como programar el modo grafico. El programa puede ser de lo que sea mientras el codigo fuente funcione

      Comentario por asm86 | septiembre 17, 2012 | Responder

      • mira no e realizado un programa con modo grafico, este seria el primero. Por ello nos indicaron que investigáramos acerca de ello para poder realizar lo lo ultimo que hice fue cambiar letras de minúsculas a mayúsculas. En si lo que debo hacer ahora es:

        Graficar diferentes funciones matemáticas en la pantalla
        utilizando modo gráfico. Se deber mostrar un menú principal al usuario con las
        siguientes opciones
        • Graficar Parábola
        • Graficar hipérbola
        • Graficar Elipse
        • Graficar Circunferencia
        • Graficar Línea
        • Graficar Coseno
        • Graficar Seno
        • Una Grafica con coordenadas esféricas
        • Salir
        Para cada función se deberá ingresar los datos necesarios para crear la gráfica, el
        tamaño de la misma estará definida por un intervalo que el usuario ingresa,
        además cuando se presione la tecla “+” o ”–“ se aumenta o disminuirá el zoom de
        la gráfica.

        Comentario por Leonel Dominguez | septiembre 18, 2012

      • ¿De casualidad estudias animación digital en la facultad de matemáticas de la UANL? O el maestro es muy ingenuo o los está trolleando. Esa tarea requierem mucho mas que saber ensamblador

        El modo gráfico mas sencillo en ensamblador de 16 bits de DOS es el 13h. 320 x 200 a 256 colores
        la pantalla comienza en la posición A0000h y cada byte a partir de ahi es un pixel. Para iluminar un pixel en la coordenada X,Y (siendo 0,0 la esquina superior izquierda de la pantalla) multiplicas 320 * Y + X y en esa posición a partir de A0000h escribes un valor de byte entre 0 y 255. En el siguiente comentario pondré un código que pinte la pantalla de un solo color.

        Lo de las figuras no depende del ensamblador. Tienes que encontrar algoritmos que dibujan esas figuras. Entender como estas funcionan en formato vectorial y luego rasterizarlas. Este enlace de wikipedia explica lo que es la rasterizacion.

        Busca los algoritmos de lineas y circulos de bresenham u otros que apliquen rasterizacion y repasa un libro de geometría analítica. Lo bueno es que el maestro el puso esta tarea desde inicio de semestre. No es nada facil. Pero sabiendo esos algoritmos basta saber como pintar pixeles individuales en ensamblador. El código va en el siguiente comentario

        Comentario por asm86 | septiembre 18, 2012

      • añado el código del ultimo programa:

        .MODEL SMALL
        .STACK
        .DATA
        TEXT1 DB “La parabra en minusculas es: leonel”,13,10
        DB “La palabra en mayusculas es: $”
        PALABRA DB “leonel$”

        .CODE
        COMIENZA PROC FAR

        MOV AX,@DATA
        MOV DS,AX

        MOV DX,OFFSET TEXT1
        MOV AH, 9
        INT 21H
        MOV BX, OFFSET PALABRA
        MOV CX, 6

        INICIO:
        MOV AH, [BX]
        AND AH, 11011111B
        MOV DL, AH

        MOV AH, 2
        INT 21H
        INC BX
        LOOP INICIO

        MOV AX,4C00H
        INT 21H

        COMIENZA ENDP
        END COMIENZA

        Comentario por Leonel Dominguez | septiembre 18, 2012

      • .MODEL SMALL
        .STACK
        .DATA
        TEXT1 DB “Programa que pinta la pantalla de rojo”,13,10

        COLOR DB 4 ; PRUEBA CON OTROS NUMEROS DE 0 A 255
        HASTA_DONDE DW 64000 ;HASTA DONDE PINTAR
        .CODE

        MOV AX,@DATA
        MOV DS,AX

        PUSH ES
        MOV AX, A000H
        MOV ES, AX ;es:di apunta a a000:0000h

        MOV CX, HASTA_DONDE ;pintar 64000 pixeles
        XOR DI, DI ;comienza de inicio de pantalla
        MOV AL, COLOR ;pinta del color indicado en COLOR
        REP STOSB ;pinta de un golpe la pantalla

        POP ES

        xor ax,ax
        int 16h ;se detiene el programa hasta que presionas una tecla
        mov ax, 0003h
        int 21h ;regresar a modo de texto
        MOV AX,4C00H
        INT 21H

        ;——————-fin del programa
        ; el programa puede no funcionar porque hace
        ;mucho que no programo usando MASM de 16 bits
        ;y el link sobre rasterizacion que no puse en el
        ;comentario anterior es este:
        ; http://es.wikipedia.org/wiki/Rasterizaci%C3%B3n

        Comentario por asm86 | septiembre 18, 2012

      • Si mira nosotros llevamos mucha mate y algebra lineal ya algo avanzadas, por ello lo que nos piden en el programa. Se las funciones de Parábola, hipérbola ,Elipse, Circunferencia, Línea, Coseno, Seno. Como poder ingresarlas en assembler es lo complicado, xD.

        El programa que me pasaste, si me dio error. la mayoría de los errores los pude resolver el único que no se como resolverlo, es el de vram (A000h) ya que no me lo reconoce no se que podría hacer en ello.

        Sino fuera tanta molestia también me gustaría ver la posibilidad de que podamos hablar por msn, te dejo el mio ml7Dom@live.com muchas grs por la ayuda.

        Comentario por Leonel Dominguez | septiembre 18, 2012

  50. agregame tngo dudas joshua_x78@hotmail.com

    Comentario por Luigui Joshua | octubre 19, 2012 | Responder

  51. como puedo hacer un programa en assembler que pueda copiar y pegar un documento desde ya muchas gracias

    Comentario por Luigui Joshua | octubre 19, 2012 | Responder

  52. Hola que tal, recien estoy aprendiendo lenguaje ensamblador y queria saber si me podias ayudar a descifrar lo que hace esta linea de codigo, entiendo que cmp compara dos operadores, pero con que esta comparando el valor de la direccion de memoria ‘columna’, osea que significa el 0FFH, se que es un numero hexadecimal pero representa algo como fin de linea o algo asi?,

    cmp [columna], 0FFH

    Muchas gracias, de antemano,

    Comentario por Daniela | noviembre 13, 2012 | Responder

    • La instrucción CMP compara dos operandos. Aunque en realidad lo que hace es restarle el segundo argumento al primero pero a diferencia de SUB [columna],0ffh al usar CMP el valor de la variable ‘columna’ permanece sin cambio. Sin embargo CMP actualiza las banderas.

      Necesito saber por lo menos las 2 siguientes instrucciones que siguen. Normalmente luego de un CMP sigue un salto condicional como JE (salta si son iguales), JZ (salta si la resta de ambos operando es igual a cero) y otros que dicen quién es mayor, menor con o sin signo como JA JB JL JG y otros que indican signo como JS y sus negaciones que llevan una N en medio (JNE, JNZ, JNB, etc)

      Lo que hace la instruccion es comparar el contenido de ‘columna’ con 255 (0ffh en hexadecimal es 255 y actualizar las banderas. Luego con las banderas harán saltos condicionales o lo que ellos quieran. Si me dijeras que hace el programa o pudiera ver mas código podría hacer mas.

      Por cierto, cuando los operandos son de inmediato a memoria tienes que especificar el ancho en bits antes de [columna] dependiendo si columna es de 8, 16 o 32 bits

      cmp byte [columna], 0ffh
      cmp word [columna], 0ffh
      cmp dword [columna], 0ffh

      Comentario por asm86 | noviembre 13, 2012 | Responder

      • en este caso son varables, como es una variable definida, el compilador sabe si es byte, word, dword no es necesario poner el ancho(byte,word,dword)
        Pero si fuera un apuntador guardado en un registro de direccion alli tendrias que expesificar que es, porque el compilador no sabe hacia donde esta apuntando:

        cmp byte [edi], 0xff
        cmp word [esi+2], 0xff
        cmp dword [edi+ebx], 0xff

        Comentario por b1ackpig | noviembre 15, 2012

  53. hola
    quisiera saber si es posible mantener de vez en cuando contacto contigo, Mario para saber sobre ensamblador ya que tengo la mente hecha un lio

    Comentario por exolon | enero 28, 2013 | Responder

    • OK, puedes preguntarme cualquier cosa en los comentarios o si quieres mándame una dirección de correo para que pueda comunicarme contigo

      Comentario por asm86 | enero 29, 2013 | Responder

  54. Hola de nuevo mario, mi correo electronico es exoloncpc@hotmail.com .Yo no se el tuyo pero si me escribes en el mio y me hablas sobre como se inicia con ensamblador de sintaxis FASM a hacer un programa que dibuje lineas y puntos te lo agradeceria mucho.
    Ya se que no es tan facil como decir eso pero por lo menos si me guias un poco te lo agradeceré muchísimo.

    Veo que eres un grandísimo experto en ensamblador.Nunca había visto a alguien que se saliera tanto en programación compleja.Mis más sinceras felicitaciones por tu Blog.

    Comentario por exolon | enero 30, 2013 | Responder

  55. perdona mi correo es exoloncpc@hotmail.es en vez de com

    saludos.

    Comentario por exolon | enero 30, 2013 | Responder

  56. hola quisiera saber que son eso de las Api de windows y también si es necesario un linkeador para que los programas corran perfectamente en windows 7 64 bits.

    Estoy muy pez en esto del ensamlador pero le veo mucho futuro en muchas disciplpinas científicas.

    Comentario por exolon | febrero 8, 2013 | Responder

    • Flatassembler no necesita usar linkers. La API de Windows son funciones de Windows que puedes llamar desde tus programas para que hagan algo. Comienza con los ejemplos del FASM y alejate de las macros y los includes hasta que sepas bien que es lo que hacen y como funcionan

      Comentario por asm86 | febrero 11, 2013 | Responder

  57. Hola Mario! Buen día!
    Me podrías decir si conoces para que es el uso de los registros xmm0 a xmm7, ¿cuál es su tamaño?… estoy haciendo un escenario 3D en OpenGL y tengo que hacer las multiplicaciones de matrices de traslacion, rotación y escala usando Ensamblador y C++

    Comentario por Ray Espinosa | marzo 15, 2013 | Responder

    • Los registros xmm perteneces a la Streaming SIMD Extensions que existe desde el Pentium III de Intel. Miden 128 bits que permiten hacer 4 operaciones con flotantes de 32 bits como si fueran una sola. Tienen su propio conjunto de instrucciones (o sea que no sirve el MOV). Puedes encontrar ese conjunto de instrucciones en los manuales de intel cuyo enlace está a la derecha del blog y programarlo con un ensamblador como Flatassembler. Si buscas en el sitio de intel puedes encontrar código ya hecho que usa estos registros para trabajar con matrices y vectores.

      Si estas usando OpenGL desde ensamblador no necesitas usar los registros SIMD. Puedes llamar a API de OpenGL desde ensamblador del mismo modo que llamas al resto de las API por DLL. Hay un ejemplo de OpenGL en ensamblador en la documentación del Flatassembler del que puedes apender.

      Ahora que si quieres hacer una función que llame a los registros SIMD desde C++ puedes crear tu propia DLL y llamarla desde el programa de C++. Una DLL bien hecha puede ser llamada desde cualquier lenguaje capaz de trabajar con DLLs del Windows. Suponiendo que estés programando en ensamblador para Windows. Si estás trabajando con ensamblador de 16 bits primero tienes que habilitar los SIMD desde el registro EFLAGS que es mucho mas dificil. Si intentas esto te recomiendo que leas el manual de intel que dice System Programming. Es dificil pero no imposible.

      Comentario por asm86 | marzo 17, 2013 | Responder

  58. disculpen, yo tengo duda, este sitio web pertenece a una institucion?, y si es asi, don puedo ubicar la escuela?, gracias de ante mano

    Comentario por azael argelio rdz. mtz. | marzo 22, 2013 | Responder

    • En realidad no pertenezco a ninguna institución o escuela. Tan solo soy un pobre diablo que comparte lo poco que sabe de programación y los únicos acercamientos que he tenido con universidades fueron una plática que di en una escuela del centro de México en 2009 y hace no mucho alguien que quería hacer una especie de escuela pero que se asustó al conocer mis antecedentes y nunca me volvió a contactar.

      Hablo de estos temas porque de esto ya no se habla en las carreras de ingeniería en computación y no quiero que estos conocimientos se pierdan. Tan solo quisiera poder aprender y escribir mas sobre estas cosas para tal vez un dia alguien retome este estilo de programación que ya a nadie le interesa. En verdad me gustaría que esta página perteneciera a una universidad y yo ser un maestro que hablara de estos temas en un salón de clases. Pero la realidad es otra

      Comentario por asm86 | marzo 24, 2013 | Responder

  59. El mundo de nuevo me ha golpeado en la cara. No hace más de unas cuantas horas que andaba despotricando sobre lo decadente e insulsa que es la internet, y de repente como si dios me echase la mierda en la cara me pone tus textos. ¡Qué genial trabajo hay en tus escritos! Se nota la verdadera ética profesional del programador -que ha dejado de existir-.

    Cansado del pensum de mierda de mi universidad y de toda la bosta aplicativa empresarial, me he aventurado a sumergirme en el fascinante mundo del porqué de los sistemas. Y bueno, heme aquí. El caso al que viene mi comentario es que información como la que yace en ésta página es nula, no existe nada sobre assembler y sus aplicativos reales, y mucho menos en español.

    El internet y su contenido es efímero y cambiante, por eso me gustaría saber si tienes todos tus textos compilados en algún tipo de libro (pdf, rar o físico) que me puedas facilitar para que algún día en algún momento cuando decidas morir, todo esto no se valla contigo. Sé que es mucho pedir de un pre-puberto desconocido pero que más da, soy un buen portador de esperma y conocimiento.

    Gracias de antemano.

    Comentario por Jorge Andrés Devia Mosquéra | abril 4, 2013 | Responder

    • Espero en estos tiempos en que estoy hibernando poder hacer un documento como ese. Siento tardarme en contestar, de momento no puedo dedicar mucho tiempo a escribir. Por cierto muy divertido tu comentario, me recordó a los discursos de la película V por Vendetta

      Comentario por asm86 | abril 7, 2013 | Responder

  60. Hola me tope con tu blog buscando informacion sobre ensamblador,veras estoy aprendiendo y he leido ya varios tutoriales que has puesto en otras entradas en comentarios y otros usuarios tambien lo han hecho, y bueno me gustaria saber si me podrias ayudar con unos codigos de lenguaje ensamblador,no hay que hacerlos sino que me gustaria que me pudieras explicar mas o menos que esta pasando en cada codigo, yo tengo ya algunos conocimientos muy basicos y pues tengo bastantes dudas me podrias ayudar? mi correo es: xaiacosx@gmail.com escribeme porfavor ya que supuestamente tengo que dar una explicacion detallada oral para mañana y aun tengo dudas en bastantes cosas :(

    Comentario por carlos | abril 7, 2013 | Responder

    • Ya te mandé un mail a la dirección que me diste, si no te llego igual puedes poner en los comentarios partes del código que no entiendas. Espero que no sea demasiado tarde

      Comentario por asm86 | abril 7, 2013 | Responder

  61. hola, Mario
    quisera saber cuanto has tardado en hacerte un programador profesional de ensamblador.Pues es un lenguaje dificilisimo, aunque yo no renuncio nunca a aprender más.

    Me podrias enviar algun programa tuyo en ensamblador de flatassembler a mi correo: exoloncpc@hotmail.es ?

    Ni que te parezca poca cosa, lo estudiaré detenidamente.Escribeme un correo porfa.

    Comentario por exolon | abril 11, 2013 | Responder

    • Primero no soy profesional y de hecho no me gusta usar esa palabra. Profesional solo significa que a alguien le pagan dinero por hacer algo y eso no tiene nada que ver con la habilidad o la experiencia. Yo conozco a muchos programadores que cobran por hacer juegos y que no son capaces de hacer un menu de opciones que funcione.

      Llevo programando desde 1996 pero fue a finales de 1997 cuando comencé a tomarlo realmente en serio. Desde ese entonces aunque he programado en ensamblador los entornos en los que este se maneja han cambiado. Comencé con el ASM de 16 bits para MS-DOS y con el tiempo he pasado por el ASM para Windows, procesadores ARM, todos los procesadores de Intel que he podido pagar (cada nuevo modelo incluye instrucciones y modos nuevos) y también he programado procesadores de la era de 8 bits aunque por medio de emuladores. El asunto es que el ensamblador cambia mucho con el tiempo. Incluso los compiladores tienen sus diferencias. Un código escrito para Microsoft Macro Assembler no se puede compilar en Flatassembler o en GAS o NASM sin hacerle cambios de sintaxis, aunque el código ejecutable producido por cada compilador sea el mismo

      Cada que sale un CPU nuevo este trae nuevas instrucciones y hay procesadores cuyo código no es compatible entre ellos. Los procesadores se dividen por familias de modo que todos los procesadores de la misma familia pueden ejecutar el mismo código máquina. Y el sistema operativo en que corre empeora el asunto. Por mucho que creas dominar el ASM puede que nada de lo que sabes te sirva al pasar a otra familia de computadoras pero hay conceptos que casi todas las computadoras comparten como las instrucciones de procesamiento lógico, los registros (algunas usan solo un stack), la manera de comunicarse con la memoria y el hardware periférico. Lo importante es que el binario no cambia y el código máquina en hexadecimal nunca miente

      Voy a buscar alguno de mis viejos programas como sumar y convertir números en ASM para Windows. Es cosa de que los haga legibles y les ponga comentarios, cosa que me tomará algunos dias. Aunque los ejemplos en internet son bastante buenos. Solo te aconsejo que al menos al principio huyas de las macros y tengas un desensamblador y un editor hexadecimal para comparar el código ejectable con lo que estás programando. Y leete los manuales de Intel. Son gratis, actualizados y puedes aprender muchísimo. Yo así aprendí.

      Comentario por asm86 | abril 12, 2013 | Responder

  62. Verás…
    No he encontrado ni un sólo libro de assembler, ni en la biblioteca ni en la internet, lo único que he conseguido es “Ensamblador para C”; osea programar assembler dentro de C.

    Hace unos pocos días me he enterado de Ensamblador Orientado a Objetos (EOO) pero no sé que ventajas y desventajas tenga. Vale, sí, siempre cuento mi vida y nunca llego a nada. El caso es que me gustaría saber que piensas sobre este EOO y si conoces de algún libro digital o físico para adquirir.

    Gracias de antemano.

    Comentario por Jorge Andrés Devia Mosquéra | abril 13, 2013 | Responder

    • Busca el libro Los Microprocesadores Intel de Barry Brey. Las ediciones mas avanzadas son muy buenas pero incluso si encuentras una antigua es util para entender conceptos básicos de ASM como los registros, opcodes, manejo de memoria y todo los que usa cualquier otro CPU mas actual. No es tan dificil de conseguir. Puedes correr los ejemplos con un emulador de l6 bits como el DosBox.

      Una vez que lo leas busca los manuales de intel. Hay un link en el blog. Son gratuitos, actualizados y muy completos. Al final solo es cosa de acostumbrarte a usar un compilador y actualizarte cada que salga un nuevo CPU. No necesitas de muchos libros

      Trata de alejarte de cualquier cosa rara que no sea ASM puro. Bastante dificil es aprender ASM para complicarse con programación orientada a objetos tan pronto. Compilar asm dentro de C tiene sus límites y casi nunca está actualizado. Algunos compiladores de C tienen una función llamada __emit__() que puede incluir código máquina puro dentro de C pero es dificilísima de manejar a menos que sepas compilar código máquina a mano. Sigue, esto del ASM es muy emocionante.

      Comentario por asm86 | abril 14, 2013 | Responder

      • Hola , otra forma es unirte a un grupo de ingeniera inversa como Crackslatinos en google groups , hay mucha info y ayuda . Saludos yuri

        El 14/04/13, “Programacin en Lenguaje Ensamblador”

        Comentario por Yuri Grille | abril 15, 2013

  63. Yo estoy empezando con esto del asm y el libro “microprocesadores Intel” de B.brey me parece genial. Altamente recomendable para entender muchas cosas y de manera clara sobre arquitectura , programación e interfaz

    Comentario por exoloncpc | mayo 24, 2013 | Responder

  64. hola podrias decirme asm86, que es eso de las macros.
    Por otro lado no se como crear graficos y animaciones mediante el ensamblador pero me parece que es algo muy complejo,no? como se cuales son las macros ideales para hacer todo eso?

    lo digo porque cuando intento hacer algo mediante el fasm me salen multitud de errores.

    Comentario por exoloncpc | mayo 24, 2013 | Responder

  65. Hola,
    ¿Tienes el proyecto de “Hundir la flota” para Motorola 68000? Si lo tienes, ¿Serías tan amable de pasármelo? Saludos y gracias.

    Comentario por Pedro | mayo 27, 2013 | Responder

    • No, no lo tengo y me tomaría mucho tiempo programarlo. Si acaso te puedo dar un consejo. Crea un array bidimensional (que en realidad es lineal en memoria. Asigna un numero a cada barco y guarda ese numero en las localidades de memoria que el barco ocupe en la flota. Al disparar en una posición usa las coordenadas como indice a ese array y sabrás no solo si le diste a un barco sino también a que barco le diste.

      Comentario por asm86 | mayo 28, 2013 | Responder

  66. Creí que matar unas cuantas personas saciarían mis dilemas existenciales, pero no fue así. La decisión de cambiarme de carrera ha sido tomada; no soporto las interfaces gráficas, no soporto ser la materia orgánica de la actual tecnología y mucho menos el esclavo perfecto del sistema. A veces pienso, me cuestiono, y finalmente me digo “¿Quién está tan jodidamente trastornado como yo como para pedirle un consejo? -Pues el tipo ese de la página de internet, me digo-“.

    Pronto toda la mierda de consumo tendrá una interfaz gráfica: lavadoras con juegos, microondas con internet y carros con computadoras integradas. La idea no es absurda, he ido al pasado y he profetizado que los teléfonos serían inalámbricos, tendrían juegos y se podrían visualizar pequeñas personas y, me han tomado como a un errático, como al loco de la plaza. Cuando esto suceda, los programadores de corbata olvidaran como clickear y sólo tendrán tiempo para pedir ayuda a los “retrogradas” y marginados de años pasados que predicaban el ensamblador. Los miraremos con sumo desdén y les musitaremos con humildad: “¡no!”.

    Tú opinión quedará registrada en las grandes bases de GOOGLE y posiblemente sé te culpe a priori de ser inspiración del hijo de UNABOMBER. Ya que estás advertido, me gustaría conocer tu opinión sobre que carrera me podría acercar más a el lenguaje ensamblador teniendo en cuenta que deseo aprenderlo para un uso más amplio de la tecnología y no sólo en el ámbito informático.

    – Ingeniería en Electrónica
    – Ingeniería en Mecatrónica
    – Ingeniería en Control

    No creo que me aconsejes seguir en mi carrera porque estudio algo así como “Ingeniería en Sistemas” y peso 75 kilos, mi currículum aún no compite con otros DBA -o es cambiarme de carrera o consumir pollos transgénicos para poder competir-.

    La gente me dice que estoy “como una puta cabra”. Puede que tengan razón, pero por lo menos puedo vivir de mi propia leche.

    Comentario por Jorge Andrés Devia Mosquéra | mayo 31, 2013 | Responder

  67. estoy aprediendo a manejar este lenguaje soy estudiante de informatica y me llama mucho la atencion seguir conociendo nuevas formas de programacion increible a seguir investigando

    Comentario por Chava Diaz Luna | julio 23, 2013 | Responder

  68. Hola Mario, mi nombre es Julio Aguilar. La cuestión es que asares del destino la necesidad de aprender a programar en ensamblador ha llegado a mi, NOTA: No soy estudiante universitario ni lo requiero para una tarea, tampoco soy Hacker. De hecho mi interés va por el lado de los sistemas embebidos en tiempo real, por ejemplo los que trabajan en base a arquitectura del intel 8051 o del motorola 68000. ¿Por lo cual quisiera saber si das clases o asesorias personalizadas? Dando por sentado que estas tengan un costo por hora, mira que en verdad valoro lo que sabes. Dado que no resido en Monterrey creo que pudieramos platicar vía Skype. Bueno todo depende que tengas oportunidad y podamos llegar a un acuerdo, mi skype es julio.aguilar.grijalva mi mail: julio398@hotmail.com agradeceré mucho tu respuesta,

    Comentario por JULIO 680x0 | julio 28, 2013 | Responder

  69. Hola soy Lucas, estoy empezando en este lindo mundo de la programación, recurro aquí por el motivo de pedirte ayuda, para saber si me podrías ayudar y/o encaminar a programar en asm ia 32, como hacer un programa que monocromatiza un bmp, quiero aprender a entenderlo y por eso pido ayuda, links a tutoriales, lo que sea.
    Saludos

    Comentario por Lucas | noviembre 4, 2013 | Responder

  70. Hola necesito contactarte para ver si podrías auxiliarme con algo relacionado con ensamblador por favor es muy muy urgente, obviamente te pagaría por la ayuda, mi correo es sarahi_l15@hotmail.com

    Comentario por Sarahi Velasco | noviembre 22, 2013 | Responder

    • puedes darme una idea de lo que se trata en los comentarios. Ya luego nos contactamos para ver los detalles si hace falta

      Comentario por asm86 | noviembre 23, 2013 | Responder

  71. Hola, soy aficionado al lenguaje ensamblador, te felicito por el blog.

    Aunque tengo una cierta experiencia en otros lenguajes de programación en ensamblador soy solo un principiante.

    He estado tratando de ubicar otras personas interesadas en este lenguaje, incluso creé un grupo de google, pero hay muy pocas personas interesadas, siempre la clásica excusa: “eso ya no se usa” ó “¿y eso para que sirve actualmente?”.

    Bueno, para terminar, me alegra saber que no soy el único interesado en ensamblador y espero poder intercambiar conocimientos.

    Saludos

    Comentario por Martín Muñoz | febrero 13, 2014 | Responder

  72. Buenas noches a mi no se me da la programacion mucho pero deseo aprender con este, ya tengo bases, por donde me sugieres que empiese, te dejo mi mail muchas gracias valentikary@hotmail.com

    Comentario por tokyoanimation valentikary | junio 8, 2014 | Responder

  73. buenas tardes, lei lo qe escribiste qe no puedes realizar o ayudar con ensamblador, pero estoy contra la espada y la pared y no se si me puedes ayudar, es una busqueda de archivo qe no busca muy bn, ese codigo lo realize, y me perdi al qerer modificarlo como me dijeron, te lo agradeceria un monton, y espero me puedas ayudar lo mas antes posible, mi e-mail es: degolled.edwar@gmail.com, por favor contestame lo mas antes posible,

    Comentario por Edwar | julio 4, 2014 | Responder

    • Los sistemas de archivos tienen más que ver con el sistema operativo que con el lenguaje de programación. ¿Para qué sistema estás programando? ¿Windows? Si es Windows puedes consultar el apartado de archivos de la Win32 programmer’s reference o usar un ejemplo de cualquier otro lenguaje y pasarlo a ASM. O puedes poner esa parte del código en los comentarios. Son muy pocas lineas y no olvides que debes abrir los archivos antes de poder leer y escribir en ellos. Así como pasarle bien los parámetros de seguridad. Estos 2 son errores muy comunes.

      Comentario por asm86 | julio 6, 2014 | Responder

  74. Hola e estado observando lo que has escrito pero aun tengo duda e intentando bajar libros conc ursos de ensamblador pero lo que no me queda muy claro es lo de los procesadores de 32 bits y 64 bits es diferente su forma de escribir el codigo en ensamblador y se que existen muchos ensambladores como masm turbo o los de intel nasm pero aun no me queda claro cual me funcionaria o cual me serviria mejor entender y encuanto al masm solo existe la version de 32 bits pero se que lo puedes correr en un dosBox por que yo solo asi lo pude correr en una pc de 64 bits y cuales es la diferencia entre un x64 y un x86 se que el x86 puede correr los 16, 32 bits y el 64 bits pero el x64 solo 64 bits espero tengas tiempo para responderme.Un saludo

    Comentario por Edgar | julio 15, 2014 | Responder

  75. muchas gracias por este aporte soy un joven estudiante de soporte y me e querido adelantar en el futuro y este lenguaje me abrira mucho el panorama gracias !

    Comentario por ismael galan | octubre 4, 2014 | Responder

  76. Hola, quisiera que me recomendaras paginas o libros para aprender lenguaje ensamblador. Pero de una manera didactica, por que me he topado con libros que son demasiado toscos para explicar .:/

    Comentario por Eduardo | marzo 5, 2015 | Responder

    • Lo mejor para ensamblador son los manuales de los procesadores pero para entenderlos es mejor leer otras cosas antes:
      Existió un libro muy antiguo escrito en 1985 llamado “Aprenda Divirtiéndose Computación” de Larry Gonick. Explica con viñetas y dibujos conceptos muy básicos de computación como CPU y RAM. Uno cree que conoce estos conceptos hasta que intenta programar en ensamblador por primera vez.

      También está “El Arte de Programar” de Donald Knuth que aunque no habla de ensamblador explica como diseñar un programa pensado para escribirse en este lenguaje.

      Personalmente mi primer libro de ensamblador fue “Los Microprocesadores Intel” de Barry Brey 2da edición. Aunque esa edición tenía más de electrónica que de programación. Al final viene un apéndice que explican lo que es un OpCode. Si puedes construir esos opcodes en papel programar en ensamblador te resultará facil. Te recomiendo el Flatassembler sobre todo un código llamado PEDEMO.ASM

      Comentario por asm86 | marzo 6, 2015 | Responder

  77. Hola, llevo un tiempo viendo tu blog algo asi como 2 meses y me interesa mucho aprender ensablador por razones que no comentare publicamente … pues son algo descabelladas y quisas tengo aspiraciones muy altas, en fin quisiera charlar contigo pues hay unas cosas que quiciera perguntarte y me da algo de lata soltarlo aqui.

    Ultimamente paso mucho tiempo en el blog mientras estudio con las entradas mas antiguas asi que si pudieras contactar con migo te lo agradeseria mucho, siempre estoy atento a la pagina asi que respondo al tiro DNX666@live.com

    Comentario por Daniel Almanzar | marzo 16, 2015 | Responder

  78. Que onda Mario, en estos 3 dias hice una ASCII ART editor para hacer comentarios para FASM. ojala te sirva UUUUUUUUiiiiiiiiiiiiiiikkkkkkkkkkkkkkkkkkkkkk

    http://codigopopo.blogspot.mx/2015/03/comentarios-o-la-simpleza-de-un-buen.html

    Comentario por jhr78mx | marzo 27, 2015 | Responder

  79. hola, me interesa el codigo del juego tres en raya en ensamblador asm, me lo puedes enviar al correo alfredTorrija@hotmail.com

    Comentario por Alfredo | mayo 19, 2015 | Responder

    • Por ahora no tengo ningún código funcional de 3 en raya listo para entregar, no programo tan rápido pero con mucha suerte te sirva algo que voy a publicar en pocas horas

      Comentario por asm86 | mayo 19, 2015 | Responder

  80. Hola Buenas noches

    Estoy estudiando la Ing. en sistemas y me he topado con esta materia de lenguaje ensamblador, la verdad se me esta dificultando y me gustaría saber si hay la posibilidad de que me orientes para poder hacer la tarea que contempla 3 ejercicios.
    Saludos!!

    Comentario por Erik De la cruz | agosto 12, 2015 | Responder

    • ¿Y cuales son esos ejercicios?

      Comentario por asm86 | agosto 13, 2015 | Responder

  81. Yo solo tengo una cosita pequeña que decir: puede ponerle un indice a tu super-tutorial de assembler?
    Y de haberlo, Podrias decirme donde esta el botoncito que te lleva a el?
    O si no da directamente el link de la pagina que contiene el indice(prefiero esto).Please

    Comentario por Adri | enero 17, 2016 | Responder

    • Pienso poner un índice y agregar más entradas porque todas las tengo desordenadas y sin indexar. La verdad es que cuando lo escribí no imaginé que tanta gente lo iba a tomar tan en serio.

      Comentario por asm86 | enero 20, 2016 | Responder

  82. Hola compañero e estado leyendo tu blog y me parece muy interesante pero vi que tu última entrada es de julio del 2015 me pregunto seguirás con tu proyecto que planteaste en la última entrada?

    Comentario por siba2893 | marzo 16, 2016 | Responder

    • Seguiré. El asunto es que desde hace dos años he estado inactivo porque me pasaron algunas cosas que me dejaron casi sin capacidad de programar. En los últimos meses he desarrollado sistemas destinados a que la vida no se me escape en cosas que no quiero hacer y con ello pueda volver a programar. Con las más recientes mejoras de ese sistema estaré en capacidad de programar casi todos los dias porque parece que la bolsa de la suerte se me acabó antes de haber podido llenar la bolsa de experiencia.

      En la siguiente entrada hablaré sobre como pienso hacer ese proyecto y las dificultades con las que me he topado hasta ahora.

      Comentario por asm86 | marzo 23, 2016 | Responder

  83. que tal, me interesa aprender matematicas partiendo de cero, tendras algun libro claro y consiso. Los que he encontrado se van de lleno a algebra y necesito algo mas para inbeciles sin llegar a ser un libro de la tercera edad o de secundaria.

    la meta es llegar a matematicas discretas, para poder entender el libro del dragon de los compiladores

    Comentario por nasciiboy | junio 13, 2016 | Responder

    • Una cosa con las matemáticas es que son un lenguaje en si mismo y no recuerdo ningún curso o libro en el que enseñen a hablarlo a nivel principiante. Todo eso lo aprendí fuera del salón de clases aunque de gente que si sabía del tema.

      Si tienes mucha paciencia y voluntad puedes comenzar por leer libros sobre Lógica Simbólica y Teoría de Conjuntos. Ahí encontrarás un montón de símbolos raros mezclados con letras griegas, dibujos sin sentido aparente y muy pocas explicaciones con palabras. Tal vez lo único que entiendas al principio sean las palabras “Sea”, “Tal que” y “entonces” pero cuando entiendas la lógica simbólica y puedas usarla como cualquier otro idioma los libros de matemáticas te parecerán fáciles. Pues con esos símbolos se puede expresar información de mejor manera que con palabras usadas por mortales comunes.

      Comentario por asm86 | junio 14, 2016 | Responder

  84. que tal el blog esta chulo y las entradas troll entretenidas, deseo aprender matematicas a partir de cero, el material que he encontrado se dirige demasiado rapido al algebra, tendras algo claro y consiso, que se porga al tema sin ser un libro para ancianos o de primaria?

    la meta es llegar a matematicas discretas para luego leer el libro de los compiladores del dragon rojo

    tambien me sirve una guia turistica de libros para llegar a ese lugar…

    Comentario por nasciiboy | junio 13, 2016 | Responder

    • Lo que la gente normal llama álgebra no es mas que una de las muchas álgebras existentes y esa con la que todos han tenido contacto es la más cercana a la aritmética básica. Los signos que aparecen en los libros de programación más avanzados poco tienen que ver con el álgebra escolar y mucho con cosas como gramática, sintaxis y otros temas que aunque son importantes para programar ya se distanciaron mucho de la forma como trabajan los actuales compiladores.

      Uno de los documentos que más me sirvió para entender como funciona un compilador fue “Let’s Build a Compiler” de Jack Crenshaw. Quien cuenta como hizo un compilador y lo explica todo con palabras sin usar lenguaje demasiado científico. Pero te recomiendo que aprendas lógica simbólica para entender los libros más serios. Pues esos símbolos se usan los mejores libros de programación. Esta entrada sobre como leer libros de programación puede resultarte interesante.
      https://asm86.wordpress.com/2011/06/19/como-leer-un-libro-de-programacion/

      Comentario por asm86 | junio 14, 2016 | Responder

      • ya le eche un ojo al Let-s-build-a-compiler y parece entretenido (una mano del traslate y solucionado), agregare eso de la logica simbolica a la lista,

        ya me he leido medio blog es bastantes entretenido (incluida la seccion que comentas), cai aqui buscando algo de informacion en español del 6502, y me quede un rato a ver.

        Comentario por nasciiboy | junio 14, 2016

  85. Buenas tardes, extremadamente ameno tu blog, llegue a el en búsqueda de información acerca de lenguaje ensamblador y me quedaré para leer acerca de los otros temas. Que gusto saber que aun existen programadores que aman ese Arte. Saludos!

    Comentario por Juan Flores | agosto 24, 2016 | Responder

  86. Buenas tardes, teniendo problemas con el lenguaje ensamblador encontré tu blog. Me gustaría saber si puedes ayudarme en ciertas dudas que tengo y no encuentro una respuesta clara, JMCEAFR@hotmail.com. Gracias

    Comentario por Edgar Fuentes | septiembre 9, 2016 | Responder

  87. Hola recien empiezo en esto de la programacion mi correo es ridaniel_6@hotmail.com me gustaria los consejos de alguien ya experimentado se algo de html y css

    Comentario por Iglesias Daniel | noviembre 29, 2016 | 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: