• No se han encontrado resultados

El uso mas comhn de un macro p r o c e s a d o r es en la

N/A
N/A
Protected

Academic year: 2018

Share "El uso mas comhn de un macro p r o c e s a d o r es en la"

Copied!
54
0
0

Texto completo

(1)

t

c

(2)

I N D U C E

r-

L

r

i

c

e

r

TEMA

I .

2 .

3 .

4 .

5 .

6 .

7 .

8 .

Introduccibn.

Descripcibn del Proyecto.

A r c h i v o s .

Instalacion.

P r i n c i p a l e s E s t r u c t u r a s d e Datos.

Procedimientos p r i n c i p a l e s .

B i b l i o g r a f i a .

Apendice.

2

PAGINA

3

4

6

8

1 0

2 3

3 5

(3)

c

r:

L

I

r

L

L

c

Este Macro procesador fue implementado básicamente p a r a s e r u t i l i z a d o con f i n e s d i d a c t i c o s como complemento del curso de Sistemas D i g i t a l e s I i m p a r t i d o en l a U n i v e r s i d a d Autbnoma M e t r o p o l i t a n a (Unidad Iztapalapa), y d i s e n a d o con base e n e l c o n j u n t o de i n s t r u c c i o n e s del m i c r o p r o c e s a d o r UAHICRO, c u y o e s t u d i o c o n s t i t u y e la base de d i c h o curso.

E l d e s a r r o l l o de e s t e macro procesador forma p a r t e de un p r o y e c t o q u e incluye, ademas, un simulador y un ensamblador para el microprocesador UAHICRO.

Una macroinstruccibn ( HACRO ) es simplemente una ayuda notacional para el programador. Es d e c i r , una MACRO r e p r e s e n t a un grupo de in.Strucciones comhnmente usadas en c i e r t o lenguaje de programacibn.

Un Hacroensamblador (tambien conocido como Hacro- procesador) constituye una herramienta que permite a l programador e s c r i b i r una v e r s i o f i n c o r t a de un programa, mediante l a definicibn de macroinstrucciones q u e seran manejadas p o r el Macro ensamblador..

La funcibn del Hacroensamblador es reemplazar por el c o r r e s p o n d i e n t e g r u p o de i n s t r u c c i o n e s cada vez q u e se hace r e f e r e n c i a a una macroinstruccibn en el cuerpo de un programa. Este p r o c e d i m i e n t o e s conocido comhnmente como expansibn de MACROS.

Basicamente un macro procesador s u s t i t u y e un grupo de l i n e a s o c a r a c t e r e s p o r o t r o , s i n e f e c t u a r un a n a l i s i s del t e x t o involucrado en la sustitucibn, salvo en c i e r t o s casos especiales.

El uso mas comhn de un macro p r o c e s a d o r es en la pr0gramacib.n en lenguaje ensamblador, como es n u e s t r o caso.

(4)

L.

L

r

L

?-

LI

íc

