Vistas de página en total

OBJETIVOS

Objetivo del Blog

  El objetivos que pretendo con este blog es dar a conocer el código que usaba para mis clases de ensamblador, y algunos desarrollos avanzados electónicos.
  En la red hay miles de páginas dedicadas a ensamblador, pero no he encontrado ninguna dedicada a estructurar los programas, ni a demostrar mediante programas completos como partir de la nada al todo.
     
  El ensamblador es el lenguaje menos estructurado que existe, y por lo tanto, si queremos hacer algo realmente bueno, debemos ser nosotros los que seamos capaces de estructurar bien el programa.

  
  Dado que en la actualidad ya existen millones de librerías de ensamblador, y lenguajes de alto nivel, entiendo que se puede estar perdiendo la esencia del ensamblador, que es hacerlo tu mismo todo. Por esto decidí crear este blog, que aunque para vosotros, también serán rutinas externas, las iré colocando como si se tratase de un proceso de creación, de manera que se vaya viendo el avance de la complegidad.
   Mi propósito, como he dicho, es conseguir con muy pocas librerías, y además muy sencillas, demostrar que se pueden hacer grandes cosas. Si es verdad que flatarán controles de errores en las rutinas, pero no quiero complicar los programas, para eso ya están las librerías estandar. Quiero que se entienda el proceso completo, que cualquiera que maneje ensamblador tenga un control del programa completo y pueda entender como pasar de la instrucción pura al lenguaje complejo.

   

Forma de presentación

  No voy a explicar el código a fondo. No voy a explicar ensamblador. Para eso ya hay muchas páginas en la web. Solamente voy a ir implementando una verdadera librería de funciones y métodos, que permitirá realizar de forma muy sencilla programas muy complejos en ensamblador, y a la vez ver como se puede crear un entorno propio.

  En realidad se trata de crear un entorno parecido al lenguaje C, pero escrito directamente en ensamblador.

  Los programas como verán son muy legibles, y al tiempo muy potentes, pudiendo llegar muy fácilmente a crear programas de bases de datos, editores, menús o estructuras de ventana fácilmente en ensamblador, aunque puedan carecer de algunos controles de error, ado que se trata de programas, en principio, creados para enseñanaza de este lenguaje.


   La mayor parte del código que coloque aquí son parte de las prácticas hechas para mis alumnos de Sistemas Operativos, Estructura de la Información y Ensamblador. Otras son código creado para mi propio entorno de desarrollo.

    Todo lo que coloque está testado y es operativo 100%. Si seguís los pasos en orden, todo funcionará como un reloj.
   
   El blog lo dedicaré a ensamblador de x86. Si funciona bien, seguramente, dedique otro a ensamblador de Z80.

 Estructura del Blog

      Colocaré una serie de cabeceras y librerías que crearán un entrono básico de programación, tanto de funciones como de directivas  de programación.
  Algunas de las directivas servirán para crear directivas que ya tiene el ensamblador MASM y TASM 2.0, pero  de la que no disponían otros ensambladores en la época que creé las librerías.

    Por ello, las primeras 50 entradas de blog las dedicaré a programar con un entorno propio, usando solo directivas de precompilación simples (macros y condicionales de precompilación) de forma que el entorno pueda ser aplicado a cualquier compilador por muy básico que sea.

   Con este entorno crearé un entono de compilación idéntico al TASM, con algunas ampliaciones.
    El código por lo tanto se parecerá al usado en TASM, pero se verá que no usa sus instrucciones ni directivas, sino las mías. Esto sirve para demostrar que podemos adaptar todo a nuestro gusto y para entender que es lo que hace realmente el compilador.

    Las primeras 37 entradas definirán el entorno a través de cabeceras y rutinas librería.
    A partir de la entrada 37, comenzaré a colocar programas ejemplos. En concreto. Un ejemplo de impresión de datos, un Ejemplo de impresión de hora, un juego matermind, un juego de ahorcado y un juego de tres en raya.  Todo probado y compilable con mi entorno. Sin usar directivas MASM ni TASM, sino ASM, pero legible como si estuviera hecho con directivas TASM.
   En la entrada 50 explicaré como migrar a TASM 2.0, y a partir de ahí todo aprovechará las directivas TASM 2.0.

Hardware
    Dado que no puede existir ensamblador sin hardware, a partir de la entrada 77 comienzo a aplicar el ensamblador al hard. Para ello, comenzo definiendo funciones para I/O, definiendo un protocolo de comunicaciones y creando una tarjeta controlada por centronics.
    Me diante esta tarjeta podremos realizar otras funciones, yo en particular os mostraré la creación de librerías para su control, programas para su verificación. y módulos de aplicación, con su control.
     En este nivel estaremos ya al más alto nivel, pues el hardware que mostraré es muy sofisticado.
     Tanto el hardware como el software quedan protegidos bajo licencia GPL (GPLv3).

     En concreto colocaré dos emuladores. Uno de Z80, y otro de 8051, que en su día (1995) ya quisieron piratearme algunas empresas.
  



Objetivos finales

    CREAR UN ENTORNO ESTRUCTURADO DE PROGRAMACIÓN

   En este blog primero iré exponiendo, rutina a rutina y cabecera a cabecera, un entrono capaz de competir con el "C", para crear aplicaciones DOS. Según valla subiendo funciones, iré colocando programas desarrollados para .exe y para .com usando estas funciones.
   Admito cualquier sugerencia o nuevo código basado en el mío que complete las librerías.
 
   CREAR APLICACIONES

      Inicialmente, según vaya colocando las rutinas, iré incluyendo ficheros ejecutables, que serán, en realidad, nuevos comandos externos DOS. Haré nuevos "type",  "dir", etc
      Igualmente, subiré programas de juegos, o bases de datos, autoexámenes, etc.

   
    ¿A DONDE PODEMOS LLEGAR?
   Estos son  algunos ejemplos de a donde podemos llegar, con ensamblador simplemente, si estructuramos bien el programa.

   Estos programas están hechos en ensamblador por dos razones fundamentales, por simplicidad de acceso a hardware, o por velocidad de proceso.

   El caso del autotext, fue un ejemplo de clase para usar una herramienta impensable, como el ensamblador, para realizar una tarea típica de lenguajes de alto nivel, como COBOL.

   La idea era demostrar que al final TODO es ensamblador, y dar valor a este lenguaje.

      Programa de control de puerto Centronics, para prueba de comunicaciones.



      Programa de pruebas específico de una tarjeta prototipo con comunicación centronics con PC.


 Autotest- Autoexamen. Realiza preguntas aleatoriamente sobre un tema y almacena los resultados en una base de datos


Control de una base de datos ( Altas-Bajas-Modificaciones-Consultas) Gestión básica de una base de datos. En este caso muestra los resultados almacenados en  el test anterior.


    Comando Dir, por ventana emergente.

   Programa completo de desensamblado, ejecución  sobre un  emulador 8051.  Aquí se ha utilizado todas las librerías que expondré.
                           - Gestión por ventanas.
                           - Ventanas emergentes.
                           - Menús desplegables
                           - Barras de desplazamiento


      Todo esto puede hacerse íntegramente en ensamblador con MASM, TASM o incluso en el compilador original ASM, si nos apoyamos en mis directivas.











































No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.