Vistas de página en total

domingo, 19 de mayo de 2013

¿COMO FUNCIONA "RUTINA"?

 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.