DESCRIPCBQN DEL PR(>YEETC>

E l p r o y e c t o e s t a d e s a r r o l l a d o en su t o t a l i d a d en l e n g u a j e T u r b o Pascal, q u e nos p e r m i t e un manejo sencillo de pantallas p a r a f a c i l i t a r a l u s u a r i o la operacibn del mismo.

E l programa f u e n t e q u e se d e s e e p r o c e s a r debe p r o p o r c i o n a r s e a t r a v e s de un a r c h i v o de texto. Asimismo, debe i n d i c a r s e el nombre del a r c h i v o p o r el cual se desea o b t e n e r la s a l i d a , i.e. e l programa f u e n t e s i n m a c r o d e f i n i c i o n e s . E l p r o y e c t o cuenta con la opcibn de e l e g i r un a r c h i v o de d e f a u l t p a r a cada caso ( e n t r a d a y / o s a l i d a de datos).

La operacibn de e s t e sistema se l l e v a a cabo con base en un menu p r i n c i p a l de opciones. P a r a e l e g i r c u a l q u i e r a de e l l a s es s u f i c i e n t e con o p r i m i r l a i n i c i a l de la misma, o s i se desea, p o s i c i o n a r s e e n l a o p c i b n d e s e a d a u t i l i z a n d o l a s t e c l a s correspondi.entes a l a s f l e c h a s ascendente y descendente, segun sea e l caso.

Ayuda Despliega en pantalla un t e x t o b r e v e que explica a l u s u a r i o la forma de u t i l i z a r e l sistema, mencionando una s e r i e de pasos a s e g u i r de t a l f o r m a q u e se u t i l i z e n las opciones del sistema de la mejor manera posible.

D e f i n i r Arcñívor Se u t i l i z a p a r a d e f i n i r la f u e n t e y el d e s t i n o de l o s d a t o s cada v e z q u e se desea procesar un a r c h i v o . S i se e l i g i b e s t a opcibn p o r a c c i d e n t e , e s p o s i b l e abandonarla presionando la tecla < E S O .

(5)

r

h

c

Yacroenramnblador I n i c i a l a e j e c u c i b n d e l Macroensamblador U A N I C R O p r e v i a d e f i n i c i b n de l o s a r c h i v o s f u e n t e y destino. S i d u r a n t e e l procesamiento es detectado un e r r o r , la descripcibn del mismo s e r a desplegada en e l r e c u a d r o s u p e r i o r de l a pantalla. S i esto o c u r r e , se t i e n e n las a l t e r n a t i v a s de i n t e r r u m p i r o c o n t i n u a r con el p r o c e s o . Cabe a c l a r a r q u e s o l o s e detectan los e r r o r e s correspondientes a l a d e f i n i c i b n o i n v o c a c i b n de una macroinstruccibn. de t a l forma que los e r r o r e s asociados a l lenguaje mismo no s e r á n f i l t r a d o s en e s t e proceso.

Consulta Archivo Esta opcibn se u t i l i z a p a r a r e a l i z a r l a consulta de c u a l q u i e r a r c h i v o de t e x t o , especialmente los de e n t r a d a y / o salida, s i n necesidad de f i n a l i z a r la sesibn, y

r e q u i e r e solo e l nombre del a r c h i v o que se desea c o n s u l t a r . S i se e l i g e esta opcibn p o r accidente, puede abandonarse presionando la tecla <ESO.

F i n de Sesibn Con e s t a o p c i b n s e t e r m i n a con l a e jecucibn del Nacroensamblador UAMICRO. v e r s i o n 1.1.

(6)

i

P

L

L

7-

L

F

L

c

L

c

6

P

L

c

L

I-

L

F

i

A R C H I V O S

E l Macroensamblador esta formado p o r un t o t a l de 7 a r c h i v o s , a saber:

MACRO.COM A r c h i v o q u e c o n t i e n e e l p r o g r a m a en cbdigo ejecutable. Este a r c h i v o es e l q u e se invoca a l e j e c u t a r e l Hacroensamblador UAMICRO, tecleando el comando 'MACRO'.

M A C R O . P A L A r c h i v o p r i n c i p a l d e l p r o g r a m a f u e n t e . C o n t i e n e l a d e f i n i c i b n de l a s p r i n c i p a l e s e s t r u c t u r a s de d a t o s , e l p r o c e d i m i e n t o p r i n c i p a l y los procedimientos de seleccibn de opciones y de i n i c i a l i z a c i b n .

M A C R O . H L P A r c h i v o q u e c o n t i e n e e l t e x t o c o m p l e t o de ayuda a l usuario. Se t r a t a de un a r c h i v o de t e x t o c r e a d o en e l e d i t o r de Turbo Pascal.

MAC-ENTR.TXT Programa de demostracibn en ensamblador que s e e l i g e p o r d e f a u l t e n l a o p c i b n de d e f i n i c i b n de a r c h i v o s , cuando no se cuenta con un afChiV0 f u e n t e especffico.

MAC-UTI.PAS A r c h i v o q u e c o n t i e n e l a s u t i l e r l a s q u e u t i l i z a el p r o g r a m a d u r a n t e su ejecucibn, como son los procedimientos: Monitor, Sonido, L i m p i a , T i t u l o , Cuadro, Warco, Menu-Opciones y ERROR.

(7)

L .

5

i

r-

yi

(r

L

MAC -EM X .PA X A r c h i v o de Mac r oensa m bla d o. Con t i e ne .todos los p r o c e d i m i e n t o s necesarios p a r a e j e c u t a r

e l macroensamblador una vez q u e se h a n

d e f i n i d o l o s a r c h i v o s de e n t r a d a y salida de datos. A q u í se e n c u e n t r a n l o s p r o c e d i - mientos q u e podemos c o n s i d e r a r como 10s p r i n c i p a l e s y s o n l o s s i g u i e n t e s : Obten Codigo, Sust-Arg, Sust-Etiq, O b t e n A r g , ObtenrLinea, Act-Etiq, Expande, Def E t i q , Define, Busca y Procesa-Linea.

MAC-@PC.PAX A r c h i v o de opciones. C o n t i e n e los p r o c e d i - mientos q u e son llamados d i r e c t a m e n t e del programa p r i n c i p a l a l e l e g i r alguna de l a s o p c i o n e s d e l menu p r i n c i p a l . D i c h o s procedimientos son : Ayuda, D e f i n e A r c h i v o s ,

Macroensamblador, Consulta y Fin-Sesion.

(8)

P

i

c

L

c

L

P

L

c

Este p r o y e c t o se d e s a r r o l l b en una computadora PC compatible con IBU, de modo que p a r a su instalacibn se r e q u i e r e de un e q u i p o con esas c a r a c t e r i s t i c a s .

P a r a e j e c u t a r e l m a c r o e n s a m b l a d o r e s n e c e s a r i o asegurarse de que se encuentren cargados en el d r i v e p o r d e f a u l t los a r c h i v o s : MAGRO.COM, MACRO.HLP y UAC-ENTR.TXT.

Una vez q u e se h a n c a r g a d o d i c h o s a r c n i v o s , p a r a e j e c u t a r e l p a q u e t e solo es necesario t e c l e a r el comando 'HACRO' y a p a r e c e en l a p a n t a l l a el mentz p r i n c i p a l con l a s opciones d e s c r i t a s anteriormente.

Si se desea e j e c u t a r e l macroensamblado s o b r e un

a r c h i v o e s p e c i f i c o se deben s e g u i r los s i g u i e n t e s pasos:

- E n t r a r a la opcibn de D e f i n i c i b n de a r c h i v o s y t e c l e a r

e l nombre del a r c h i v o deseado (con su extension), como a r c h i v o de e n t r a d a , incluyendo el r e c o r r i d o s i no esta en el d r i v e y d i r e c t o r i o p o r d e f a u l t .

-

Dentro de la misma opcibn i n d i c a r el a r c h i v o de s a l i d a deseado tecleando su nombre, extensibn y r e c o r r i d o ( s i e s n e c e s a r i o ) , s i no se desea e l a r c h i v o p o r d e f a u l t NACSALI.TXT como a r c h i v o de salida.

-

S i se desea a b a n d o n a r la opcibn en c u a l q u i e r a de las dos preguntas debe o p r i m i r s e la tecla <ESC>.

-

Una vez d e f i n i d o s los a r c h i v o s f u e n t e y destino, e l e g i r l a o p c i b n d e Macroensamblador. S i d u r a n t e e l pr'ocesamiento es detectado un e r r o r , debe p r e s i o n a r s e la t e c l a <ESO p a r a abandonar o <ENTER> s i se desea c o n t i n u a r el proceso. L a s c o r r e c c i o n e s de e r r o r e s e n c o n t r a d o s a t i e m p o d e macroensamblado d e b e n e f e c t u a r s e con un e d i t o r compatible con e l u t i l i z a d o .

(9)

- La consulta del a r c h i v o de s a l i d a puede e f e c t u a r s e con

8 1 u n e d i t o r de t e x t o s , con comandos de HS-DOS, o s i n

abandonar a l paquete con la opcibn de Consulta A r c h i v o . S i se e l i g e esto liltimo debe p r o p o r c i o n a r s e e l nombre

r-

del a r c h i v o que se desea consultar de la misma manera

L que se i n d i c o en l a opcibn de D e f i n i c i b n de Archivos.

T.

L.

l

-L

b

I

L

T

I

L

c

L

L

- E l a r c h i v o de e n t r a d a debe s e r de t e x t o y puede s e r

e d i t a d o con c u a l q u i e r e d i t o r que nos permita esto.

-

Se p e r m i t e e d i t a r e l a r c h i v o con s a n g r i a p a r a i d e n t i f i c a r mas facilmente las e t i q u e t a s y HACROS.

-

Los c o m e n t a r i o s d e n t r o del a r c h i v o se i n d i c a n con un

sj-gno de ';' como p r i m e r p a l a b r a de la linea. No s e r a n

reproducidos en el a r c h i v o de salida.

-

N o se a c e p t a n macrodef i n i c i o n e s r e c u r s i v a s . S i n

embargo, se puede r e f e r e n c i a r a una MACRO d e f i n i d a anteriormente, d e n t r o del cuerpo de o t r a HACRO.

-

Cada v e z que se desee macroensamblar un a r c h i v o dado, es necesario e l e g i r la opcibn de d e f i n i c i b n de a r c h i v o s y a que a l t e r m i n a r e l procesamiento de un a r c h i v o , el programa c i e r r a todos los a r c h i v o s ocupados, incluyendo l o s a r c h i v o s f u e n t e y d e s t i n o , p a r a p r o t e g e r l a i n f o r m a c i b n .

(10)

PRINCIPALES ESTRWCTWRAS DE DATC)S

I-

L

!-

i

F

L

c

r

c

L

b

i

c

L

P a r a el d e s a r r o l l o de e s t e p r o y e c t o se implement6 un a m b i e n t e de v a r i a b l e s d i v i d i d o p r á c t i c a m e n t e en dos g r u p o s p r i n c i p a l e s que son :

V a r i a b l e s de E s t e g r u p o c o n t i e n e t o d a s a q u e l l a s u t i l e r l a s v a r i a b l e s que son u t i l i z a d a s imicamente

p a r a manejo de pantallas. Es d e c i r , las q u e s e u t i l i z a n p a r a m o s t r a r e l funcionamiento del sistema de una manera s e n c i l l a y f a c i l de e n t e n d e r p a r a e l u s u a r i o del mismo.

Las v a r i a b l e s que se incluyen en e s t e g r u p o son : n u m o p c , f o n d o , t e x t o ,

fon-inv, tex-inv, t e x e r r y opcion.

V a r i a b l e s de Engloban a todas l a s v a r i a b l e s que son procesamiento u t i l i z a d a s a tiempo de ejecucibn d u r a n t e

el macroensamblado.

P a r a algunas d e las v a r i a b l e s de e s t e g r u p o se d e f i n i e r o n t i p o s de d a t o s e s p e c i a l e s q u e s e d e s c r i b i r a n p o s t e r i o r m e n t e .

L a s p r i n c i p a l e s v a r i a b l e s involucradas a q u i son : l i n e a , codigo, e x p a n s i o n ,

abandona, a r c h e n t , a r c h s a l , H A C R O S , U L T I M O , ma c a c t u a 1. r e n , c o l ,

U A C C O N T EN, MAC P A R A H I

MAC

-

E T I Q ’ U L T E T I Q , MAC A a p c o n t e n , R G U M I s i g l i b r e .

A 1 nuacibn s e muestra la d e s c r i p c i b n de cada v a r i a b l e i n c l u y e n d o su t i p o , los v a l o r e s que puede tomar, los procedimientos que la u t i l i z a n , e t c e t e r a .

(11)

TlPOS ESPECIALES

T-

L

Se d e f i n i b p r e v i a m e n t e un t i p o CADENA = STRING[BO].

SI? d e f i n i b el t i p o APUN como un r e g i s t r o q u e contiene l a s i g u i e n t e informacibn :

n o m b r e

-

n o m b r e q u e i d e n t i f i c a a l a m a c r o i n s t r u c c i b n ; de t i p o CADENA.

i n i , f i n - apuntadores a l a s localidades donde i n i c i a y t e r m i n a el c u e r p o de l a RACRO e n e l a r r e g l o RACCONTEN; de t i p o entero.

n u m a r g

-

a q u í se guarda el nUmero de argumentos que c o n t i e n e l a RACRO; t i p o entero.

num

-

e t i

-

almacena e l nUmero de e t i q u e t a s q u e se d e t e c t a r o n d e n t r o del cuerpo de l a macro d e f i n i c i b n ; t i p o e n t e r o .

s i g m a c - a p u n t a d o r a l r e g i s t r o q u e c o n t i e n e l a

i n f o r m a c i b n d e l a s i g u i e n t e m a c r o def i n i c i b n encontrada; t i p o APUN.

Por U l t i m o tenemos e l t i p o TIP-ET como un r e g i s t r o que

contiene l a s i g u i e n t e informacíbn :

n o m e t i - nombre que i d e n t i f i c a a la e t i q u e t a ; es de

t i p o CADENA.

s i g

-

e t i

-

campo q u e i n d i c a el c o n s e c u t i v o a s e g u i r p a r a e v i t a r l a d u p l i c a c i b n d e e t i q u e t a s ; de t i p o CADENA.

usada

-

i n d i c a s i l a e t i q u e t a a c t u a l h a s i d o r e f e r e n c i a d a , con el f i n de a c t u a l i z a r l a s i e s e es e l caso; t i p o booleano.

l i g e t i - a p u n t a d o r a l r e g i s t r o q u e c o n t i e n e l a

i n f o r m a c i b n de l a s i g u i e n t e e t i q u e t a e n c o n t r a d a ; t i p o T I P E T .

h

L

(12)

I í n e a

I

s

e-- I

i

-r-

L

s

i

c

TIPO : CADENA.

POSIBLES VALORES :

Si se está r e a l i z a n d o una Macro expansibn, l a v a r i a b l e l i n e a t o m a s u v a l o r d e l e s p a c i o de memoria c o r r e s p o n d i e n t e a l a m a c r o d e f i n i c i ú n a s o c i a d a ; es decir, del contenido de MAC-CONTEN p a r a l a MACRO que se

este invocando.

En o t r o caso e l contenido de l i n e a corresponde a l a l i n e a a c t u a l del a r c h i v o de e n t r a d a .

PROCEDIHIEHTOS QUE LA UTILIZAH :

O b t e n -Codigo. O b t e n --A r g

,

O b t e n - L i n e a , E x p a n d e , D e f i n e , P r o c e s a - L i n e a y

Hacroensamblador.

S u s t A r g , S u s t E t i q ,

(13)

P-

i

i

F

,

L

r-

1

L

c

L

L

L

c

....

b

L

F

TIPO : CADENA.

POSIBLES VALORES :

c o d i g o toma s u v a l o r de l a l i n e a q u e se e n c u e n t r a actualmente en procesamiento. Nos i n d i c a l a p r i m e r a p a l a b r a encontrada, a p a r t i r de l a columna actual, que sf? e n c u e n t r e e n t r e dos espacios en blanco. Se u t i l i z a p a r a d e t e c t a r l a s p a l a b r a s claves como 'MACRO', WEND', 'END', y los a r g u m e n t o s y e t i q u e t a s d e c a d a

macrodef i n i c i b n .

PROCEDIMIEHTOS QUE LA UTILIZAH :

O b t e n C o d i g o, S u s t -E t i q,

Def-Etiq, Define, Busca S u s t A r y g

,

Procesa-Linea. O b t e n -Li nea,

i

(14)

expansion

TIPO : BOOLEANO.

POSIBLES VALORES :

Esta v a r i a b l e puede tomar solo dos valores : CIERTO o

FALSO. Solo toma el valor CIERTO cuando se ha invocado

a una HACRO existente d u r a n t e e l proceso y el macro ensamblador se encuentra expandiendo d i c h a AACRO. Una vez q u e se ha t e r m i n a d o de e x p a n d i r l a HACRO, l a v a r i a b l e expansion vuelve a tomar el v a l o r FALSO.

PROCEDIMIENTOS QUE LA UTILIZAN :

S i r s t A r g , Obten-Linea, Expande y Define

(15)

e..

c

abandona

L

L

b.'

L

F

i

-

L

r

L

s-

L

h

TIPO : BOOLEANO.

POSIBLES VALORES :

Esta v a r i a b l e puede tomar solo dos valores : CIERTO o

FALSO. Su v a l o r normal es FALSO, y toma el v a l o r de CIERTO cuando se ha detectado un e r r o r , ya sea a tiempo de ejecucibn del macroensamblador ( en cuyo caso e l u s u a r i o decide si se abandona o no e l proceso 1, o s i d u r a n t e la d e f i n i c i b n de a r c h i v o s se presentb alguna anomalia.

PROCEDIUIENTOS QUE LA UTILIZAN :

E R R O R , Act-Etiq, Expande, Def ine-Archivos, Consulta y

Macroensamblador.

(16)

a-

-

c.

L

L

c

L

a r c h e n t y arch-sal

TIPO : T E X T .

POSIBLES VALORES :

E s t a s v a r i a b l e s toman su v a l o r cuando se e l i g e l a opcibn de d e f i n i c i b n de a r c h i v o s en el menil p r i n c i p a l y

se proporcionan correctamente los a r c h i v o s de e n t r a d a y s a l i d a . No s u f r e n modificacibn d u r a n t e el procesamiento y se u t i l i z a n p a r a d i r e c c i o n a r l a e n t r a d a y s a l i d a de datos.

PROCEDIMIERTOS QUE LA UTILIZAN :

Obten-Linea, D e f i n e , D e f i n e A r c h i v o s y Hacroensamblador.

(17)

,”...

c

I”

I.

c

L

c

L

c

i

MACROS, ULTIMO y mac-actual

TIPO : APUN.

POSIBLES VALORES :

Se? t r a t a de l o s a p u n t a d o r e s a la l i s t a l i g a d a q u e contiene la inforrnacibn d e s c r i p t i v a de cada MACRO. La v a r i a b l e MACROS apunta a l i n i c i o de la l i s t a ; ULTIMO a p u n t a a l Ultimo elemento de l a l i s t a , y m a c a c t u a l apunta a l nodo correspondiente a la MACRO que se esta expandiendo.

PROCEDIMIEATOS QUE LA UTILIZAN :

Obten-Linea, Expande, D e f i n e y Busca.

F

L

F

L

(18)

R"

L.

r-

L

---

TIPO : ARREGLO DE CADENAS.

POSIBLES VALORES ;

E s t a a r r e g l o esta d e s t i n a d o a c o n t e n e r t o d a l a inforrnacibn correspondiente a las rnacrodef iniciones. Es d e c i r , e l c u e r p o de i n s t r u c c i o n e s de cada MACRO se guarda en e s t e a r r e g l o l i n e a p o r l i n e a a medida q u e se v a n l e y e n d o d e l a r c h i v o f u e n t e . P a r a e x t r a e r l a i n f o r m a c i b n de MACCONTER, se debe r e c u r r i r a los a p u n t a d o r e s c o r r e s p o n d i e n t e s a l MACRO en la l i s t a ligada mencionada anteriormente.

PROCEDIMIENTOS QUE LA UTILIZAN :

Obten-Linea y Define.

L

(19)

ñ”

L

F

L

TIPO : ARREGLO DE CADENAS.

POSIBLES VALORES :

E s t o s a r r e g l o s se u t i l i z a n t a n t o d u r a n t e l a macrodefinicibn como en l a macroexpansibn. Su l i m i t e es de 10 localidades ya que se asumen MACROS con un numero d e argumentos menor o i g u a l a 10. HAC-ARGUH es u t i l i z a d o d u r a n t e l a d e f i n i c i b n de MACROS y guarda los argumentos p a r a s u s t i t u i r l o s p o r notacibn posicional en el a r r e g l o MACCONTEN. y HACPARAH se usa en expansibn d e MACROS almacenando los parametros con q u e se esta i n v o c a n d o a l a MACRO, p a r a i n c l u i r l o s d u r a n t e l a e x p a n s i b n .

PROCEDIHIEHTOS QUE LA UTILIZAN :

Obten-Arg y S u s t A r g .

L

F

L

(20)

r-

b-

!-

u-

c

c

c

c

r-

L

f;

L

r-

TIPO : T I P E T .

POSIBLES VALORES :

Se t r a t a de los a p u n t a d o r e s a la l i s t a ligada q u e contiene l a i n f orrnacibn asociada a cada e t i q u e t a . La v a r i a b l e HAC-ETIQ a p u n t a al i n i c i o d e l a l i s t a , y ULT-ETIQ a p u n t a a l ultimo elemento de l a l i s t a .

PROCEDIHIENTOS QUE LA UTILIZAN :

Siist-Etiq, A c t E t i q y D e f E t i q .

(21)

ap

-

conten y síg-libre

TIPO : ENTERO.

POSIBLES VALORES :

Apuntadores al a r r e g l o MACCONTEN. Estan limitados p o r el tamaiio del a r r e g l o . a p c o n t e n se u t i l i z a d u r a n t e l a expansibn de MACROS y a p u n t a a l a l i n e a a c t u a l de l a MACRO que se esta expandiendo; s i g l i b r e a p u n t a siempre

a l a s i g u i e n t e localidad v a c f a d e n t r o del a r r e g l o .

PROCEDIUIENTOS QUE LA UTILIZAB :

Obten-Linea, Expande y Define.

c

(22)

col y rem

TIPO : ENTERO.

POSIBLES VALORES :

V a r i a b l e s que nos i n d i c a n siempre l a l i n e a a c t u a l y l a posicibn q u e se t i e n e d e n t r o de la mismo d u r a n t e el procesamiento del a r c h i v o f u e n t e . ren nos i n d i c a l a l i n e a del a r c h i v o de e n t r a d a que se esta procesando y col l a posicibn d e n t r o de l a l i n e a misma.

PROCEDIHIERTOS QUE LA UTILIZAN :

0.b t e n C o d i g o,

Obten

-

L i n e a y Procesa-Linea. S u s t A

r

g

,

S u s t E t i q, O b t e n --A r g

,

L

F

L

r

L

r

L

(23)

c

c

L

L

r

iL

n-

e

PROCEDIMIENTOS P R I N C I P A L E S

Los procedimientos que u t i l i z a e l p r o y e c t o pueden s e r c l a s i f i c a d o s en dos grupos basicamente :

Procedimientos A q u i se i n c l u y e n t o d o s l o s q u e s e de u t i l e r i a . u t i l i z a n p a r a l a p r e s e n t a c i b n d e l

s i s t e m a y l o s q u e n o s p e r m i t e n u t i l i z a r l o , como d e f i n i r o c o n s u l t a r a r c h i v o s , p o r ejemplo.

Procedimientos

de procesamiento. Son l o s procedimientos p r i n c i p a l e s que nos permiten e f e c t u a r el Procesamiento de un a r c h i v o , d e t e c t a n d o p o s i b l e s e r r o r e s en el mismo.

Los p r o c e d i m i e n t o s p r i n c i p a l e s son :

O b t e n C o d i g o, S u s t E t i q , O b t e n A rg , A c t E t i 9 , Expande. D e f E t i q , D e f i n e , Busca y

Procesa-Linea.

S u s t A r g

,

O b t en-Li n e a ,

A c o n t i n u a c i b n se muestra l a d e s c r i p c i b n de cada p r o c e d i m i e n t o , i n d i c a n d o l a s v a r i a b l e s mas r e l e v a n t e s que son a c t u a l i z a d a s en el mismo.

(24)

ObtenCodigo

Obtiene el cbdig0 o p e r a t i v o a c t u a l p a r a poder tomar una d e c i s i o n s o b r e e l f l u j o d e l a i n f o r m a c i b n d u r a n t e e l procesamiento del a r c h i v o de entrada.

Encuentra el p r i m e r conjunto de caracteres, a p a r t i r de la columna actual, q u e se encuentre delimitado p o r dos espacios en blanco, dos comas o c u l q u i e r combinacib doble de estos, t r a b a j a n d o siempre sobre la que se considera como l i n e a actual.

Es invocado practicamente p o r todos los procedimientos

y se u t i l i z a p r i n c i p a l m e n t e p a r a d e t e c t a r palabras clave del macroensamblador (como 'MACRO'. 'MEND', etc.), a s i como p a r a

e n c o n t r a r los argumentos o parametros de las macroinstrucc.iones durante la d e f i n i c i b n o b i e n en una macro llamada.

Actualiza la v a r i a b l e global col, que corresponde a la coordenada de columna d e n t r o de la linea actual.

(25)

I L

c

[I

c

Se u t i l i z a t a n t o en la d e f i n i c i b n de macroinstrucciones como durante la expansibn de MACROS.

En l a d e f i n i c i b n se usa e s t e p r o c e d i m i e n t o p a r a s u s t i t u i r d e n t r o del c u e r p o d e l MACRO l a o c u r r e n c i a de l o s argumentos del mismo p o r notacibn posicional p a r a poder e f e c t u a r e l paso de parametros posteriormente.

Durante la expansibn de MACROS se toma la l i n e a a c t u a l y se busca en ella la o c u r r e n c i a de algiin parametro de la MACRO q u e se e n c u e n t r a e n expansibn, r e e m p l a z a n d o l a n o t a c i b n posicional con los parametros que son enviados.

Actualiza la v a r i a b l e l i n e a ya que en c u a l q u i e r caso e f e c t i i a sus.titucibn de palabras d e n t r o de ella. Tambien t r a b a j a con los v e c t o r e s MAC-ARGUM y MAC-PARAM, p a r a g u a r d a r en los mismos los p a r a m e t r o s de la m a c r o i n s t r u c c i b n d u r a n t e l a def i n i c i b n o la expansibn, respectivamente.

(26)

y-

".- Suit-Etip

i

h

L

T"

L

c

P

L

F

L

S e u t i l i z a d u r a n t e la expansibn de MACROS. Se toma la l i n e a actual. y se busca en ella la o c u r r e n c i a de alglin parámetro de l a MACRO q u e se e n c u e n t r a en expansibn, reemplazando la notacibn posicional con los parámetros que son enviados.

Actualiza la v a r i a b l e l i n e a ya q u e en c u a l q u i e r caso efectlia s u s t i t u c i b n de p a l a b r a s d e n t r o de ella. Tambien t r a b a j a con los apuntadores a la l i s t a de e t i q u e t a s MAC-ETIQ y U L T E T I Q , p a r a l o c a l i z a r en d i c h a l i s t a s i en la l i n e a actual e x i s t e alguna e t i q u e t a . S i este es el caso, se efectiia la sustitucibn y una vez que se h a concluido la expansibn, se a c t u a l i z a el consecutivo de cada e t i q u e t a contenida d e n t r o de la HACRO expandida.

P

L

(27)

L

c

L

i

Obten-Arg

Se u t i l i z a t a n t o en l a d e f i n i c i b n de macroinstrucciones como d u r a n t e l a expansibn de MACROS.

En l a d e f i n i c i b n se usa e s t e procedimiento p a r a o b t e n e r l o s argumentos de l a KACRO a c t u a l p a r a despues e f e c t u a r una s u s t i t u c i b n de los mismos p o r n o t a c i b n p o s i c i o n a l d e n t r o d e l c u e r p o del MACRO.

Durante l a expansibn de MACROS se toma la l i n e a actual, que corresponde a una macrollamada, p a r a o b t e n e r los parametros que se l e están pasando y guardarlos en e l a r r e g l o HACPARAM p a r a despues e f e c t u a r l a s u s t i t u c i b n de parametros.

A c t u a l i z a l a s v a r i a b l e s col y HAC-PARAH, p a r a g u a r d a r en los e s t a iiltima los parametros de la macroinstruccibn d u r a n t e l a expansibn de l a MACRO.

i !

i

F-

..

(28)

F

L

!-

L

F

L

w-

L

P

L

Obten-Linea

Obtiene la s i g u i e n t e l i n e a de t r a b a j o dependiendo del v a l o r de la v a r i a b l e expansion.

Si se esta efectuando una

macro

expansibn, la l i n e a que

se tomará como l a s i g u i e n t e p r o v i e n e del a r r e g l o HAC-CONTEI, especificamente de la casilla apuntada p o r a p c o n t e n . En este caso, se t r a t a de una l i n e a q u e corresponde a l cuerpo de la macroinstruccibn que se esta expandiendo. La v a r i a b l e a p c o n t e n se incrementa despues de l e e r l a linea.

S i no se t r a t a d e una expansibn, se lee l a l i n e a s i g u i e n t e del a r c h i v o de e n t r a d a y se incrementa la v a r i a b l e r e n que contiene el numero de renglbn del a r c h i v o de e n t r a d a que se e s t a procesando.

Este p r o c e d i m i e n t o d e c i d e tambien s i es n e c e s a r i o e f e c t u a r alguna s u s t i t u c i b n de argumentos o e t i q u e t a s s i se esta efectuando una expansibn y la HACRO a c t u a l t i e n e levantadas las b a n d e r a s c o r r e s p o n d i e n t e s , e n c u y o c a s o l l a m a r a a l o s procedimientos S u s t A r g y Sust-Etiq.

actual. Tambien i n i c i a l i z a la v a r i a b l e col en uno p a r a la :linea

L

P

L

c

-

m-

(29)

Act-Etíq

L

F

L

b

L

n . "

L

Es u t i l i z a d o iinicamente p o r e l procedimiento Expande a l

f i n a l i z a r la expansibn de una MACRO. S i la macroinstruccibn que f u e expandi.da i n c l u i a e t i q u e t a s , se invoca e e s t e procedimiento para actualxzar e l consecutivo de las e t i q u e t a s que f u e r o n usadas durante la expansibn, p a r a e v i t a r que se d u p l i q u e una e t i q u e t a a l expander de nuevo una macroinstruccibn que ya se utilizb.

Revisa la l i s t a de e t i q u e t a s apuntada p o r las v a r i a b l e s MACETIQ y U L T E T I Q , y a c t u a l i z a unicamente aquellas que tengan levantada la. bandera de usada.

(30)

Expande

m-

i

c

L

P-

L

6

L

T

L

Procedimiento u t i l i z a d o p a r a la expansibn de MACROS. La

manera en que esta implementado e s t e procedimiento, aunado a l de P r o c e s a L i n e a , permite que d e n t r o del cuerpo de una MACRO sea p o s i b l e llamar a o t r a macroinstruccibn d e f i n i d a anteriormente, r e p i t i e n d o coste proceso cuantas veces sea necesario.

Enciende l a b a n d e r a d e e x p a n s i o n a l i n i c i a r i a macroexpansíbn y la apaga a l t e r m i n a r . Tambien detecta e r r o r e s en e l paso de parametros.

Ll.ama a los p r o c e d i m i e n t o s O b t e n A r g , Obten-Linea, Procesa-Linea y A c t E t i q .

F"

L

L

(31)

L

D e l -Etiq

c

L

Se u t i l i z a durante la d e f i n i c i b n de MACROS cada v e z que se encuentra alguna e t i q u e t a d e n t r o d e l cuerpo de ].a F~ACRO. ES

llamado e n cada l i n e a d e l a r c h i v o de e n t r a d a que no sea un comentario e i d e n t i f i c a una e t i q u e t a d e n t r o de la l i n e a s i el tiltimo c a r a c t e r del p r i m e r cbdigo o p e r a t i v o de la misma es el s i g n o d e

':'.

Si e s t o o c u r r e anade a la l i s t a de e t i q u e t a s la actual,

v e r i f i c a n d o previamente que no se haya d e f i n i d o con a n t e r i o r i d a d .

A c t u a l i z a los a p u n t a d o r e s a l a l i s t a de e t i q u e t a s MACETIQ y U L T E T I Q .

(32)

Define

c

L

?-

yi

F

L

E s t e procedimiento es llamado p o r el de Procesa-Linea cuando se ha detectado una nueva macrodefinicibn.

S u o b j e t i v o es g u a r d a r la informacibn de esa MACRO en l a s e s t r u c t u r a s de datos correspondientes. Asl, guarda e l cuerpo de i n s t r u c c i o n e s de l a MACRO en el a r r e g l o MACCONTEN y en l a l i s t a apuntada p o r las variables MACROS y ULTIHO guarda e l nombre del MACRO, s u numero de argumentos, e l de e t i q u e t a s y los a p u n t a d o r e s a l i n i c i o y f i n de l a s localidades de HAC-COKTEH donde esta contenido e l cuerpo del MACRO.

Durante l a d e f i n i c i b n , s i l a MACRO t i e n e argumentos, v a reemplazando estos p o r notacibn posicional (llamando a S u s t A r g ) a medida q u e se l e e el cuerpo d e instrucciones.

Llama a los p r o c e d i m i e n t o s O b t e n A r g . O b t e n L i n e a , ObtenCodigu. D e f E t i q y S u s t p r g .

L

r

L

(33)

L

I-

L

F

c

L

c

L

r

L

Busca

Este procedimiento es llamado solo p o r Procesa-Linea y se u t i l i z a linicamente p a r a v e r i f i c a r s i una MACRO (sea p a r a d e f i n i c i b n o expansibn) ya h a sido d e f i n i d a . Regresa el r e s u l t a d o de l a blisqueda en u n a v a r i a b l e Booleana y s i f u e exitosa, r e g r e s a además el apuntador m a c a c t u a l a la MACRO deseada.

(34)

F"

Y.

F'

1.

F-

L.

c

L

P

i

c

L_

7-

i.

r-

iL

F"

L

m-

L

Procesa-Linea

Este procedimiento es basico p a r a e l macroensamblador ya q u e en él se toman l a s d e c i s i o n e s s o b r e el f l u j o de l a i n f ormacibn..

Es llamado cada vez que se ha o b t e n i d o una nueva linea, ya sea del a:rchivo de e n t r a d a o del a r r e g l o MAC-CONTEN.

Dependiendo del primer cbdigo o p e r a t i v o de la linea, se tomara una de las s i g u i e n t e s acciones:

-

s i e l cbdigo es 'MACRO' se t r a t a de una d e f i n i c i b n y debe v e r i f i c a r s e que la MACRO tenga un nombre. S i e l nombre e x i s t e , entonces se debe v e r i f i c a r que no se haya definido previamente una MACRO con ese nombre. S i esto no o c u r r e entonces llamar a Define.

-

s i e l cbdigo no es 'MACRO' puede t r a t a r s e de una macro llamada en cuyo caso debe e x i s t i r una MACRO defi.nida p r e v i a m e n t e con un nombre q u e correponde a i cbdigo o p e r a t i v o . Si e s t o no o c u r r e , entonces se asume que no

es: una macrollamada Sino una i n s t r u c c i b n sencilla que debe s e r e s c r i t a t a l cual es en el a r c h i v o de salida.

Llama a los pprocedimientos O b t e n C o d i g o , Busca, D e f i n e y Expande, y a c t u a l i z a las v a r i a b l e s l i n e a y col.

p-

i

P

1

(35)

.

1 .

T u r b o P a s c a l ( V e r s i b n 3.0)

Rt!ference Manual

BORLAND INTERNATIONAL Inc.

(36)

I”

b . .

L

S e a n e x a n a e s t e manual el l i s t a d o de los a r c h i v o s f u e n t e q u e contiene el paquete, q u e son:

-

HAC-UTI.PAS

- M A C E N S . P A S

- HAC-0PC.PAS

-

WACRO.PAS

r-

c

Asimismo s e a n e x a n l o s d i a g r a m a s de f l u j o de datos p r i n c i p a l e s .

(37)

C MAC-UTI

.

PFIS 3

C FIRCHIVO DE UTILERICIC 1

PROCEDURE Moni t:or ;

BEG IN

C l r C c r ; G o t o x y ( l O , 1 3 ) ;

W r i t e ( ’ E s t a usted usando un monitor de c o l o r S/N ? ’ ) ;

Repeat

U n t i l opciori IN C ’ C ’ , ‘ N ’ l ; I f opcion = ’ S ’ t.hen

R e a d ( K b d , o p c i o n ) ; opcion := UpCaseíopcion)

BEG I N

.fondo := 1 ; t,exto := 15;

f on._i riv : = 7; tex.-inv := 1 ; tex-.err := 4

END else? BEGIN

.Fondo := O ; t.exto : = 15; f on.-i nv : = 7 ; tex_.inv := O ;

tex-.err := C) END

