Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Lenguaje Ensamblador:

–¡El mas dificil de dominar de todos los lenguajes de programación en la historia de las computadoras! ¿Serás tú uno de los pocos privilegiados capaces de lograrlo?–

53 comentarios »

  1. Hola. Primero decir que he decidido escribir, sobre todo porque comparto tu defensa del ensamblador, aunque solo soy aficionado. Mi experiencia en la programacion comenzo con visual basic 6, pero faltaba algo y busque en C, y seguia faltando algo, entonces encontre ensamblador y me senti bien con el control que me daba. Aunque tengo que decir que empece hace poco a tocar la programacion en win32 y lo hago con tasm5 y la verdad que hay muy poca informacion en castellano con este ensamblador. Bueno sigue asi con el Blog. Y queria saber si podria hacerte alguna consulta, gracias. Hasta luego.

    Comentario por Javier | Abril 14, 2009 | Responder

    • Somos tan pocos los que nos interesamos en Ensamblador que puedes considerarte de los mejores con lo que has logrado. Casi nadie pasa la barrera del 8086. Asi que se bienvenido a este blog y no temas preguntar. Yo tambien comence usando TASM en mi epoca de los 16 bits.
      Sin embargo, aunque hay muchos ensambladores (MASM, TASM, NASM, GAS, FASM, etc) todos generan el mismo codigo maquina. Y si entiendes el lenguaje maquina obtendras un dominio de la computadora que ningun otro lenguaje podra ofrecerte.

      Comentario por asm86 | Abril 14, 2009 | Responder

  2. Hola Mario. Me gustaria saber que ensamblador utilizas para win32 y queria preguntarte tambien que ensamblador crees que tiene mejor sintaxis para programar aplicaciones GUI.
    Gracias y que sepas que aunque no participo demasiado en el blog, si lo visito casi todos los dias buscando informacion, asi que espero que no te canses del blog.

    Comentario por Javier | Abril 17, 2009 | Responder

    • Mi Ensamblador de Eleccion es el FASM. Puedes encontrar un link en mi blog en la parte derecha bajo en apartado Herramientas. Di con este excelente ensamblador cuando intente hacer uno propio. Fasm esta programado en Ensamblador, por lo que es muy rapido y puedes estudiar su codigo fuente. Su sintaxis es mucho mas sencilla que la del MASM y TASM y se apega mas a las normas de Intel. A diferencia de los Ensambladores con sintaxis AT&T que es la mas confusa de todas.
      En cuanto al API de Windows para aplicaciones GUI, en el sitio del FASM hay un archivo de ayuda sobre la API de Windows. Puedes llamar a cualquier funcion de Windows desde Ensamblador como se estuvieras programando en C++ o Visual Basic. Para mas informacion lee las entradas “Al fin un Codigo en Ensamblador”, “CALL, una llamada perdida”1,2 y 3 y “Corazones y Estomagos”. En estas notas viene un Hola mundo con la GUI de Windows, como hacer llamadas al sistema operativo y la gestion de mensajes del sistema. Te recomiendo que tambien leas libros sobre Windows, como el de Charles Petzold, aunque no dicen nada de Ensamblador explican cosas como los mensajes, DLL, COM y otros temas avanzados. En Windows, el manejo de la GUI corre a cargo del sistema y uno solo llama funciones ya hechas. Aun en Ensamblador. Esto es un poco decepcionante pero funciona.
      En cuanto al blog, puede que de pronto pase una o dos semanas sin escribir, pero eso no significa que el blog ha muerto. Asi que tampoco dejes de visitarlo. Creo que hay una forma en la que los lectores reciben un aviso cuando un blog cambia. Creo que investigare como hacer eso.

      Comentario por asm86 | Abril 17, 2009 | Responder

  3. En mi caso… ahora si que el FASM no lo cambio por nada.

    EDIT + FASM, que mas puede uno pedir?

    ademas c.bat que compila el codigo y m.bat que me deja el EDIT del msdos listo para modificar mis programas.

    Saludos!

    Comentario por Puerco | Abril 20, 2009 | Responder

    • EDIT + FASM, gran combinacion que alguna vez use. Aunque si se configura adecuadamente el editor del FASMW y el teclado en Windows puedes obtener un poco mas de comodidad. Aunque el resultado es el mismo. Creo que escribire una entrada donde se hable sobre como programar con velocidad y confort. Por cierto, para los que no sepan, EDIT era un viejo pero muy practico editor de MS-DOS. Y superaba por mucho a los editores de texto de su tiempo (tanto de DOS como de UNIX)

      Comentario por asm86 | Abril 21, 2009 | Responder

  4. Es bueno saber, que hay gente en habla hispana que este interesada en el Lenguajes Ensamblador, El lenguaje mas antiguo de programacion. Ya se estan viendo los frutos de tu proyecto pinche puerko.

    Un voto mas para el FASM, es Open Source y muy facil de programar, no andas con chingaderas como con el TASM que compilas para crear un ARchivo Objeto(que pedo sera eso, solo los de Borland lo saben) y luego lo enlazas con TLINK para crear el EXE o el COM dependiendo de lo que deseas hacer.

    Con el MASM(Microsoft Assembly) no he tenido experiencia en programar con el, pero he visto los codigos que utilizan ese compilador y me dan hueva ver tantas macros, Pero es el que utiliza el libro de Bray, asi que ni pedo.

    Suerte Javier, vas a ver el la vida de otra manera, empiezas con esto y ya no hay marcha atraz

    Uiiiiiiiiikkkk uik uik

    Comentario por blackpig | Abril 21, 2009 | Responder

    • Originalmente los archivos objeto .OBJ (“punto OVEJOTA” como dirian algunos) se crearon para programar en mas de un lenguaje. En los noventas era muy comun que quienes hacian juegos programaban casi todo en C y solamente programaban las rutinas graficas mas complejas en Ensamblador. Dicen que asi hicieron con DOOM pero no me consta. Recuerdo hace mucho cuando combinaba codigos con mis amigos nerds. Se creaban archivos intermedios .obj con los compiladores TASM y TC y se pegaban con MAKE. Eso hacia yo en ese tiempo hasta que lo unico de C que tenia el codigo era el MAIN( ).

      Comentario por asm86 | Abril 21, 2009 | Responder

  5. Hola a todos, gracias por vuestras opiniones. Ya me baje el paquete de FASM para windows y ahora estoy leyendo el manual, a la vez que pruebo algun codigo.
    Un saludo.

    Comentario por Javier | Abril 23, 2009 | Responder

    • El manual del Fasm es bueno para empezar, pero si quieres realmente aprender Ensamblador necesitaras los Mauales de Intel (Link en el blog) Y no olvides descargar la ayuda de la Win32 API del sitio del FASM.

      Comentario por asm86 | Abril 27, 2009 | Responder

  6. Actualmente en el sitio de flatassembler.net, ya no puedes descargar el archivo de la ayuda de la Win32 API

    Comentario por blackpig | Abril 28, 2009 | Responder

    • Bueno, de todas formas ese formato de ayuda ya no funcionaba en Windows Vista sin una actualizacion especial. Aunque cualquier referencia a las funciones, sin importar si es para C, Visual o cualquier otro lenguaje funciona. Si Aun asi tienes dudas, busca un programa que sepas que usa la funcion de la API que quieres y estudialo con el OllyDbg. Ahi puedes ver como se hace la llamada en ensamblador. Es posible saber que funciones DLL usa una aplicacion porque al abrir su .EXE con un editor de texto puedes leer sus nombres en cadenas ascii. Mas adelante pondre un link a estas llamadas API. Creo haber visto un sitio web con toda la referencia a la API de Windows en castellano.

      Comentario por asm86 | Abril 28, 2009 | Responder

  7. Hola Mario. Queria comentar que viniendo del TASM (en MASM es igual), lo que mas me choca es la necesidad de escribir directamente en el codigo la seccion .idata, para saber que APIs va a utilizar el ejecutable, mientras que en TASM se necesita una sola linea (ejem: extrn ExitProcess:PROC). Hasta luego y gracias por todos los comentarios.

    Comentario por Javier | Abril 29, 2009 | Responder

    • Eso es cosa del compilador. Por ejemplo, FASM tambien puede usar macros para definir llamadas a funciones como esa, incluso tienen una para declarar todas las funciones de Windows en un solo renglon. Este es un Hola Mundo con Macros de FASM:

      ; example of simplified Win32 programming using complex macro features
      
      include 'win32ax.inc'
      
      .code
      
        start:
      	invoke	MessageBox,HWND_DESKTOP,"Hi! I'm the example program!","Win32 Assembly",MB_OK
      	invoke	ExitProcess,0
      
      .end start
      

      Aunque en lo personal no me gusta usar macros porque me parecen mucho mas complicadas que el propio ensamblador. La macro Invoke permite llamar una funcion API de una DLL en un solo renglon. Pero con funciones con muchos parametros en notacion hungara hacen falta muchas pantallas horizontales para leer las llamadas.
      La decision de usar o no macros es asunto de cada programador, todo estara bien mientras uno sepa que codigo maquina esta siendo generado.

      Comentario por asm86 | Abril 29, 2009 | Responder

  8. Buenas Mario. Aunque no tienes porque saberlo, pero queria preguntarte si sabes porque el FASM crea ejecutables mas reducidos que TASM. He observado con un editor hexadecimal que en los ejecutables de TASM la Header PE empieza en el offset 0100h, mientras que en FASM empieza en el 80h. Venga hasta luego y gracias.

    Comentario por Javier | Mayo 5, 2009 | Responder

    • Aunque la estructura de un formato ejecutable PE de Windows es la misma para todos los códigos, hay muchas diferencias en la forma en como MASM y FASM almacenan la información y hacen las llamadas al sistema. Por ejemplo, El encabezado de un PE incluye mucha información sobre el compilador y el sistema para el que fue creado. Casi ninguno de esos campos es indispensable para funcionar y el FASM no los utiliza, por ejemplo, el números de versión del compilador puede ser 0.0 y Windows no protesta. Otra diferencia está en las llamadas al sistema. FASM se involucra directamente con el llamado a las DLL, mientras que MASM usa una técnica llamada ‘Jump Table’ o Trampolín. Si rastreas una llamada a la API de Windows de un programa hecho en MASM, la instrucción CALL te lleva a una zona de código donde solo hay JMP’s. Dependiendo en cual de esos JMP caigas es la función que se ejecuta. Este modo ocupa mucho mas espacio pero permite separar el ensamblado del enlazamiento del programa y hace mas sencillo para MASM interactuar con otros lenguajes. Hay algunas diferencias en las secciónes de importació y exportación de funciones.
      Otra gran diferencia es la ‘granularidad’. Un programa ejecutable en Windows no puede tener segmentos mas pequeños que lo que permita la granularidad. Para Windows 95 este valor era una página (512 bytes) pero en Windows NT este valor es mucho menor. Si desensamblas PEDEMO.EXE o lo metes a un editor Hexadecimal verás que se despercicia mucho espacio con ceros. Pero todos los segmentos están alineados a 512 bytes.
      Incluso hay gente sin quehacer que compite por hacer ejecutables de windows de menos de 1kbyte. Esto es posible si creas un solo segmento para datos y código y declaras los encabezados como estructuras del propio programa. Windows se confunde y lo ejecuta. Pero esto no es siempre seguro y en los equipos mas avanzados hasta pueden confundir la aplicación con un virus. Todo depende de que te toque.

      Comentario por asm86 | Mayo 5, 2009 | Responder

  9. Hola Mario, como va ese editor, espero que bien, me parece buena idea. Bueno a ver si me puedes echar una mano con un tema, que supongo sera facil, pero no termino de conseguir. Bueno el caso es que no consigo cambiar fondo de un control static. He estado buscando info, y he leido algo sobre un mensaje WM_CTLCOLORSTATIC, que entiendo que se mandaria con SendMessage a la ventana padre del control. Tambien habla sobre otra API la SetBkColor. Pero bueno, que no consigo relacionar todo esto y que funcione. Si me puedes echar una mano, te lo agradezco. Ah, tambien comentarte que la ventana es normal, no es un dialogbox. Gracias, hasta luego.

    Comentario por Javier | Mayo 15, 2009 | Responder

    • las constantes de Windows que controlan los Static controls comienzan con “SS_” por Static Style. Hay varios estilos que copian el color de diversas partes de la propia ventana. Pero creo que el que mas podria interesarte es SS_BITMAP, pues este te permite acomodar un bitmap al control estatico que puede ser un color plano o hasta una foto. Ese bitmap lo defines en la seccion de recursos.

      Recuerda que esto es un estilo y que tienes que definir el control estatico con CreateWindow o CreateWindowEX y pasarle estas constantes el parametro de estilo. Para el windows todo son ventanas, no importa si son ventanas, cajas de texto, botones,etc.
      Para manipular la apariencia de una ventana puedes leer un poco sobre el Device Context. En cuanto a la seccion de recursos, FASM te permite definirla dentro del propio codigo, o puedes usar un compilador de recursos pero eso ya es harina de otro costal.

      Comentario por asm86 | Mayo 15, 2009 | Responder

  10. Hola Mario. Bueno he tardado un poco. Comentarte sobre lo que me dijiste, que no utilizo archivo de recursos, sino que creo los controles como respuesta a WM_CREATE. Me recomiendas utilizar un archivo de recursos o hay otra forma de cambiar el fondo de un control, sin utilizarlo? Voy a buscar informacion sobre el Device Context como me dijiste. Igualmente gracias, y hasta luego.

    Comentario por Javier | Mayo 23, 2009 | Responder

  11. Hola Mario, me alegro de haber encontrado un sitio donde se hable de ensamblador en castellano, yo sin embargo todavia me cuesta programar ensamblador directamente en FASM o MASM. Quisiera saber si hay algun ejemplo en FASM lo mas simple posible donde se obtenga una direccion a la video memoria en WIN32 o tambien añadiendo DDRAW. Mi problema es que las llamadas a librerias o funciones acaban por desorientarme… Gracias !

    Comentario por Javier | Junio 7, 2009 | Responder

    • Lo que buscas esta en el archivo DDRAW que viene en el directorio EXAMPLES de FASM. Ahi inicializan el DirectDraw y mueven algunos sprites escribiendo directamente en la memoria de video. La parte dificil es aprender sobre como hacer llamadas al COM. Para entender este archivo necesitas un depurador porque el codigo tiene demasiadas macros. Un depurador te dira realmente lo que el programa esta haciendo.
      Ya cuando logres inicializar el DirectDraw busca una estructura llamada DirectDrawSurface. En esa estructura hay un valor que contiene la posicion de la memoria de video. Creo que la estructura se llama DDSCAPS. Pero debes de llamar a Lock y Unlock antes y despues de escribir a esta memoria o puedes causar un Fallo de Proteccion General. Sea como sea, la respuesta es el COM

      Comentario por asm86 | Junio 7, 2009 | Responder

  12. Holap:

    “¡El mas dificil de dominar de todos los lenguajes de programación en la historia de las computadoras!”

    Absolutamente cierto, por eso prefiero programar en el lenguaje Supremo… o sea: C… xD

    Saludooos :P

    Comentario por carlosruizortega | Junio 11, 2009 | Responder

    • De hecho, muchas cosas del C vienen directo del Ensamblador, como la aritmetica de punteros, el hecho de que el primer elemento de un arreglo sea el cero y no el uno y las llamadas por referencia por mencionar unas pocas. De todos los lenguajes de alto nivel, al que mas respeto le tengo es al viejo C. Incluso algunos compiladores tienen la instruccion __emit__(); que te permite introducir lenguaje maquina en C.

      Comentario por asm86 | Junio 11, 2009 | Responder

  13. necesito ayuda para estas preguntas ya que no se muy bien de lenguaje y tengo que realizar mis practicas gracias
    Escribir las funciones e interrupciones requeridas para ejecutar las siguientes actividades:
    a. Abrir un archivo:
    Función:
    Interrupción:
    b. Leer un archivo:
    Función:
    Interrupción:
    - Escribir la línea de código que debe modificar para que genere el archivo en la unidad de disquete:
    Escribir la línea de código que debo modificar para que genere un error al crear el archivo

    Comentario por janeth (jan) | Julio 28, 2009 | Responder

    • Como lo adverti, las respuestas gratuitas a esa tarea ya no estan disponibles, espero que las hayas leido antes de esto. Para todos los demas que creen que detras de google hay un enano que entiende busquedas del tipo:“Escribir la línea de código que debe modificar para que genere el archivo en la unidad de disquete” y no int 21h A: mejor busquen algun libro de programacion en ensamblador como el viejo libro de Brey “Los Microprocesadores Intel” (si es que saben leer).

      Parece que mas gente de tu misma escuela vino aqui buscandoles que les haga esa misma tarea. De todos modos, si al terminar tus practicas aun te interesa la programacion en Ensamblador aqui estara este blog para ayudarte.

      Comentario por asm86 | Agosto 1, 2009 | Responder

  14. Hola ,interesante web , te dejo mi correo para ver si podemos hacer un intercambio de codigos para que publiques en la pagina

    Comentario por Yuri | Agosto 6, 2009 | Responder

    • Todos los codigos de ensamblador son bienvenidos

      Comentario por asm86 | Agosto 6, 2009 | Responder

  15. Me puedes escribir para saber tu correo y mandártelos , saludos y sigue así

    Saludos !!

    Comentario por Yuri | Agosto 10, 2009 | Responder

  16. es que tengo unos codes pero están en masm y quiero ponerlos en fasm y de paso lo publiques aquí , y de paso me des tu opinión !!

    Los tengo publicados en un foro .
    Esta es una forma de convertir a hexadecimal
    muy rápida
    http://foro.elhacker.net/asm/convertir_a_hexadecimal-t263826.0.html

    Para convertir a Binario (011100110)
    sencilla
    http://foro.elhacker.net/asm/de_ascii_a_binario_01011001-t261008.0.html

    Buscar una string dentro de otra
    (Soporta Búsqueda con asterisc*s)(o Patrones) ;-)
    http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1257143#msg1257143

    Invertir una string (codigo sencillo y sin usar la pila)
    http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255196#msg1255196

    Par o Impar?
    http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1255115#msg1255115

    De minúsculas a MAYÚSCULAS
    http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1254101#msg1254101

    Son codigos sencillos , pero bueno no me exijas mucho que de esto no se mucho ! , soy principiante!

    Comentario por Yuri | Agosto 11, 2009 | Responder

    • no entiendo aun si tu correo esta en los servidores de yahoo o los de sourceforge, por eso aun no te he escrito. Por lo de los codigos voy a leerlos despacio a ver que tal. Igual puede y hasta yo aprenda algo que no sepa aun. Ahora mismo estoy leyendolos…

      Ya les di una ojeada, tus codigos son interesantes aunque te recomiendo poner algunos comentarios y usar lineas en blanco para hacer mas entendible el codigo. Algunos comentarios de los programas:

      conversion rapida a hexadecimal: Ni a mi se me hubiera ocurrido una manera mas sencilla de acelerar esta conversion. No se si se pueda acelerar aun mas con instrucciones como XLAT o XCHG.

      Convertir a binario: Este se ve dificil, pero creo que toma un numero binario y lo convierte en una cadena de simbolos ASCII imprimible de ceros y unos (30h y 31h), Yo inicializaria una mascara con el bit mas significativo en 1. (80h para 8 bits, 80000000h para 32 etc) y con un TEST y SETNZ eliminaria los saltos condicionales intermedios. Las instrucciones SETcc ponen un cero o un uno en el operando destino dependiendo del estado de las banderas indicadas por ‘cc’. En este caso, SETNZ EAX escribira un uno si el TEST (que es un and) entre la mascara y el numero a desplegar es diferente de cero. A este resultado le sumas 30h para obtener un valor ascii, aunque un OR es mas rapido. En cada iteracion desplazas la mascara un bit a la derecha con la instruccion SHR. El ciclo se acaba cuando la mascara es igual a cero. No se si me explique pero eso es lo que entendi.

      Busqueda de una cadena dentro de otra: A este le tengo que dedicar mas tiempo porque no le entendi. se ve muy interesante esa capacidad de admitir el comodin asterisco * para busqueda de grupos de letras. Me huele que ya hiciste un aceptor.

      Invertir una string: Los 4 mov que haces con el registro ecx pueden cambiarse por un solo MOV y 2 XCHG. Yo tendria cuidado tambien con la condicion de terminacion.

      Par o impar: Este es el mas sencillo. Para ver si el contenido de un registro es par o impar solo hacer TEST EAX,EAX SETP edx. Esta secuencia pone un uno en EDX si el contenido de eax es par, de lo contrario lo deja en cero. Puedes usar este valor como una bandera. De hecho, si quieres ver si un resultado, como una suma da un resultado par o impar, solo tienes que hacer el SETP, sin el TEST, pues muchas instrucciones ajustan las banderas automaticamente. No olvides que el CPU ya tiene una bandera que detecta si un resultado es par o impar.

      De minusculas a MAYUSCULAS: Lo unico que le cambiaria a este codigo seria la resta de 20h por un AND con 0DFh Esto pone a cero el bit 5 del simbolo ascii. Para pasar de mayuscula a minuscula seria un OR 20h. Otra modificacion que haria seria eliminar los saltos condicionales con SETcc y convertir el resultado en la mascara que convierte los numeros, aunque de momento no se me ocurre como. Te prometo que en otra nota averiguare como hacerlo.

      FELICIDADES! Aun a pesar de tu humildad al decir que no sabes mucho, has hecho mucho mas de lo que las prestigiadas universidades les exigen a los ingenieros en computacion en las materias de Ensamblador y Microprocesadores. Si no hago una entrada de blog ahora mismo es solo porque cada una de esas entradas me toma por lo menos 2 horas. Sigue programando que vas mejor que la mayoria de los Ingenieros.

      Comentario por asm86 | Agosto 11, 2009 | Responder

  17. Yuri say >

    Hola hermano , tus palabras me han conmocionado tanto que me dan hasta miedo de creerme “genio” y dejar de ser creativo a la hora de crear algún algorithmo en asm , yo sigo pensando que mis codigos son muy simples no tienen nada fenomenal pero hay gente que me ha felicitado también ,( mi conclucion sobre asm es que hay atraso en esta area , puede que se deba a que en las universidades dan ASM para micros muy viejos y les cojen odio a asm ).Aun tengo muchos baches y instrucciones por aprender , me he estancado un poco ya que con pocas instrucciones se puede hacer “mucho”

    He iniciado un blog aquí en wordpress se llama kapetres (kp3 búscalo en la wikipedia y veras de donde soy);)
    http://kapetres.wordpress.com/

    No pienso ser la competencia solo una hermandad para elevar al ASM a un grado superior
    Mi correo esta en yahoo y los de sourceforge , sourceforge es solo una mascara de correo , en realidad el reenvia a otra dirreccion (esto es solo un filtro antibasura ya que esa dirreccion se cambia)

    Solo quiero pedirte un favor , tengo un problema con las apis de lectura y escritura y me hace falta la ayuda de un experto como tu para poder terminar un (preprocesador de datos)(es sobre compresion) , ya tengo terminado el algorithmo pero me falta la parte de interaccion con el sistema (Win) , necesito tu ayuda ya que aun no se como leer y escribir. Disculpame , pero me puedes ayudar?

    tiene algo que ver con redes neuronales?

    Saludos y escribeme.

    Comentario por kapetres | Agosto 12, 2009 | Responder

    • Si puedes llamar una API en Windows puedes hacer todo lo que el sistema te permita. Si por leer y escribir te refrieres a leer valores en cajas de texto y desplegar resultados en la ventana la manera mas sencilla es mediante CreateWindowEx con el parametro EDIT en el lpClassName y mostrar resultados por MessageBox. Mas adelante podras hacer cajas de dialogo mas elaboradas si quieres.

      En cuanto a lo de la competencia no te preocupes, somos tan pocos los que programamos en ASM que el esfuerzo individual ayuda a todos por insignificante o grande que sea. Mas adelante veremos si enlazamos nuestros blogs para compartir informacion y trafico de manera mas eficiente. Seria bueno un Webring de blogs sobre Ensamblador.

      Por ultimo, y respecto a lo de creerse “genio”, en la programacion en ASM pasa algo muy gracioso: No hay programadores mediocres. Para siquiera entender lo minimo sobre el ensamblador hace falta un nivel de conocimientos y habilidades muy superior al que los programadores experimentados en otros lengujes mas “humanos” tienen. Obvamente, los niveles superiores de la programacion en Ensamblador son tan dificiles y sorprendentes que rayan en la ciencia-ficccion. En pocas palabras, no cualquiera programa en Ensamblador. De hecho, el ensamblador es dificil de entender e imposible de dominar. Y cuando crees que ya lo has dominado te encuentras con otro CPU y comienzas de nuevo.

      Comentario por asm86 | Agosto 12, 2009 | Responder

  18. Los aceptores tienen algo que ver con las redes neuronales?

    Saludos

    Comentario por kapetres | Agosto 12, 2009 | Responder

    • Los aceptores se relacionan directamente con la Inteligencia Artificial y otras materias de nombre rimbombante, pero las redes neuronales tienen sistemas de decision y cambio de estado que usan matematicas mas pesadas. Un simple aceptor tan solo recibe una entrada y actua con un cambio de estado en consecuencia, un simple aceptor tampoco es capaz de aprender como las redes neuronales con “perceptrones”.

      No dejo de reirme de lo complejos que se oyen estos nombres.

      Comentario por asm86 | Agosto 12, 2009 | Responder

  19. bueno , escribeme al correo para intercambiar de una forma mas rápida , y de paso para que veas el algorithmo talves me indiques algo que pueda cambiar!!
    Gracias otra ves por tus comentarios y puedes usar mis codigos para hacer tu aceptron (siempre que indiques de donde salio)(no te conviertas en lammer XD jajaja )

    Saludos y escríbeme !!

    Yuri

    Comentario por kapetres | Agosto 13, 2009 | Responder

    • ya te escribi al correo de yahoo.es

      Comentario por asm86 | Agosto 13, 2009 | Responder

  20. ok hermano , puedes borrar el comentario donde pongo mi direccion de yahoo ??
    Saludos

    Comentario por kapetres | Agosto 13, 2009 | Responder

    • Asunto arreglado…

      Comentario por asm86 | Agosto 13, 2009 | Responder

  21. Hola , parece que no te han llegado mis correos o estas ocupado !
    Saludos

    Comentario por kapetres | Agosto 14, 2009 | Responder

  22. QUE TAL MUCHACHOS SOY NUEVO EN ESTO DE PROGRAMACION. NECESITO PROGRAMAR EL PIC16F84 Y LO QUIERO HACER (OBVIO) CON ENSAMBLADOR (POR LO QUE HE AVERIGUADO LOS DEMAS LENGUAJE, DE ALTO NIVEL, SON FACILES)
    ESTE LENGUAJE SEGUN COMO LO VEO ES LA BASE DE TODO Y NO HAY MAS. ¿SERIA FACTIBLE EDITAR EL PROGRAMA EN BLOCK DE NOTAS ? Y COMPILARLO CON “PICSIMULATOR IDE”. ALGUIEN QUE ME AYUDE POR FIS….

    Comentario por RELKAN | Agosto 16, 2009 | Responder

    • ¿Me juras por los dioses de la computación que no se trata de una tarea?

      Es sorprendente cuanta información en español hay en internet sobre este microcontrolador y tan poca sobre como programarlo en ensamblador. Aqui hay un enlace a un PDF que incluye datos sobre herramientas de desarrolla (como el ensamblador MPASM) un sumario del conjunto de instrucciones y su formato. Pero si quieres mas información directo del fabricante puedes encontrarla en su propio sitio web en: http://www.microchip.com

      Aunque con el simulador y las herramientas que mencionas yo creo que solo te hace falta una referencia de las instrucciones y unos cuantos programas de ejemplo.

      Comentario por asm86 | Agosto 17, 2009 | Responder

      • Que onda cartman, ya le hiciste la tarea, jajaja

        Comentario por b1ackpig | Agosto 17, 2009

  23. Si puede programar un PIC con la informacion que le di no creo que necesite que alguien le haga la tarea.

    Comentario por asm86 | Agosto 17, 2009 | Responder

  24. me das asco..estaba leyendo tu blog y la verdad es q es malisimo..me estoy iniciando en lenguaje ensamblador y la verdad q la actitud q tenes con los demas programadores es pesima, ademas si te estas muriendo de hambre como ensamblador es porque no sos nada…

    Comentario por daniel | Octubre 8, 2009 | Responder

  25. Hola daniel , gracias por llegarte a este BLOG , lee esto:

    BLOG:
    Un blog, o en español también una bitácora, es un sitio web periódicamente actualizado que recopila cronológicamente textos o artículos de uno o varios autores, apareciendo primero el más reciente, donde el autor conserva siempre la libertad de dejar publicado lo que crea pertinente

    http://es.wikipedia.org/wiki/Blog
    ———–

    “me das asco”

    Asco:
    Asco es la denominación de la emoción de fuerte desagrado y disgusto hacia sustancias y objetos, como determinados alimentos, excrementos, materiales orgánicos pútridos o sus olores. El asco puede ser suscitado también por personas o comportamientos.

    “..estaba leyendo tu blog y la verdad es q es malisimo”

    Pues no lo leas (masoquista) , no es obligatory.

    ..me estoy iniciando en lenguaje ensamblador y la verdad q la actitud q tenes con los demas programadores es pesima, ademas si te estas muriendo de hambre como ensamblador es porque no sos nada…

    ——–
    Pues que bueno que te inicias en esto del Asm , lee libros y punto , no aprenderás mucho en un blog. Estudia

    ——–
    Esto es mas cómico :
    además si te estas muriendo de hambre como ensamblador es porque no sos nada…

    “como ensamblador” , esto es un error , el no es un emsamblador el programa en Ensamblador.

    Además quien te dijo que los que mueren de hambre no son nada , grandes hombres han muerto de hambre por mantener una postura determinada en esta puta vida .

    “Todos los días mueren de hambre 35.615 niños y hoy no será una excepción”
    —-
    Donde mas razón tienes es aquí:
    la actitud q tenes con los demas programadores es pesima

    Pero como te dije , es un blog y esto le agrega algo de comicidad .


    “no sos nada” Debes ser argentino.

    Saludos y tomalo suave

    Comentario por Kape3 | Octubre 9, 2009 | Responder

  26. Que onda mario, intente ver los temas de enero, en el combo me aparece que son 28 temas pero al darle click me aparece solo 10 temas que son apartir del 23 enero hasta 30 de enero, no se si lo puedas solucionar, ya que en esa fecha esta la mayor parte del tutorial del Lenguaje ensamblador.

    Te comento, por que quize buscar el tema de “El Doble Filo de las Macros en el Ensamblador”, pero no lo hayaba, hasta que le hice una busqueda esaustiva con el google. Y pude notar que es el 13 de Enero pero no aparece en el Blog.

    Saludos

    Comentario por b1ackpig | Noviembre 11, 2009 | Responder

    • Por default, WordPress solo muestra las ultimas 10 entradas, sean del mes que sean comenzando por la mas reciente. Si quieres leer entradas mas antiguas de principios del mes debes de hacer click en un renglon azul que dice “entradas anteriores” y te mostrara las 10 entradas anteriores a las que ya viste. Ya encontre la nota que dices, solo que su nombre es “Ojos que ven pueden ser enganados”, la parte que dice –El doble filo de las macros en ensamblador es un subtitulo que en realidad pertenece al texto de la entrada–

      Comentario por asm86 | Noviembre 11, 2009 | Responder

      • Gracias por la pronta respuesta, si no habia visto ese link, pero si esta medio oculto, y hay mucha informacion valiosa. No se si lo has notado pero casi nadie a comentado en esos temas, tal vez sea porque estan medio escondidos.

        Comentario por b1ackpig | Noviembre 12, 2009

  27. Que onda mario, Ya tiene un año este blog, deberias hacer algo por el aniversario, algo como… mmm, no se, un pdf de la primera temporada. (Manual de Programacion en ensamblador por Mario.pdf)

    Comentario por b1ackpig | Noviembre 19, 2009 | Responder

  28. Hola.
    Esta muy bueno tu blog, ya que son pocos los que verdaderamente son programadores, no como los hay ahora copiar y pegar y ya tienen un programa y ni siquiera ellos mismos saben como funcionan, yo no soy programador en ensamblador yo programo en c y c con el api de windows, pero tengo algo de conocimieto de ensamblador y hay que reconocer que con este lenguaje si se puede tener el control total de la maquina y como tu mismo lo has dicho es el lenguaje de las maquinas, son pocos los que llegaran al final y en el futuro solo los que entendamos a estas maquinas podremos sobrevivir en este mundo.

    Comentario por Cesar | Noviembre 21, 2009 | Responder

  29. Hola buenas tardes, soy newbie o novato como quieran ustedes, he empezado en ensamblador hace muy poco y me encanta a pesar del frecuente desprecio que se siente en general, diciendo que es un lenguaje desfasado y que no se utiliza para nada y que es perder el tiempo.

    A pesar de todo ello sigo leyendo antes de practicar, ya se sabe primero teoria y despues practica. Es curioso que cuanto mas leo y veo todas las posibilidades que me ofrece me corroe la curiosidad por dentro de como se hace determinadas cosas, el porque y me gusta profundizar al maximo, buscando en libro,preguntando.

    El libro en el cual estoy inmerso y me encanta, he de decir que es una maravilla, es El Universo Digital libro digital que nada por la net, y es este libro el que me motiva a seguir, pero esoty deseando incarle el diente a uno nuevo que tengo, lenguaje ensamblador 2009, segunda edicion de ensamblador para ms-dos, windows y linux, que tambien poseo.

    Por todo ello pido permiso para poder tomar parte en su blog y poder aprender de ustedes ya que compartir no tengo mucho ya que estoy aprendiendo.

    Estoy seguro que aprendere mucho de ustedes y espero poder aprvechar su sapiencia.

    Manifiesto mi voto incondicional al lenguaje ensamblador y ojala nunca caiga en el olvido, que nunca caera mientras haya gente dispuesta aprender algo nuevo.

    Me despido de ustedes, dandole las gracias y sera una placer aprender de ustedes, si me lo permiten. Con muchas ganas de aprender.

    Un cordial saludo.

    Lucas.

    Comentario por Lucas | Diciembre 1, 2009 | Responder

    • Pues puedes participar en este blog con tus comentarios, aunque si quieres tratar con otros programadores puedes entrar a la Red Social de Programadore de Ensamblador donde podras intercambiar conocimientos con aficionados al Ensamblador de todos los niveles, comparar codigos y leer (y escribir si quieres) tutoriales sobre este lenguaje.

      La red social tiene pocas semanas pero seguro va a crecer para ser importante punto de reunion para los programadores de Ensamblador de habla castellana. O al menos eso espero.

      Comentario por asm86 | Diciembre 1, 2009 | Responder

  30. Hola asm86(o Mario como veo que te llaman aquí), he visto tu blog y me gustado bastante, he de decirte que me fascino ver que hay personas que defienden el lenguaje (¡y personas de habla hispana!), yo soy de esos que empezó hace años programando en lenguaje C y también para el micro 8086, me gustaba mucho programarlo y ponerle hacer de todo, luego descubrí los micro controladores y me fascinaron, recuerdo que llegue a crear un respirador artificial con uno (simulando las válvulas solenoides) , pero por cosas del destino me toco dejarlo hace ya unos 7 años, yo soy programador de VB.net, C#, java y C++(casi no lo uso ya y me estoy olvidando de él), pero debido a este aprendizaje me olvide por completo de las instrucciones de ese micro y del micro controlador, ya no recuerdo ninguna.

    Mi cuestión es que me recomendarías para empezar a programar en este lenguaje ya que mi conocimiento en esta área es nulo. Que libros, manuales, textos, compiladores, etc. Aunque mi campo fuerte son las aplicaciones empresariales y los sistemas de información, no descarto aprender ensamblador, pues para mi es la cima del conocimiento en las ciencias de computación.

    Nota 1: no veo información de tu correo en el blog (bueno tampoco busque mucho), en el comentario dejo el mío por si tienes alguna información.

    Nota 2: Una recomendación no mas, no es muy acertado usar la palabra “difícil“en el slogan que tienes, eso es debido a que la palabra difícil es como es una pared que te pones( o le pones a otro) al frente y que te impide el paso, eso ahuyenta a las personas nuevas que vienen con hambre de aprender, se podría usar por ejemplo la palabra “complejo”, que denota que se requiere trabajo duro para aprender, pero no produce el efecto de detener a alguien que al ver la palabra “difícil” le mueve algo en el subconsciente impidiéndole seguir adelante.

    Te agradezco la atención y suerte con tu blog.

    Comentario por Carlos | Diciembre 16, 2009 | Responder


Deja un comentario