Vamos a comprobar que sucedió con la librería GRAPHICS.ASM al compilarla.
Os muestro la parte del listado generación de programa y de publicación de variables.
Pues aquí os pongo el listado generado por el compilador donde se desarrolla el código de forma completa.
Este pues sería el código que deberíamos colocar si no hubiéramos creado nuestras macros.
En un programa de 45 líneas tenemos 15 generadas por el precompilador. Esto sin contar que ya hemos publicado las funciones, y hemos creado una estructura de trabajo más aprosimada al "C" que al ensamblador.
Básicamente mi macro "rutina nombre x1,y1,z1" equivale a "proc nombre arg x1,y1,z1" en el TASM.0 _code
1 1 0000 code segment byte public 'code'
2
3 rutina _line x1,y1,x2,y2,color
1 4 *000 _linep struc
1 5 *000 01*(????????) dd ?
2 6 *004 01*(????) x1 dw ?
2 7 *006 01*(????) y1 dw ?
2 8 *008 01*(????) x2 dw ?
2 9 *00A 01*(????) y2 dw ?
2 10 *00C 01*(????) color dw ?
1 11 *00E _linep ends
1 12 0000 _line proc near
1 13 *0000 55 push bp
1 14 *0001 8B EC mov bp,sp
15
16 ; espacio para la rutina
17 0003 5D pop bp
18 0004 C3 ret
19 0005 _line endp
20
21 rutina _putpixel x,y,color1
1 22 *005 _putpixelp struc
1 23 *000 01*(????????) dd ?
2 24 *004 01*(????) x dw ?
2 25 *006 01*(????) y dw ?
2 26 *008 01*(????) color1 dw ?
1 27 *00A _putpixelp ends
1 28 0005 _putpixel proc near
1 29 *0005 55 push bp
1 30 *0006 8B EC mov bp,sp
31 0008 53 push bx
32 0009 51 push cx
33 000A 52 push dx
34 000B 8B 46 0C mov ax,[bp].color
35 000E B4 0C mov ah,0ch
36 0010 BB 0000 mov bx,0
37 0013 8B 4E 04 mov cx,[bp].x
38 0016 8B 56 06 mov dx,[bp].y
39 0019 CD 10 int 10h
40 001B 5A pop dx
41 001C 59 pop cx
42 001D 5B pop bx
43 001E 5D pop bp
44 001F C3 ret
45 0020 _putpixel endp
Symbol Name Type Value
??DATE Text "08/05/13"
??FILENAME Text "graphics"
??TIME Text "15:34:19"
??VERSION Number 0200
@CPU Text 0101H
@CURSEG Text CODE
@FILENAME Text GRAPHICS
@WORDSIZE Text 2
_LINE Near CODE:0000
_PUTPIXEL Near CODE:0005
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.