END g

PROCEDLJRE Coni do;

BEGIN

Soiund ( 5 0 0 ) ; Del ay ( 100) ;

Nnwxind END5

PROCEDLJRE L i mpi a í x 1 , y 1 , x 2 , y 2 , c o l o r : INTEGER) ; BEGIN

TextRacI:groi.ind ( c o l o r ) ;

W i n d o w ( x l , y l , x 2 , y 2 ) ;

C1 r C c r END;

PKOCEDURE T i t u l o ;

BEGIN

L . i m p i a ( 3 , 2 , 7 8 , 4 , 7 ) : T e x t c o l o r ( t e x - i n v ) ;

Got oxy (20,l ) ; Writei’UNIVERSIDAD FIUTONOMA METROP0LITANA’)g

Gotoxy(20,2) ; W r i t e ( ’ P r o y e c t o de I n g e n i e r i a E l e c t r o n i c a 2 ’ ) : Gotoxy(20.3) ; Write(’Macroensamb1ador UAMICRO V e r s i o n 1 . 1 ’ ) END j

PROCEDURE Ciradro ( x l , y l , x 2 . y 2 : INTEGER):

VFIR i : INTEGER;

BEGIN

G o t o x y ( x 1 , y l ) ; W r i t e 0 ,-’)i

F o r i := ( x l

+

1 ) t o ( x 2

-

1 ) do

