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.

181 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.

    Comentarios 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.

      Comentarios 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

    Comentarios 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.

      Comentarios 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

    Comentarios por Ricar2 | May 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.

      Comentarios por asm86 | May 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.

    Comentarios por Ricar2 | May 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!!

    Comentarios 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.

      Comentarios 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

        Comentarios 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…!

    Comentarios 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.

      Comentarios 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

        Comentarios 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

    Comentarios 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

    Comentarios 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.

      Comentarios 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.

    Comentarios 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.

      Comentarios 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.

    Comentarios 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

    Comentarios 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.

      Comentarios 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 .

    :)

    Comentarios 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

      Comentarios por asm86 | enero 29, 2011 | Responder

  13. neitor30@hotmail.com

    Comentarios por adrian | enero 29, 2011 | Responder

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

    Comentarios 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

    Comentarios por asm86 | febrero 3, 2011 | Responder

  16. =) gracias..

    Comentarios por Pavon | febrero 4, 2011 | Responder

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

    Comentarios 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!

    Comentarios 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.

    Comentarios 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

      Comentarios 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.

    Comentarios 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

      Comentarios 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

    Comentarios 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

    Comentarios 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.

      Comentarios 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???

        Comentarios por fernando | May 1, 2011

      • pues si puedes llamarla desde ensamblador adelante.

        Comentarios por asm86 | May 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

    Comentarios por Roy Gracia | May 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

      Comentarios por asm86 | May 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?

    Comentarios 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.

      Comentarios 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

    Comentarios 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

      Comentarios 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

    Comentarios 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

    Comentarios 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

      Comentarios 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

        Comentarios 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.

    Comentarios 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.

      Comentarios 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 .

    Comentarios 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.

      Comentarios 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.

        Comentarios 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

        Comentarios por asm86 | diciembre 3, 2011

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

    Comentarios 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.

      Comentarios 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

        Comentarios por freddy ferrer | diciembre 4, 2011

  31. me encanta esta musica

    Comentarios 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

    Comentarios 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

    Comentarios 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

      Comentarios 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

        Comentarios 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

    Comentarios 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.

      Comentarios 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) *
    * *
    ______________________________

    Comentarios 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

    Comentarios 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?

      Comentarios 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

        Comentarios 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?

    Comentarios 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.

    Comentarios 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.

      Comentarios 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.”

    Comentarios 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?

    Comentarios 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

      Comentarios 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.

    Comentarios 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.

      Comentarios 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.

    Comentarios por Jose (kakaruelo) | May 2, 2012 | Responder

    • Como primer paso, te recomiendo que leas la saga ¿Vale la pena estudiar?

      ¿Vale la Pena Estudiar? 1

      Saludos Cordiales

      Comentarios por b1ackpig | May 3, 2012 | Responder

      • Inicia la temporado de brujas, digo de examenes y proyectos finals #trollface

        Comentarios por b1ackpig | May 3, 2012

  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

    Comentarios por Javi | May 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.

      Comentarios por asm86 | May 23, 2012 | Responder

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

    Comentarios por freddy ferrer | May 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.

      Comentarios por asm86 | May 30, 2012 | Responder

  45. men tiene correo o facebook

    Comentarios por freddy ferrer | May 30, 2012 | Responder

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

      Comentarios por asm86 | May 30, 2012 | Responder

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

    Comentarios por freddy ferrer | May 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 :)

    Comentarios 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.

      Comentarios 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 :)

        Comentarios 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.

    Comentarios 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

      Comentarios 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.

    Comentarios 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

      Comentarios 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.

        Comentarios 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

        Comentarios 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

        Comentarios 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

        Comentarios 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.

        Comentarios por Leonel Dominguez | septiembre 18, 2012

  50. agregame tngo dudas joshua_x78@hotmail.com

    Comentarios 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

    Comentarios 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,

    Comentarios 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

      Comentarios 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

        Comentarios 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

    Comentarios 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

      Comentarios 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.

    Comentarios por exolon | enero 30, 2013 | Responder

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

    saludos.

    Comentarios 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.

    Comentarios 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

      Comentarios 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++

    Comentarios 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.

      Comentarios 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

    Comentarios 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

      Comentarios 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.

    Comentarios 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

      Comentarios 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 :(

    Comentarios 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

      Comentarios 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.

    Comentarios 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í.

      Comentarios 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.

    Comentarios 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.

      Comentarios 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»

        Comentarios 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

    Comentarios por exoloncpc | May 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.

    Comentarios por exoloncpc | May 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.

    Comentarios por Pedro | May 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.

      Comentarios por asm86 | May 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.

    Comentarios por Jorge Andrés Devia Mosquéra | May 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

    Comentarios 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,

    Comentarios 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

    Comentarios 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

    Comentarios 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

      Comentarios 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

    Comentarios 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

    Comentarios 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,

    Comentarios 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.

      Comentarios 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

    Comentarios 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 !

    Comentarios 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 .:/

    Comentarios 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

      Comentarios 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

    Comentarios 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

    Comentarios 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

    Comentarios por Alfredo | May 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

      Comentarios por asm86 | May 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!!

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

    • ¿Y cuales son esos ejercicios?

      Comentarios 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

    Comentarios 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.

      Comentarios 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?

    Comentarios 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.

      Comentarios 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

    Comentarios 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.

      Comentarios 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…

    Comentarios 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.

      Como leer un libro de Programación

      Comentarios 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.

        Comentarios 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!

    Comentarios 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

    Comentarios 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

    Comentarios por Iglesias Daniel | noviembre 29, 2016 | Responder

  88. buenas necesito ayuda de una pagina de libor de kip irvine me gustarias qque hicieras lo que es marco de pila y limpieza de de los parametros de la pila me gustaria conectarme con usted para poder aprender toy angustiado de lenguaje ensamblador mi correo de google es josezaratepomayay@gmail.com me he estancado

    Comentarios por chipoteyiyo1992 | enero 25, 2017 | Responder

    • La explicación rápida de un marco de pila o stack frame es entender el uso de EBP y ESP así como el RETURN con argumentos. Un stack frame o marco de pila es una zona de la memoria manejada por el stack y tiene una parte para los argumentos que recibe la funcioñ y otra para variables locales. Ambas secciones están divididas por la dirección de retorno de la función y por el contenido de EBP (base pointer) anterior. Este sistema permite hacer muchas llamadas de funciónes diferentes e incluso hacer recursión mientras se tenga memoria.

      Cuando llamas a una función con la instrucción CALL lo que hace el CPU es guardar la dirección actal de ejecución en el stack y saltar a la función. Cuando se llega al final de la función con el RET el CPU salta a la dirección de memoria guardada en el stack. Esto nos permite ejecutar una función sin variables locales ni argumentos. Si queremos usalos necesitamos crear un stack frame.

      Para crear un stack frame primero debes de decidir cuanto espacio vas a destinar a las variables locales y luego hacer lo siguiente al inicio de la función:

      empujar EBP al stack
      guardar en EBP el contenido de esp
      a ESP se le resta el espacio que ocupan las variables locales
      El inicio del stack frame es entonces la dirección apuntada por EBP menos la longitud de las variables locales. De modo que si tienes dos dwords locales el primer dword está en ebp-8 y el segundo en ebp-4

      EBP apunta al contenido anterior de EBP y EBP+4 a la dirección de retorno. Los argumentos de la función comienzan a partir de EBP+8 si usamos el sistema de 32 bits.

      Finalmente para limpiar el stack frame al final de la función usamos la instrucción LEAVE o restauramos el valor de EBP con POP y terminamos la función con un RET que tenga como argumento la longitud de los argumentos. Si la función recibió dos argumentos de 32 bits tendriamos un RET 8

      Para ponerle nombres humanos a las variables locales y los argumentos podemos usar directivas como Virtual en Flatassembler o usar la macro PROC en masm. Pero recuerda que los datos del stack frame son dinámicos. No puedes inicializarlos al declararlos ni esperar a que se conserven entre llamadas. Por eso lo primero que debes de hacer al ejecutar una función es asignarles un valor con un MOV inmediato. Pues al no poder inicializarse nunca sabes lo que puede haber en esa zona de la memoria.

      Espero que esta explicación te ayude. Si llego a escribir una entrada sobre stack frame tal vez me tome algunos dias.

      Comentarios por asm86 | enero 26, 2017 | Responder

  89. ¡Hola!
    Bueno, lo que ocurre es que quisiera saber su tú serías capaz de responderme y darme una guía para lo siguiente:
    Supongo que haz leído o escuchado algo acerca de la Raspberry Pi, una mini PC con procesador ARM, la nueva raspberry 3 uno a 64 bits bla, bla, bla, bla.
    El punto es que el chip que tiene esta máquina, tiene una GPU (Videocore lV) que es capaz de correr Quake 3 y varias cosillas por el estilo.
    Los fabricantes del chip, liberaron la documentación de la parte gráfica (ya que viene integrada junto al micro, si no me equivoco), y quiero saber si es posible, ¿qué es lo que tengo que estudiar para poder entender la documentación de la gpu y del microprocesador?, quiero programar un controlador o una librería para poder utilizarla, o incluso reproducir video con ayuda de esta (porque la imagen que da la raspberry es pésima y no reproduce muy bien el video cuando una PC con pentium 4 logra eso sin problemas).
    Sé que tengo que aprender ensamblador de lleno (y estoy en eso), pero quiero aparte entender la documentación de esas dos cosas, qué conceptos debo aprender, ¿hay mucha diferencia programar una tarjeta gráfica a un procesador común?¿Qué libros me recomiendas?¿Me sirve tu curso de la saga del 3D para lo que pretendo hacer?
    Ojalá y aunque sea un poco de lo que quiero hacer sea posible con una vida y seas capaz de guiarme.
    Gracias.

    Comentarios por Ismael Salas | marzo 1, 2017 | Responder

    • Tardé en contestar porque conzco muy poco de las Raspberry Pi. Pero si se trata de un CPU ARM con aceleración integrada dentro de éste basta con programar como si fueran instrucciones como cualquier otra.

      ARM no es como Intel que ellos fabrican procesadores y algún otro fabricante como AMD hace productos compatibles. ARM es una especificación que cualquier fabricante puede implementar si paga y es con ese fabricante con el que debes de conseguir la documentación. Por ejemplo cuando programé el GP32, el fabricante era Samsung y de ahí obtuve la documentación.

      Si ya la tienes no deberias de tener problemas para programarla en ensamblador. Suponiendo que tengas un ensamblador capaz de producir código para ese procesador de ese modelo y fabricante en específico. Puedes usar GCC la versión para ARM de Flatassembler pero puede que no hayan implementado esa función de aceleración en específico. Si no queda de otra tendrás que programarlas tu mismo en código máquina o hacer tu propio compilador. Te recomiendo meter los OpCodes en hexadecimal a mano porque es menos tardado.

      En cuanto a las diferencias entre una tarjeta gráfica y un procesador común si programas en ensamblador no hay ninguna. Si acaso habrá diferencias en el conjunto de instrucciones pero al final todos son bits que puedes escribir en hexadecimal como si fueran un array estático de bytes y luego ejecutarlos como si fueran instrucciones. Aunque algunos sistemas que no tienen GPU integrada en el procesador necesitan una manera de comunicarse con chips de apoyo. En el caso de los ARM esto se hace usando una zona de la memoria como puertos o con la instrucción SWI dependiendo del modelo.

      En cuanto a la serie sobre Programación Gráfica 3D te sirve para entender conceptos \basicos del 3D. Pues una verdadera GPU lo único que hace es hacer cálculos más rápido y mover memoria de un lado a otro de manera eficiente pero eso no sirve si no sabes que cálculos debes ordenarle que haga.

      Por último te daré un consejo para aprender ensamblador: La manera más rápida de aprender ensamblador es construir código máquina a mano con lapiz y papel y luego copiar todo a un editor hexadecimal para que el hardware lo ejecute. Tal vez te lleves una semana en hacer un Hola Mundo pero una semana es poca inversión si lo comparas con todo lo que vas a aprender de programación. Ya luego podrás usar alguna herramienta como un compilador o incluso podrás hacer el tuyo propio o mínimo herramientas que te ayuden. Y recuerda que para aprender a programar en código máquina no necesitas computadora. Basta con tener documentación, papel y lapiz y mucha pero mucha paciencia. Ya cuando quieras ejecutarlo entonces si enciende la computadora. El resto lo aprendes de libros sobre «arquitectura de computadoras». Tambien te recomiendo que veas la pelicula Matrix. Cuando abras un programa ejectuable en un editor hexadecimal y entiendas lo que dice entenderas por que.

      Comentarios por asm86 | marzo 3, 2017 | Responder

      • ¿Cómo que construir el código máquina a mano en lápiz y papel? ¿Los algoritmos o lo que se me ocurra hacer?¿Entonces me olvido del lenguaje simbólico (osea me aprendo los opcodes y lo que hace cada uno)?

        Comentarios por Ismael Salas | marzo 5, 2017

    • No creo que eso sea necesario Ismael. Pero si quieres aprender lenguaje ensamblador, necesitarás dejar muchas cosas aparte que aprendiste de lenguaje a alto nivel, para procesar todo lo que conlleva el lenguaje ensamblador. A mí parecer, es algo difícil y complejo de hacer. Pero tal vez te acostumbres, quien sabe, sólo tu sabes si te puedes acostumbrar. Ya que para programar en este tipo de lenguaje de programación, pues requiere aprenderte muchas cosas nuevas que ni siquiera yo sabía que existían. Bueno sabía que existia esto del lenguaje ensamblador pero no le veía el interés porque es algo muy difícil de entender si realmente no sabes nada incluso de informática. Y yo para meterme a esto de las computadoras, con más profundidad, me estoy obligando a mi mismo a meterme en lleno del lenguaje ensamblador, que para mí procesamiento es difícil entender.

      Comentarios por Emilio Rdz | noviembre 12, 2018 | Responder

      • Eso crees tu compa, y tienes razón, en C podría escribir un montón de rutinas y guardar las direcciones que me dan en la documentación como constantes, y enviarle los bits que piden para hacer su trabajo con apuntadores. Sin embargo pierde chiste, porque yo lo hago por diversión y sacarle potencial a la Raspberry Pi 2 (estoy seguro de que puede hacer más de lo que para lo que es usada y tiene la potencia para usarse como una computadora normal). Ya sé ensamblador, no tan bien aún, pero ahí vamos, si me hablan de registros, segmentos, direccionamiento y saltos (condicionales o incondicionales), o la famosa pila, y aún me falta usar la unidad de punto flotante y las operaciones SIMD, pero bueno, eso es otro show y no me parece tan difícil. Pero más bien hablaba de lo que tenía que estudiar para entender la documentación, porque se ensamblador, pero por ejemplo, para llamar al chip gráfico no solo necesito tener la documentación de ésta; también necesito entender por ejemplo, que para llamar al temporizador necesito enviar bits a la dirección en la que se encuentre este, y si la dirección es física o virtual y de hecho eso aún no lo entiendo muy bien, aún no sabría llamar al temporizador y usarlo para contar el tiempo. Y es un desmadre (¿te das cuenta? hablaba del chip gráfico y pasé al temporizador, eso está mal), a tal grado que me he detenido temporalmente para estudiar ciertas cosas antes de continuar (matemáticas es una de ellas, y algo de electrónica) y además organizar mis ideas. El ensamblador no es el problema, el problema es que no sirve mucho si no entiendes cómo está conectado todo y como comunicarte con todo lo que esta conectado.

        Comentarios por Ismael Salas López (@MiEspadas) | diciembre 24, 2018

  90. muchas gracias por esta paguina tan sincera

    Comentarios por Guillermo Martinez | abril 24, 2017 | Responder

  91. hola soy saul , hace mucho que no hablamos y espero que estés mejor y te hayas recuperado de tus dolores y hallas practicado algo de acondicionamiento físico y espero que un día conversemos para saber como te va , por cierto cuando te pedí que vinieras con 200 pesos y buscarme no era para pagarme clases de artes marciales , era para enseñarte a ahorrar y crear un futuro para ti y tu familia eso podría enseñarte a tener un balance y mas con ayuda de DIOS .

    por ahora mi limitare a decir esto espero y sigas bien mi amigo.

    te saluda el maestro ya no tan secreto ,

    Comentarios por saul | junio 22, 2017 | Responder

  92. Estoy estancado, comprendo la lógica de programación. Los lenguajes de alto nivel, sin importar, me son un recuerdo de superioridad en mi adolescencia. Me aburro de toda mi pedantería y me estanco.

    Ahora en el ensamblador, conozco el modo didáctico y pedagógico de todos esos lenguajes de alto nivel pero no avanzo, no progreso, no sé crear un pixel en pantalla, no sé interactuar con la bandeja de DVD/CD, no reconozco mi alma con interrupciones y menús prediseñados. No encuentro más libros por estudiar, ni de los baratos ni de los caros; todos me llevan siempre al mismo lugar: calculadoras y ventanas de windows.

    ¿Dónde está mi conocimiento abnegado? No puedo ni interactuar con un microcontrolador. Mátame Dios, no soy digno de ti. Me estanco de nuevo y siempre vuelvo a mi blog de siempre, suplicando ayuda.

    Comentarios por Andrew Devenir | agosto 2, 2017 | Responder

    • Para un programador de ASM el lenguaje son las instrucciones del CPU y el sistema operativo es una API. Si puedes hacer un programa en C++ para windows puedes hacerlo también en ensamblador. Todos los lenguajes usan la misma API. Si comprendes el formato de archivo ejecutable (PE en Windows, ELF en Linux) y sabes como llamar desde ahí al sistema operativo puedes hacer cualquier cosa. Valora esos tutoriales de calculadoras. Yo aprendí ensamblador para windows con un programita que hacía un hola mundo. Se llamada PEDEMO.ASM y venía en los ejemplos del Flatassembler. El resto fue leer documentación del Windows e interactuar con él desde mi programita que casi no hacía nada. Te recomiendo revisar la MSDN como cualquier otro programador y luego hagas lo que ahí explican con llamadas desde ASM. Y si tienes duda recuerda que todo se ve igual en un editor hexadecimal

      Comentarios por asm86 | agosto 2, 2017 | Responder

  93. preguntar es de sabios
    Que se mueran los ceros

    Comentarios por mirycia | agosto 2, 2017 | Responder

  94. buenas, me podrían guiar en que parte de los tutoriales disponibles si hay uno donde me explique el proceso de imprimir un numero (en base 10) en otra base como octal y hexadecimal. es decir ingreso 10 y lo imprimo en otra base numerica

    Comentarios por Federico | septiembre 16, 2017 | Responder

  95. Hola. Quisiera contactarme contigo, es por dos motivos. Uno sería que necesito ayuda a la hora de programar en ensamblador, en Windows. Realmente no quiero aprender a programar, sino aprender cómo es eso del lenguaje ensamblador, pero yendo tantito más lejos que con los materiales que proporcionas. La verdad tengo pocos conocimientos de programación, los que tengo vienen de cursos básicos de programación en lenguajes de programación (C, C++, Java, etc.), y de lo que estoy aprendiendo en la universidad. Ah por cierto, no te pediría ayuda sino fuera porque estudiará en línea, por que estudio por Internet a distancia. Si estudiará en sistema abierto, hubiera haber podido consultar a un maestro de la universidad. En mi caso imposible ya que vivo a kilómetros de la ciudad más cercana. Y todavía peor la sede de la universidad en la que estudio no se encuentra siquiera en la ciudad más próxima a dónde vivo. Y para acabarla de amolar, vivo en un entorno rural, por lo que sólo puedo encontrarme contigo por Internet (por ahora), en un futuro quizás no muy lejano pueda con dinero claro, visitarte dónde vives y charlar contigo de cualquier tema que quiera o tenga que hablar contigo. El segundo motivo, es más con respecto a la información que manejas, así que no puedo darte todos los detalles en público, así que sería mejor que fuera en privado. Y tranquilo, puedes tomarte todo el tiempo del mundo en contestar, la verdad las dos cosas, no me importa aprenderlas o hacerlas ya ahorita, sino que yo me tomó mi tiempo con todo. Además, déjame decirte algo, mi procesamiento de información es lento. Así que tendrás que explicarme sin rodeos lo que tengas que decir. Es decir, ve directo al grano, porque también soy directo y quiero que todos sean directos conmigo, cómo yo lo soy. Lo del procesamiento lento, pues me refiero a que no entiendo todo tan rápido cómo un programador o alguien que supiera lo mismo de informática que yo haría, porque realmente ni me acerco a programador, a lo que más me acerco y durante un gran tiempo me acercaré es a ser un simple informático. Es decir, cuento con todos los conocimientos básicos que un informático común debe conocer. Aunque eso si, si aprendo algo, aunque me tomé mucho tiempo, me decido a aprendérmelo bien. Bueno para no ir más con rodeos, quiero que me respondas de forma directa este comentario y después te comentó la otra petición que quiero pedirte. Y ya si quiero hacer alguna otra petición en un futuro te la comentaré. Ah y ya no faltan muchos años para que terminé la carrera universitaria que estoy estudiando, así que deja terminó la carrera y si es necesario establecerme y tal vez pueda comentarte de algo aún más grande, dándote toda la información disponible de lo que pretenda hacer y necesite tu colaboración o apoyo. Sin más que decir, hasta luego. Ah y me gustaron muchos tus podcasts, porque sino me hubieran gustado y entretenido, créeme, este mensaje ni existiría. Tampoco el comentario que hice en tu podcast.

    Comentarios por Emilio Rdz | noviembre 12, 2018 | Responder

  96. Hola, quieres donar unas clases a chicos de todas las edades, ? muchas gracias, me gusto mucho la parte de los programadores que no aprenden ensamblador, estoy muy de acuerdo gracias, mi correo es enfocatemas arroba gmail.com.

    Comentarios por Charlyhackr | junio 12, 2020 | Responder

  97. hola, quisiera tener contacto con usted ya que me urge e interesa aprender a programar en lenguaje ensamblador, quisiera saber si me puede ayudar

    Comentarios por Joan Pederson | noviembre 10, 2020 | Responder

  98. hola buenas tardes recien comiezo a programamar en lenguaje ensamblador y me fascinó pues recien comprendo el enorme potencial que tiene, un profesor me dijo que es el mejor lenguaje para otimizar cualquier sistema electrónico y que sus aplicaciones son las de mas alto grado de precision pues no hay lugar para el error

    Comentarios por alex14tres | noviembre 13, 2020 | Responder

  99. Buenas noches estimado, en estos momentos me encuentro aprendiendo el lenguaje ensamblador nasm en mac osx, me gustaría que me puedas explicar como es que las librerias graficas de c(por ejemplo GTK) es que pueden realizar los graficos(usan asembler por dentro?), a mi me gustaria hacer una simple pantalla en ensamblador sin llamar a librerias c ni tampoco caracteres de escape ansi, el modo video 13H lo puedo usar en mac osx?, espero puedas responder mis consultas, gracias de antemano por tu ayuda.

    Comentarios por Pablo | julio 8, 2021 | Responder

    • En cuanto a si GTK usa o no ensamblador esa pregunta tiene trampa. En realidad todo lo que corre en una computadora está programado en ensamblador porque todo lenguaje compilable se tiene que convertir a lenguaje máquina para ser ejecutado. Aunque muchas bibliotecas usan un lenguaje intermedio como C y recurren a diferentes compiladores para crear diferente código máquina según el OS y el hardware.

      En cuanto a programar un sistema moderno como en tiempos del DOS:

      En los sistemas operativos modernos ya no se puede controlar el hardware como en tiempos del MS-DOS. Hay demasiadas cosas funcionando a la vez y dar tanto control a un programa es muy peligroso. La respuesta rápida seria que no se puede. Sin embargo si que es posible programar en ensamblador para sistemas actuales. Pero tienes que jugar con sus reglas.

      Lo más cercano a programar gráficos como en tiempos antiguos es buscar una función del OS que lea un array y lo copie a pantalla o a una ventana. Todo sistema operativo tiene algo así en alguna parte. En ese array puedes leer y escribir pixeles como se hacia en el modo 13h hace décadas pero con las resoluciones y colores actuales. Puedes usar ese array como frame buffer, iluminar pixeles con simples escrituras a ese array y si conoces los algoritmos adecuados puedes dibujar lo que quieras. Revisa la documentación del sistema operativo y encontrarás lo que buscas.

      Comentarios por asm86 | julio 8, 2021 | Responder

  100. hola, manejas el pic18f4550?me interesa hacer un proyecto y de manera lucrativa me apoyes para realizarlo

    Comentarios por Albert Onti | junio 13, 2023 | Responder

  101. Hola, siento curiosidad de aprender ensamblador. Mi objetivo es desarrollar videojuegos 2d con este lenguaje. La consulta si es posible y que libros puedo empezar leer que sea ideal para un novato

    Comentarios por Ariel | octubre 7, 2023 | Responder

    • Si es para Windows cualquier libro sobre win32 sirve (si, en 64 bits tambien se llama win32). Ya que puedas programar algo en C/C++ o por lo menos entiendas el codigo puedes pasarlo a ensamblador. Pero no hay libros actuales ni para principiantes. Lo mejor es buscar los manuales de intel. Son enormes pero gratuitos.

      Programar en asm es duro. Pero siempre se empieza por alguna parte.

      Comentarios por asm86 | octubre 20, 2023 | Responder


Replica a exolon Cancelar la respuesta