Vistas de página en total

miércoles, 8 de mayo de 2013

COMPAREMOS CON TASM


   Ahora ya hemos visto las macros creadas para manejar el entrono de definición de segmentos de forma más cómoda. Hay que tener en cuenta que esto está programado para enseñar el funcionamiento del compilador y la comunicación con subrutinas.Su fin es demostrar como sacar partido a las macros y como todo es definible para así crear un lenguaje cómodo a partir de un compilador muy básico.
   Más tarde usaremos las directivas del TASM, las cuales ya se ha implementado para realizar estas mismas funciones y que funcionan de forma todavía mas completa que mis macros. Por ejemplo, para combinar código con otro lenguajes.
      Pero como no siempre dispondremos de estos compiladores o al menos yo no dispuse en el 1988 de ellos para el Z80, tube que solucionar la estructuración con las macros que si tenían estos compiladores.

   Aquí está el ejemplo "Hola mundo" que podéis encontrar hecho con TASM 5.0.
   Como veis la estructura es prácticamente idéntica. En este caso usa MODEL para definir un programa ".com",cuya forma equivalente mía es _modelo.
   Una diferencia en mi caso es que debo definir la Data al final, para que las macros coloquen correctamente los segmentos en caso de .com. Pero eso es una nimiedad.

    Como veis a nivel de precompilador y de declaración de pila, zona de datos, y zona de código, queda igual. Podemos hasta considerar el .startup como si fuera mi main. Pero como como veréis más adelante el mío es mucho más que la declaración de inicio de programa, en mi caso implementa también la recogida de datos del dos.
    Así mismo la asignación del DS, ya está hecha dentro de mi main.
   Al final veréis el regreso al sistema mediante instruciones asm y la int 21h, en cambio yo dispongo de mi  macro exit.
   Es por todo esto que, aunque existen las directivas en TASM 2.0, yo estoy subiendo porgramas sin usarlas usando las mías, aunque solo sea por demostrar que se puede hacer lo mismo si se saben usar bien las MACROS, y porque de esa manera se puede entender mejor lo que hace el compilador, cuando usamos sus directivas.


Ejemplo "Hola mundo con TASM 5.0"

; Turbo Assembler    Copyright (c) 1988, 1991 By Borland International, Inc.

; HELLO.ASM - Display the message "Hello World"

; From the Turbo Assembler Users Guide - Getting started



   .MODEL small
   .STACK 100h
   .DATA
HelloMessage DB 'Hello, world',13,10,'$'
   .CODE
   .startup
   mov  ax,@data
   mov  ds,ax                  ;set DS to point to the data segment
   mov  ah,9                   ;DOS print string function
   mov  dx,OFFSET HelloMessage ;point to "Hello, world"
   int  21h                    ;display "Hello, world"
   mov  ah,4ch                 ;DOS terminate program function
   int  21h                    ;terminate the program
   END



Ejemplo "Hola mundo con ASM Y MIS DIRECTIVAS"
; Assembler    Copyright (c) 1995 By José Angel Moneo Frdez.

; HELLO.ASM - Display the message "Hello World"
    include main.mac
   _MODELO com
   _STACK 100h
   _DATA
HelloMessage DB 'Hello, world',13,10,'$'
   _CODE
   main
   mov  ah,9                   ;DOS print string function
   mov  dx,OFFSET HelloMessage ;point to "Hello, world"
   int  21h                    ;display "Hello, world"
   exit 0
   _END

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.