W r i t e i ’ ,

) 3

F o r i : = (y1 + 1 ) t o <y2

-

1 ) do

W r i t e ( ’ - - ’ ;

(38)

END ;

G o t o x , y ( : i i . y : ? ? ; W r j t e ( ’ L ’ : , ;

For i := (x:l + 1 : l o ( x 2 . 1 ) do

W r i t e i ,’J .* !

w r i t e ( ’ ) ;

END;

PROCEDURE M a r c o ; VAR i : INTEGER; B E G I N

T e x t C o l o r ( t e ? x t . o ) ;

L i m p i a í l , l , t 3 0 , 2 5 , 1 ) ; C u a d r o ( 2 , f 79,25) j

G o t o x y (2,5) I;

---..ku!q

5

f--

END;

PROCEDURE M e n i r _ O p c i ones;

BEG I N T i t u l o;

T e x t C o l or ( t n x t o ) j

l..impia(3,6,78,24,1); C u a d r o ( 2 , 5 , 2 1 15) ;

C u a d r o (22,1% 75,19) ;

T e x t , C o l o r ( t e ? x - e r r l j T e x t . B a t t k g r o u n d ( f o n - . i n v ) ;

G o t o x y ( 7 , 5 ) j W r i t e (

OPCIONES

) ;

T e x t C o l o r ( t . e x t o ) j

G o t o x y ( 4 , 9 ) j

G o t o x y ( 4 , l O I ’ ;

G o t . o x y ( 4 , l l ) ;

G o t o x y (4,1218 ; W r i t e ( ’ F i n de sesion.’)

T e x t R a c k g r o u n d ( f o n d o ) j

G o t o x y ( 4 , B ) J W r i t e ( ? A y u d a ’ ) ;

W r i t e (

D e f i n i r a r c h i vos’ ) ;

W r i t e (

M a c r o e n s a m b l ador’ 1 ;

W r i t e (

C n n s c i l t a A r c h i vo’ ) ;

END 8

PROCEDURE ERROR ( f r a s e : CADENA); VAR t e c l a : CHAR;

B E G I N Sonido;

T e x t C o l or ( t e x - e r r i j

W r i t e l n i’ ’ % l i n e a ) ;

W r i t e l n í ‘ ERHOR : ’ , f r a s e ) ;

W r i . t e ( ’ O p r i m a <ENTER> p a r a c o n t . i n u a r o CESC> p a r a abandonar

...

’ ) ;

R e p e a t

l...i m p i a (3,2,78,4,7) j

R e a d ( K b d , t . e c l a ) ; If Keypressed then

If NOT ( O R D i t e c l a ) I N C13,271) t h e n Sonido R e a d ( K b d , t . e c l a i ;

U n t i l O R D c t e c l a ) I N CJ.3,273; If O R D ( t e c 1 a ) = 27 then

abandona P = TRUE; T i t.ul o;

Te,: t C o l o r ( t . e x t o ) ;

T e x t B a c k g r o u n d (fondo) ;

(39)

I MRC_ENC.PAS 3

<

ARCHIVO DE MñCROENSAMBLADO >.

PROCEDURE Cibteri._Codi go;

BEG IN

codlgo : = " i

While (col i=LENGTHilinea)) AND ilineaCcol1 I N C ' ' , ' , ' I ) do

While (col ,(:= LENGTH(1inea)) AND (NOT (lineñCcol1 I N C ' '-'*'I)) do BEG I N

col :-= col + 1;

codiqo

-

:= codiao

-

+

COPY(linea,col,l);

col := col

+

1

END END;

PROCEDURE Sust -Ar g j

VAR num : INTEGER;

REG I N

num := O; col :- 1 ;

While col LENGTH(linea1 do

REGIN

O b t en-Cod i go;

I f expansion FIND (codi goC 11

REG IN

col := col.

-

2;

DELETE(linea.col.2): nurn := ORD(c~digol21)

INRERT(MAC..PARAMCnuml, linea,col) ;

col : = col + LENGTH (MAC-ARGUMCnuml) END

I f NOT expansion then BEGIN

el 5e

niinn := 1 ;

While (num

<=

MFIX-ARGUM) AND (codigo < 3 MRC-ARGUMCnuml) do num := nurn + 1 :

= ' & ' ) then

-

4s;

I f nurn <= MAX-ARGUM ihen BEG I N

r o l := col

-

LENGTH(codig0);

DELETE(linea,col ,LENGTHicodigo) ) ;

INSERT ( ' %' +CHR (4Btnum)

,

1 i nea, c o l ) ;

col :=

col

+ 2 ENü

END END

END;

PROCEDURE Sust. ..Et.i q i

VAR IJ : TIP-ET;

REG I N

e3t.a : ROOL..EfIN;

rrol := 1 ;

Whjle col a:= L.ENGTH(linea) do

REG I N

Obten-Codi go;

I f cadigoCL.ENGTH(codigo)l = ' : ' then BEG I N

DELETE (codi go, LENGTH (codi go) , 1 ) ;

(40)

Q : :: Yi>C._ETIQ;

est.+* ::: FALSE;

While ,:I;r

,<>

NIL) AND (NRT e s t a ) do

REGIN

I f (1.”.,nom,,_et.i = codigo t.hen

< : * l ! + i ? C1 :=: G!”.lig-eti

e s t a : -i ‘TRUE

END;

I f ec-tii then

DEG :N

W*., usada : = TRlJE;

CNBERT ( Q * . s i g _ e t i 1 i n e a , c o l ) ;

to]. :=

col

+ 3

END

END END;

PROCEDURE Obteri-Arg (VAH niun : INTEGER) j

C L l e n a l a t a b l a de argumentos con l o s parametros de l a l i n e a . 3

VAR arg : CADENA;

REGIN

num := O;

While col

< =

LENGTH(1inea) do

REGIN

arg := y - .

While Cecil C= LENGTH(1inea)) AND N ü T ( l i n e a C c o l 1 IN C ’ ’ , ’ , ’ I ) do

REGIN

arg := arg

+

C O P Y ( l i n e a , c o l , i ) ; col := COI

+

1

END j

I f arg

<:::.

then

REGIN

nirm : =: nium C 1 ;

I f expansion then

MAC-PARAMCnumJ : = arg e l s e Mac-ARGlJMCnumI : = arg END;

col := col + 1

END END:

PROCEDURE 0bt.en-Li nea;

REG IN

I f expansion then REGIN

l i n e a := MAC-CONTENEap-contenl; ap-coriten := ap-conten + i ; I f mac:-actual*.num_arg

>.

O then

I f mac:_actual^.ni~m_et.i I O t.hen Sust -nrg;

Sust -Et i q END

else REGIN

r e n := r e n + i ;

R e a c l l n ( a r c h - e n t , l i n e a ) END;

COI := 1 ;

(41)

FKOCFDI.IRF-- Ar:t.~..Ft.i q ;

VAR 0 : TIP-ET;

BEGIN c a r

: INTEGER;

i.? := NAC-ETIG!;

While (I-1

.:>

N I L ) AND (NOT abandona) do BEG IN

I f usada then

BEG X N

c a r :=: ORD(O^.sig..et.I.CZl); I f @ * , , s i g _ e t i C 2 1 = ’ 2 ’ then

Q ” . s i g . - e t i t Z I := ’ A ” :

c a r : = ORD ( í ? * . s i g _ e t i C 1 I ) ;

I f B ^ . s i g - e t i t l l = .‘Z’ then

e l s e W . s i g _ . e t . i 1 1 7 := CHRicar + 1 ) BEG I N

ERRORi’Demasiadas e t i q u e t a s . ’ )

ENI)

e l s e E1~’.5ig-~eti121 := CHR(car + 1 ) ; W . usada : = FALSE

END;

0 := W . l i g _ e t i END

END i

PROCEDURE Procesa-Li nea4

PROCEDURE Expande;

VAR num-par : INTEGER;

I-1 :I APUN;

BEGIN

expansion := TRUE; Obten-Arg (num-par) ;

FORWARD:

I f num-par

<:

>

mac-.actual.’. num-arg t.hen

I f NOT abandona then REI3 IN

ERRORi’Numero i n c o r r e c t o de p a r a m e t r o s ’ ) ;

Writ.eln (arch-sal

,’;

EXPRNDIENDO MACRO ’,mac_actual*.nombre); W r i te1 n (m-ch-sal,

j

ap-corit.en := mac-.actual”. i n i + 1 ; While ao conten

<

mac a c t u a l “ ‘ . f i n do

’ + I i nea) ;

.

._ BEG I N

expansion :=. TRUE; Obtrn,_.i..i nea;

13 :=: mac-actual;

nuin-.par : = ap-canten; Pr- ocesa-Li nea;

mac_actual := Q ;

ap-conten : = num-par END;

W r i t . e l n ( a r c h _ s a l , ’ ; FIN DE A c t - E t i q

END;

ex pansi on : =: FALCE END;

EXPANSION ,mac_actual^.nomhre);

PROCEDURE Def -Et i q : C A c t u a l i z a l a l i s t a de e t i q u e t a s 3

(42)

HEGKN

»ELETE(codigo,L.ENGTH(codi~o), 1 ) ;

r?:.ii.ste : = FALSE;

W h i l e ( 0

< >

N I L ) AND (NOT existe) d o

BEGIN

a

: 2 MAC.._E.T:[O;

T f O”.nom_eti = c o d i g o t h e n e x i s t e := TRUE

else 0 5:: 0 ” . l i g _ e t i

END;

I + NOT existe t.hen NE# ( O 18;

W. n o m - e t i : = e o d i go; O*. si g-eti : =

AA’ ;

O*. irsiida : = FALCE; W . l i g _ e t i : = N I L ; I f MAC-ETIO = N I L t h e n REGIN

BEG I N

NAC.-ETIR : = O; ULT_.ETIO : = O ENI)

else BEGIN

LILT-.ETIO”. l i q _ , e t i := O; ULLT-ETIR := O

EtND END

END:

PROCEDURE D e f i n e ;

‘JAR P : OPUN;

n i v e l : INTEGER;

b o l : BOOLEAN;

num : INTEGER;

REG I N

NEW ( P ) ; P.“. n o m b r e : = c o d i g o ; M A C - C O N T E N C s i g _ l i h r e l : = l i n e a ;

b o l := e x p a n s i o n ; e x p a n s i o n := FALCE; O b t e n - e r g (numb ; e x p a n s i o n := b o l ;

P.“. nurn-.arg :, = num; b o l : = FALCE;

n i v e l := 1;

1.1 m :=

ci;

W h i l e (NOT E O F i a r c h - e n t . ) ) FIND ( n i v e l

>

Ci) da P”‘. i n i : = sig-1 i b r e ;

BEG I N

s i g - l i b r e := s i g . _ l i b r e + 1; Obten-1.i n e a ;

O b t e n .-Cod i go;

I f c o d i g o

< >

” ; ’

t h e n REG I FI

I 4 c:odigoCl ... E N G T H ( c o d i g o ) l = ‘:’ t h e n BEGIN

n u m := num + 1; D e f -Et i q

END;

Su s t

-

A r g 5

NüC...CONTENCsi 9-1 i b r c l : = 1 i n e a ; I f c : o d i g o = ’MFICRO’ t h e n

n i v e l := n i v e l + 1

el se

I f c n d i g o = ’MEND’ t h e n n i v e l := n i v e l

-

1

(43)

END:

P.". nirm...et.i I:= n u m ;

P.". f i i, : =i si g - 1 i. b r e ;

s i g - l i b r e z = = s i g - l i b r e

+

1.; P-".,-iig_.mac : = N I L $

I f MTrCROC = NIL.. t.hen R E F l N

MACKOlj := P;

LIL.TIM13 : = P END

else B E G I N

UI..TU.MO*. 5 i g - . m a c : = P; U L T I M O : = P

END END:

PROCEDl.JRE Busca (VAR e s t a : BOOLEAN) ;

VA" t e m p : AfYJN; P E G I N

c5t.a : = FAL.CE;

t e m p : = m a c . . a c t u a l ;

mac-actual :, = MACROS;

While ( m a - a c t u a l

*:>

N I L ) AND ( m a c _ a c t r r a l ^ . n o m b r e

< >

c o d i g o ) do I f mac..~act.ii;il

.:>

NIL.. then

e l s e mac..ac:tiral : = t . e m p

m a c ._act t ira1 I = m a c .-ac t u a l * . 5 i g-mac ;

est.a := TRUE END;

PROCEDURE ProcE?sa-l..i nea; VAR e x i s t e : BOOLEAN;

c o l u m : INTEGER; B E G I N

O b t e n - C o d i go;

I f c o d i g o = 'MFICRO' then

B E G I N

c o l u m :=

col

-

5;

O b t . e n C o d i go; C O b t i e n e e l n o m b r e d e l macro. 3

If c o d i g o = I ' t h e n

else R E G I N

E R R O R i ' M a c r o s i n n o m b r e . ' ) D E L E T E ( 1 i nea, c o l u m , 5 ) ;

col := c o l

-

5; R u s c a i e x i s t e ) 8

I f e x i s t e t h e n

e l 5 e D E F I N E

ERROR ( e D o b l e def i n i c i o n . ' )

END END

I f codigi:)

< >

' j ' t.hen BEG I N

el se

Busca ( e x i s t e ) ; C V e r i f i c a s i se t r a t a de una m a c r o - l l a m a d a

I f e w i a t e then

e l s e W r i t e l n (arch..sai, 1 i n e a )

EXPANDE END

END;

(44)

C MAC-0PC.PAS 1)

C ARCHIVO D E OPCIONES 3

PROCEDlJRE A y u d a ; VAR a r c h : TEXT;

! i n : CiqDENFi; i : INTEGER;

L i m p i a (25,7,76,23,1) ;

T e x t C o l or ( t ex -er r 1 ;

G o t o x y (20,l) ; W r i t e ( ’ AYUDA MAXIMA ’ ) j

T c x t C o l o r ( t e x t o ) ;

L i m p i a (27,9,76,23,1) ;

n S S I G N ( a r c h , ’ M A C R O . H L P I ) ;

R E G E T C a r c h ) :;

W h i l e NOT E13FCarch) do B E G I N

B E G I N

T e x t Bac kground í f on -i nv 1 ;

i := 1;

W h i l e (NOT E O F ( a r c h ) l FiND (i

<

1 4 ) do BEG I N

R e a d 1 n ( a r c h , 1 i n ) ;

W r i te11 n ( 1 i n ) j

D e l ay í 100) ;

i s = .i

+

1

END;

R e a d END;

CLOSE ( a r c h ) END;

PROCEDURE Lee . A r c h i v o ( x , y : INTEGER; VAR n o m b r e : CADENA): VAR t e c l a : CHAR;

REG I N

n o m b r e : =

:’ i

G o t o x y ( x , y ) ; W r i t e ( ’ ’ : 1 2 ) ; G o t o x y ( x , y ) 2 R e a d ( K b d t e c l a ) j

If ( O R D ( t e c 1 a ) = 27) AND (NOT K e y p r e s s e d ) then e l s e If O R D ( t e c 1 a ) < 3 13 t h e n

W r i t e i t e c l a ) ;

R e a d ( n o m b r e ) j

nombre := t e c l a + nombre abandona : = TRLJE

B E G I N

END END3

PROCEDlJRE Dei: i n e - A r c h i v o s ; VflR e x i s t e : BOOLEAN;

def a, n o m b r e .: CADENA; n u m : INTEGER: B E G I N

L.i.mpj.a(29,13,72,1R,i);

(45)

.-.,m

.

-

* ..

.

.-i!,iitbr.e : ::

IENTRADA’ ;

b h i l c ( r i r i m ,<= 2 ) AND (NOT abandona) do

2 F G I FJ

e>: i 5t.e : := FALSE;

T e x t . C r > l o i - ( t e r . - e r r ) ; TextBackQround(fon-inv);

G o t o x y ( 5 , b ) ; W r i t e ( ’ D e f a u l t : ’,defa,’ ’1; T e x t C c i l o i - ( t e x t . 0 ) ; T e x t R a c k g r o u n d ( f o n d o ) ;

G o t o n y ( 5 , Z t n u m ) ; W r i t e i ’ A r c h i v o de ’ , n o m b r e , ’ : ’ ) ;

Repeal.

L.E>f?-Ri‘Chi vo (27, Z h u m , n o m b r e ) ;

I f NO’T abandnna then BEG I N

i f n o m b r e = ” t h e n

BEG I N

n o m b r e : = def a; W r i . t e ( n o m b r e ) END;

A S S I G N ( a r c h en t

,

nombre)

I f d e f a = ’MRC..ENTR.TXT’ t h e n

e l s e A C S I G N ( a r c h - s a 1 ,nombre) ;

E$

I

->

I f d e f a = ’MAC-ENTR.TXT’ t.hen

else R E W R I T E ( a r c h - s a 1 ) ;

CBT+3

e x i s t e := ( I O r e s i i l t = O ) ; I f NOT e x i s t e t h e n

RESET ( a r c h e n t )

REG I N

E R R O R ( ’ E 1 a r c h i v o C ’ + n o m b r e + ’ l no e x i s t e en e l d i r e c t o r i o ’ ) ; W i n d o w ( 2 9 , 1 2 , 7 2 , 1 8 )

END END

U n t i l e x i s t e OR abandona;

n u m := ni-im

+

1 ;

d e f a := ‘MAC-CALI.TXT’; n o m b r e ::= ‘SALIDA

END;

I f (NOT abandona) AND E O F ( a r c h _ e n t ) then

REG I N

E R R O R ( ’ A r c h i v o fuent.e v a c i o . ’ ) ;

a h a n d o n a . : = TRUE;

CL.OSE ( a r c h - e n t ) ;

CLOSE ( a r c h . - s a l )

END END;

PROCEDURE M a c ; r o e n s a m b l adar ;

BEG I N

I f abandona t h e n

e l se

E R R O R ( ’ N o se han d e f i n i d o l o s a r c h i v o s f u e n t e y d e s t i n o - ) BEG I N

I n i ci a l i z a ;

O b t e n .-Li nea;

W h i l e (NOT E O F ( a r c h - e n t ) ) AND B E G I N

( l i n e a .:Z ’ E N D ’ ) AND (NOT abandona) do

Procesa-l..i nea;

O b t e n - L i n e a

END;

C:l..DCE ( a r c h - e n t ) ;

(46)

FRt3CEDi.IRE C o n s i u l t a ;

VAR a r c h : TEXT; e,. i % t e : HOOLEAN; d e f a , l i n : CFIDENA; n o m b r e : CQDENA;

i : INTEGER;

L.impia(29,1:2,72,18,1);

d e f a : = ’MAC-SAL.1. TXT’ ;

abandona : = FALSE; e x i s t . e := FlñLSE:

T e x t C o l o r ( t i i x - e r r ) ; T e x t R a c k g r o u n d ( f o n - i n v ) ;

G o t o x y ( S , 6 ) ; W r i t e ( ‘ D e f a u l t : ’ , d e f a , ’ ’ ) ;

T e x t C o l . o r ( t e x t o ) ;

O o t O X y ( 5 , 4 ) ; W r i t e ( ’ Q r c h i v o o c o n s u l t a r : ” ) ;

R e p e a t . REG I N

T e x t . R a c k g r o u n d ( f o n d o ) ;

Lee..,,Qrchi vo ( 2 8 , 4, n o m b r e ) ;

I f NOT abandona then

REEXN

I f n n i n b r e = ’ ’ t h e n RE13IFJ

nombre : = def a; W r i t e ( n o m b r e ) END;

A S S I G N ( a r c h , nombre) ;

<*I->

RESET í a r c h ) ;

< % I C 3

e x i s t . i i : = ( I O r e s c i l t = 0 ) ;

I f NOT e x i s t e then

REG I N

ERROR(’E1 a r c h i v o [’+nombre+’] no e x i s t e en e l d i r e c t o r i o ’ ) ; W i n d o w ( 2 9 , 1 2 , 7 2 , 1 8 )

EN13

END

U n t i l e x i 5 t i . OK abandona; If NOT abandona t h e n

REG IN

l..imFiia(2g,7,76,23,1);

T e x t c o l o r ( t e x - e r r ) ; T e x t B a c k g r o u n d ( f o n . . i n v ) ;

G o t . 0 x y ( 1 : 7 , 1 ) ; W r i t e ( ’ CONSULTA ARCHIVO ’ ) ;

T e x t C o l o r (te,: t o ) ;

L.i m p i a (2:7,9,76, 23, 1. ) ;

W h i l e NOT E Q F í a r c h ) d o

BEG I N

i : = :L

W h i l e (NOT E O F ( a r c h ) ) AND (i

<

14) do B E G I N

R e a d l n ( a r c h , 1 i n ) ;

W r i t e 1 n (1 i n 1 ;

D e l ay í 100) ;

i I:= i + 1

END; R e a d

END;

CLOSE ( a r c h ) END ;

(47)

L

c.

L

c

5:

Vi1H f r a s e : CCIDENA;

REG I N 1.

: INTEGER;

L ~ i mpi a ( 9 , h , 7 R , 2 4 , 3.1

:

+rose := 'Eso es t,odo, no o l v i d e apagar el tiquip0 de comput.o.'; Gotoxy i 1 3 , 8 i ;

for k := 1 to 51 do

+rase := 'U A C T FI 1. LI E G 13 ! ! ! ' ;

G o t o x y í 2 4 , l ' O ) j

For k := 1 to 2R do

Gotoxy(75,1'71

Write i f rase[ k 3 1 ;

Write i f I- ac,eCk 11 j

END;

(48)

<

8 ._ _ _ 1 _ . _ _ _ _ _ 1 _ _ _ _ _ _ _ _ - _ . _ . _ _ . - _ _ _ _ . _ . _ _ _ _ _ _ - . - _ _ _ I _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ I

l J N I VERSI DfW AUTONOMA METROPOL I TANA

I ZTfiFAL.APA

1 MATERIA : Seminario de Proyecto

Terminal 11.

ASESOR : L.uis Felipe Castro

PROYECTO : " Macroensamblador UAMICRO ' I

AL.LIMNO : Urtega Ledn Mario César

:----.-________-__---I I

3

PROGRAM Macro-UAMICRO;

CONST MAX-CONTEN = 100;

MAX-ARGLIM = 10;

TYPE CADEFIA := CTRINGCBOI;

1IP-ET := *ETID; ET10 := RECORD

nom-eti : CADENA; sig-eti : CADENA;

usada : BOOLEAN;

lig_.eti : TIP..ET

END; APUN := ."CELDA; CELDA := RECORD

nombre : CADENA; ini,fin : INTEGER; num-arg : INTEGER; num-eti : INTEGER; sig-mac : APUN END ;

VAR 1 i neñ, cotji g o : CADENA;

ex p a n s i on ; BOOLEAN;

a. b an don a : ROOLEAN;

arch-ent, arch-sal : TEXT; MACROS, LILT I MO : AFUN;

mac ..ac t

ual

: APlJN;

MAC-CONTEN : ARRRYCl..MAX..CONTENl O F CADENA;

MAC-ARGUM,MAC-PARAN : ARRAYCi..MAX..ARGUMl O F CADENA; ap.-conten,ren,col : INTEGER;

5i g...l i bre : INTEGER;

f o r i d o , t e x t ~ n ! , f a r i . . i n v , t . e > c ~ . . i n v , t e , : . _ e r r : IN.TEGER;

npci on : CtinR;

M~c_ETID,L~L:~...~TID : 'r1P-n;

Referencias

Documento similar

Página 1 CONVENIO DE COLABORACIÓN PARA EL OTORGAMIENTO DE BECAS A ESTUDIANTES DEL MUNICIPIO DE JALPA, ZAC., EN EL MARCO DEL PROGRAMA DE BECAS TRABAJEMOS UNIDOS

DEBE CUBRIRSE CON BASE EN EL SUELDO PREVISTO EN EL ARTÍCULO 18 DE LA LEY DEL TRABAJO RELATIVA:”.- Y DE LA DOCUMENTAL.- Consistente en copia del reverso de los

h)  contaminantes  del  medio  ambiente  laboral:  son  todas  las  sustancias  químicas  y  mezclas  capaces  de  modificar  las  condiciones  del  medio 

Los formatos derivados de la Acción Social “ENTREGA DE APARATOS AUDITIVOS O APARATOS ORTOPÉDICOS A PERSONAS CON DISCAPACIDAD AUDITIVA O MOTRIZ” cuentan con nombre y firma

Desde que resultamos adjudicatarios del primer servicio de ayuda a domicilio en el municipio bizkaino de Muskiz en el año 1995 hasta hoy, nuestra misión como empresa siempre se

Diplomado en Entrenamiento Deportivo Especializado, en el Centro de Educación Continua de Estudios Superiores del Deporte (CECESD) de la

Derivado del proceso de mejora administrativa en el procedimiento para integrar la Lista de personas que pueden fungir como peritos ante los órganos del Poder Judicial de

Por ello, MULTIVAC Marking &amp; In- spection, además de su pionero etiquetado Full Wrap, ofrece ahora otras dos soluciones de marcado sostenibles y de gran calidad para