54
t c Y c [:

148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

Embed Size (px)

Citation preview

Page 1: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

t

c

Y

c [:

Page 2: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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.

Archivos.

Instalacion.

Pr incipales Estructuras de Datos.

Procedimientos principales.

B ib l iogra f ia .

Apendice.

2

PAGINA

3

4

6

8

1 0

2 3

3 5

3 6

Page 3: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

c r: L

I r L

L

c

Este Macro procesador fue implementado básicamente para s e r u t i l i z ado con f ines didact icos como complemento del curso de Sistemas D ig i t a l e s I impa r t i d o en l a Un i v e r s i dad Autbnoma Metropo l i tana (Unidad Iztapalapa), y d isenado con base en el conjunto de ins t rucc i ones del microprocesador UAHICRO, cuyo estudio const i tuye la base de d icho curso.

E l desarrol lo de este macro procesador forma p a r t e de un proyecto que incluye, ademas, un simulador y un ensamblador para el microprocesador UAHICRO.

Una macroinstruccibn ( HACRO ) es simplemente una ayuda notacional para el programador. Es dec i r , una MACRO representa 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 vers io f in c o r t a de un programa, mediante l a def inicibn de macroinstrucciones que seran manejadas por el Macro ensamblador..

La funcibn del Hacroensamblador es reemplazar por el co r r espond i en t e g rupo de ins t rucc i ones cada vez que se hace re ferenc ia a una macroinstruccibn en el cuerpo de un programa. Este procedimiento es conocido comhnmente como expansibn de MACROS.

Basicamente un macro procesador sust i tuye un grupo de l ineas o caracteres por otro, s in e f e c tuar un ana l i s i s del t ex to involucrado en la sustitucibn, salvo en c i e r t os casos especiales.

El uso mas comhn de un macro procesador es en la pr0gramacib.n en lenguaje ensamblador, como es nuestro caso.

3

Page 4: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

L.

L

r L

?-

LI

íc

DESCRIPCBQN DEL PR(>YEETC>

E l p royec to es ta desarro l lado en su t o t a l i d ad en lenguaje Turbo Pascal, que nos permite un manejo senci l lo de pantal las para f a c i l i t a r a l usuario la operacibn del mismo.

E l programa f u e n t e que se desee p r o c e sa r debe proporcionarse a t r a v e s de un a r ch i v o de texto. Asimismo, debe indicarse el nombre del a r ch i v o por el cual se desea obtener la sa l ida , i.e. e l programa f u e n t e s i n macrodef in ic iones . E l proyecto cuenta con la opcibn de elegir un a r ch i v o de de fau l t para cada caso ( entrada y / o sal ida de datos).

La operacibn de este sistema se l leva a cabo con base en un menu p r inc ipa l de opciones. Para e l e g i r cualquiera de e l las es su f i c i en t e con opr im i r la i n i c i a l de la misma, o s i se desea, p o s i c i ona r s e en l a opcibn deseada u t i l i z a n d o l a s t e c l a s correspondi.entes a las f l echas ascendente y descendente, segun sea el caso.

Ayuda Despliega en pantal la un t ex to b r eve que explica a l usuario 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 gu i r de t a l forma que se u t i l i z en las opciones del sistema de la mejor manera posible.

Definir Arcñívor Se u t i l i z a pa ra d e f i n i r la fuen te y el des t ino de l o s datos cada vez que se desea procesar un archivo . S i se e l i g i b esta opcibn po r accidente, es pos ib le abandonarla presionando la tecla <ESO.

4

Page 5: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

r h c

Yacroenramnblador I n i c i a l a e jecucibn de 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 los arch ivos fuente y destino. S i durante e l procesamiento es detectado un e r r o r , la descripcibn del mismo sera desplegada en e l recuadro super io r de l a pantal la. S i esto ocurre, se t i enen las a l t e rna t i vas de i n t e r r u m p i r o c o n t i n u a r con el proceso. Cabe a c l a r a r que so lo se detectan los e r r o r e s correspondientes a la d e f i n i c i b n o invocac ibn de una macroinstruccibn. de t a l forma que los e r r o r e s asociados a l lenguaje mismo no serán f i l t r ados en este proceso.

Consulta Archivo Esta opcibn se u t i l i z a pa ra r e a l i z a r la consulta de cualquier a r ch i v o de texto, especialmente los de entrada y/o sal ida, s in necesidad de f i n a l i z a r la sesibn, y r equ i e r e solo e l nombre del a r ch i v o que se desea consul tar . S i se e l ige esta opcibn por accidente, puede abandonarse presionando la tecla <ESO.

Fin de Sesibn Con e s t a opc ibn se t e rm ina con l a e jecucibn del Nacroensamblador UAMICRO. v e r s i o n 1.1.

5

Page 6: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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 po r un t o t a l de 7 archivos , a saber:

MACRO.COM A r c h i v o que cont i ene el programa en cbdigo ejecutable. Este a r ch i v o es e l que se invoca a l e j e cu 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 de l p r o g r a m a f u e n t e . Cont iene l a d e f i n i c i bn de l a s p r i n c i pa l e s e s t r u c t u r a s de datos , e l p roced im ien to p r i n c i p a l y los procedimientos de seleccibn de opciones y de inic ia l izacibn.

MACRO.HLP A r c h i v o q u e c on t i ene e l t e x t o completo de ayuda a l usuario. Se t r a t a de un a r ch i v o de t ex to creado 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 opc ibn de de f in i c ibn de archivos, cuando no se cuenta con un afChiV0 fu en t e especff ico.

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

6

Page 7: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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 procedimientos necesarios para e jecutar el macroensamblador una vez que se han de f in ido l o s arch i vos de entrada y sal ida de datos. Aqu í se encuentran los p r o c ed i - mientos que podemos cons ide ra r como 10s p r i n c i p a l e s y s on 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.

[email protected] A r c h i v o de opciones. Cont iene los procedi - mientos que son llamados d i rectamente del programa p r i n c i p a l a l e l e g i r alguna de las opc i ones del menu p r i n c i p a l . D i chos procedimientos son : Ayuda, D e f i n e A r c h i v o s , Macroensamblador, Consulta y Fin-Sesion.

P a r a l a e jecucion del Macroensamblador, so lo son necesarios los arch i vos MACRO.COM. MACRO.HLP y MACENTR.TXT de t a l forma que s i se desea ins ta l a r el paquete solo se graben estos Ultimos a r ch i vos con el f i n de proteger los a r ch i vos que constituyen el programa fuente.

Page 8: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

P

i

c

L

c

L

P

L

c

Este p royec to se desarro l lb en una computadora PC compatible con IBU, de modo que para su instalacibn se r e qu i e r e de un equipo con esas caracter is t icas .

Pa ra e j e c u t a r e l macroensamblador es n e c e sa r i o asegurarse de que se encuentren cargados en el drive por de f au l t los a r ch i vos : MAGRO.COM, MACRO.HLP y UAC-ENTR.TXT.

Una vez que se han cargado d ichos arcn ivos , pa ra e j ecutar e l paquete solo es necesario t ec l ear el comando 'HACRO' y aparece en la panta l la el mentz p r i n c i pa l con l a s opciones descr i tas anteriormente.

Si se desea e j e cu t a r e l macroensamblado sobre un a r ch i v o espec i f i co se deben seguir los s iguientes pasos:

- Ent ra r a la opcibn de Def inic ibn de arch ivos y tec lear e l nombre del a r ch i v o deseado (con su extension), como a r ch i v o de entrada, incluyendo el r e co r r ido s i no esta en el drive y d i r e c t o r i o por de faul t .

- Dentro de la misma opcibn ind i ca r el a r ch i v o de sal ida deseado tecleando su nombre, extensibn y r e co r r ido ( s i es necesar io ) , s i no se desea e l a r ch i vo p o r de fau l t NACSALI.TXT como a rch i vo de sal ida.

- S i se desea abandonar la opcibn en cualquiera de las dos preguntas debe opr imirse la tecla <ESC>.

- Una vez de f in idos los a rch ivos fuente y destino, e l e g i r l a opc ibn de Macroensamblador. S i d u r a n t e e l pr'ocesamiento es detectado un e r r o r , debe presionarse la tec la <ESO para abandonar o <ENTER> s i se desea con t inuar el proceso. Las correcc iones de e r r o r e s encon t rados a t i empo de macroensamblado deben efectuarse con un ed i t o r compatible con e l ut i l i zado.

8

Page 9: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

- La consulta del a r ch i v o de sal ida puede e fectuarse con 8 1 un e d i t o r de textos , con comandos de HS-DOS, o s in

abandonar a l paquete con la opcibn de Consulta Archivo. S i se e l ige esto l i lt imo debe proporcionarse e l nombre

r- del a r ch i v o que se desea consultar de la misma manera L que se ind ico en la opcibn de Def inic ibn 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 en t rada debe s e r de tex to y puede ser ed i tado con cualquier ed 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 faci lmente las e t ique tas y HACROS.

- Los comentar ios d en t r o del a r c h i v o se indican con un sj-gno de ';' como pr imer palabra de la linea. No seran reproducidos en el a r ch i vo de salida.

- No se acep tan 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 enc i a r a una MACRO de f in ida anteriormente, dent ro del cuerpo de o t r a HACRO.

- Cada vez que se desee macroensamblar un a r ch i v o dado, es necesario elegir la opcibn de de f in i c ibn de arch ivos ya que a l t e rminar e l procesamiento de un arch ivo , el programa c i e r r a todos los a rch ivos ocupados, incluyendo los a r c h i v o s f u e n t e y dest ino , pa ra p r o t e g e r l a informacibn.

9

Page 10: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

PRINCIPALES ESTRWCTWRAS DE DATC)S

I- L

!- i F

L

c

r

c

L

b

i

c

L

Para el desarrol lo de este proyecto se implement6 un ambiente de va r i ab l e s d i v i d i d o práct icamente en dos grupos pr inc ipa les que son :

Var iab les de Este g rupo c on t i ene t odas aque l l a s u t i l e r l a s var iab les que son ut i l i zadas imicamente

para manejo de pantallas. Es dec i r , las q u e se u t i l i z a n p a r a mos t r a r el funcionamiento del sistema de una manera senc i l la y f a c i l de entender pa ra e l usuario del mismo.

Las v a r i ab l e s que se incluyen en este g rupo son : n u m o p c , f ondo , t e x t o , fon-inv, tex-inv, t e x e r r y opcion.

Variables de Engloban a todas las var iab les que son procesamiento u t i l i zadas a tiempo de ejecucibn durante

el macroensamblado.

Pa ra algunas de las var iab les de este grupo se d e f i n i e r o n t i p o s de da 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 poster iormente.

Las p r inc ipa l e s va r i ab l e s involucradas a q u i son : l inea , codigo, expansion, abandona, a r c h e n t , a r c h s a l , H A C R O S , ULTIMO, 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 HI MAC - ETIQ ’ULTET IQ , apcon ten , s i g l i b r e .

MAC A R G U M I

A 1 nuacibn se muestra la descr ipc ibn de cada v a r i a b l e inc luyendo su t i po , los valores que puede tomar, los procedimientos que la ut i l i zan, etcetera.

I O

Page 11: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

TlPOS ESPECIALES

T-

L

Se de f in ib previamente un t i p o CADENA = STRING[BO].

SI? de f in ib el t i p o APUN como un r e g i s t r o que contiene la s i gu iente informacibn :

nombre - nombre q u e i d e n t i f i c a a l a macro instruccibn; de t i p o CADENA.

i n i , f i n - apuntadores a las localidades donde i n i c i a y t e rmina el cuerpo de l a RACRO en el a r r eg l o RACCONTEN; de t i p o entero.

n u m a r g - aqu í se guarda el nUmero de argumentos que cont i ene la RACRO; t i p o entero.

num - e t i - almacena e l nUmero de e t i que t a s que se detectaron dent ro del cuerpo de la macro de f in i c ibn ; t i p o entero .

s i g m a c - apuntador a l r e g i s t r o que cont i ene 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 macro def in i c ibn 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 la s iguiente informacíbn :

n o m e t i - nombre que i d en t i f i c a a la e t iqueta ; es de t i p o CADENA.

s i g - e t i - campo que ind i ca el consecut ivo a s e gu i r pa ra e v i t a r l a dupl icac ibn de e t iquetas ; 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 re ferenc iada, con el f i n de actual i zar la s i ese es e l caso; t i p o booleano.

l i g e t i - apuntador a l r e g i s t r o q u e c on t i ene l a i n f o rmac i bn de l a s i g u i e n t e e t i q u e t a encontrada; t i p o T I P E T .

h

L

11

Page 12: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

I í n e a

I s

e-- I

i-

r-

L

s

i

c

TIPO : CADENA.

POSIBLES VALORES :

Si se está rea l i zando una Macro expansibn, la va r i ab l e l i n e a toma su v a l o r del e spac i o de memoria cor respond iente a l a macrodef in ic iún asoc iada; es decir, del contenido de MAC-CONTEN para la MACRO que se este invocando.

En o t r o caso el contenido de l inea corresponde a la l inea actual del a r ch i v o de entrada.

PROCEDIHIEHTOS QUE LA UTILIZAH :

O b t e n -Codigo. O b t e n --A r g , Obten-Linea, Expande , De f i n e , Procesa-Linea y Hacroensamblador.

S u s t A r g, Sus t E t iq ,

12

Page 13: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

P-

i

i F , L

r- 1

L

c

L

L

L

c

....

b

L

F

TIPO : CADENA.

POSIBLES VALORES :

codigo toma su v a l o r de la l i nea que se encuentra actualmente en procesamiento. Nos indica la pr imera palabra encontrada, a p a r t i r de la columna actual, que sf? encuentre entre dos espacios en blanco. Se u t i l i z a para de tec tar las palabras claves como 'MACRO', WEND', 'END', y los argumentos y e t i q u e t a s de cada macrodef in ic ibn.

PROCEDIMIEHTOS QUE LA UTILIZAH :

Obten C o d i g o, Sus t -E t i q, Def-Etiq, Define, Busca y Procesa-Linea.

Sus t A r g , Obten -Li nea,

i

F 13

Page 14: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

expansion

TIPO : BOOLEANO.

POSIBLES VALORES :

Esta v a r i ab l e puede tomar solo dos valores : CIERTO o FALSO. Solo toma el valor CIERTO cuando se ha invocado a una HACRO existente durante e l proceso y el macro ensamblador se encuentra expandiendo dicha AACRO. Una vez que se ha terminado de e x p a n d i r l a HACRO, l a va r i ab l e expansion vuelve a tomar el va lo r FALSO.

PROCEDIMIENTOS QUE LA UTILIZAN :

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

14

Page 15: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

e..

c

abandona

L

L

b.'

L

F

i - L

r

L

s-

L

h

TIPO : BOOLEANO.

POSIBLES VALORES :

Esta v a r i ab l e puede tomar solo dos valores : CIERTO o FALSO. Su va l o r normal es FALSO, y toma el va 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 usuario decide si se abandona o no e l proceso 1, o s i durante la de f in ic ibn de a rch i vos se presentb alguna anomalia.

PROCEDIUIENTOS QUE LA UTILIZAN :

ERROR, Act-Etiq, Expande, Def ine-Archivos, Consulta y Macroensamblador.

15

Page 16: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

a- -

c.

L

L

c

L

archent y arch-sal

TIPO : TEXT.

POSIBLES VALORES :

Estas v a r i a b l e s toman su va lo r cuando se e l ige l a opcibn de def inicibn de archivos en el menil pr inc ipa l y se proporcionan correctamente los archivos de entrada y sal ida. No su f ren modificacibn durante el procesamiento y se ut i l i zan pa ra direccionar la entrada y sal ida de datos.

PROCEDIMIERTOS QUE LA UTILIZAN :

Obten-Linea, Def ine,Def ineArchivos y Hacroensamblador.

16

Page 17: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

,”...

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 los apuntadores a la l i s t a l i gada que contiene la inforrnacibn descr ip t i va de cada MACRO. La va r i ab l e MACROS apunta a l i n i c i o de la l i s ta ; ULTIMO apunta a l Ult imo elemento de la l i s ta , y macac tua l apunta a l nodo correspondiente a la MACRO que se esta expandiendo.

PROCEDIMIEATOS QUE LA UTILIZAN :

Obten-Linea, Expande, Def ine y Busca.

F

L

F

L

c 17

Page 18: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

R"

L.

r- L

---

TIPO : ARREGLO DE CADENAS.

POSIBLES VALORES ;

Esta a r r e g l o esta d e s t i n a d o a c on t ene r t oda l a inforrnacibn correspondiente a las rnacrodef iniciones. Es d e c i r , e l cuerpo de ins t rucc i ones de cada MACRO se guarda en este a r r eg l o l inea po r l inea a medida que se van leyendo d e l a r c h i v o fuen te . Pa ra e x t r a e r l a in formacibn de MACCONTER, se debe r e c u r r i r a los apuntadores correspondientes a l MACRO en la l i s t a l igada mencionada anteriormente.

PROCEDIMIENTOS QUE LA UTILIZAN :

Obten-Linea y Define.

L

c 18

Page 19: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

ñ”

L

F

L

TIPO : ARREGLO DE CADENAS.

POSIBLES VALORES :

Estos 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 la macroexpansibn. Su l imite es de 10 localidades ya que se asumen MACROS con un numero de argumentos menor o i gua l a 10. HAC-ARGUH es u t i l i z ado durante la de f in ic ibn de MACROS y guarda los argumentos para sus t i tu i r l os por notacibn posicional en el arreg lo MACCONTEN. y HACPARAH se usa en expansibn de MACROS almacenando los parametros con que se esta invocando a l a MACRO, pa ra inc lu i r l o s du ran t e l a expansibn.

PROCEDIHIEHTOS QUE LA UTILIZAN :

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

L

F

L - 19

Page 20: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

r- b-

!- u-

c c

c c

r- L

f; L

r-

TIPO : T I P E T .

POSIBLES VALORES :

Se trata de los apuntadores a la l i s t a ligada que contiene la i n f orrnacibn asociada a cada etiqueta. La v a r i a b l e HAC-ETIQ apunta al i n i c i o de la l i s ta , y ULT-ETIQ apunta a l ultimo elemento de la l ista .

PROCEDIHIENTOS QUE LA UTILIZAN :

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

20

Page 21: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

ap conten y síg-libre -

TIPO : ENTERO.

POSIBLES VALORES :

Apuntadores al arreglo MACCONTEN. Estan limitados por el tamaiio del arreglo. a p c o n t e n se ut i l i za durante la expansibn de MACROS y apunta a la l inea actual de la MACRO que se esta expandiendo; s i g l i b r e apunta siempre a la siguiente localidad vacfa dentro del arreglo.

PROCEDIUIENTOS QUE LA UTILIZAB :

Obten-Linea, Expande y Define.

c

21

Page 22: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

col y rem

TIPO : ENTERO.

POSIBLES VALORES :

Var iab les que nos indican siempre la l inea actual y la posicibn que se t iene dent ro de la mismo durante el procesamiento del a r ch i v o fuente . ren nos ind ica la l inea del a r ch i v o de entrada que se esta procesando y col la posicibn dent ro de la l inea misma.

PROCEDIHIERTOS QUE LA UTILIZAN :

0.b t e n C o d i g o, Obten - Linea y Procesa-Linea.

Sus t A r g , Sus t E t i q, Obt en --A r g ,

L

F

L

r L

r L

22

Page 23: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

c c L

L r iL n- e

PROCEDIMIENTOS PRINCIPALES

Los procedimientos que u t i l i z a e l proyecto pueden ser c las i f i cados en dos grupos basicamente :

Procedimientos Aqu i se inc luyen todos l os que se de u t i l e r i a . u t i l i z a n p a r a la p r esen tac ibn del

s i s t ema y l o s q u e nos 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 onsu l t a r a rch ivos , por ejemplo.

Procedimientos de procesamiento.

Son los procedimientos pr inc ipa les que nos permiten e f e c tuar el Procesamiento de un a r c h i v o , de t ec tando pos ib l e s e r r o r e s en el mismo.

Los procedimientos p r inc ipa l e s son : Obten C o d i g o, Sus t E t i q , Obten A r g, A c t E t i 9, Expande. D e f E t i q , De f ine , Busca y Procesa-Linea.

Sus t A r g , O b t en-Li nea,

A cont inuac ibn se muestra la descr ipc ibn de cada procedimiento, ind icando las var iab les mas re levantes que son actual izadas en el mismo.

23

Page 24: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

ObtenCodigo

Obtiene el cbdig0 ope ra t i vo actual para poder tomar una d e c i s i o n s o b r e e l f l u j o de l a i n f o rmac i bn d u r a n t e el procesamiento del a r c h i v o de entrada.

Encuentra el pr imer conjunto de caracteres, a p a r t i r de la columna actual, que se encuentre del imitado por dos espacios en blanco, dos comas o cu l qu i e r combinacib doble de estos, trabajando siempre sobre la que se considera como l inea actual.

Es invocado practicamente por todos los procedimientos y se u t i l i z a pr inc ipa lmente pa ra d e t e c t a r palabras clave del macroensamblador (como 'MACRO'. 'MEND', etc.), a s i como pa ra encontrar los argumentos o parametros de las macroinstrucc.iones durante la def inic ibn o bien en una macro llamada.

Actualiza la v a r i ab l e global col, que corresponde a la coordenada de columna dentro de la l inea actual.

?- 24

Page 25: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

I L

c

[I

c

Se u t i l i z a t an to en la de f in ic ibn de macroinstrucciones como durante la expansibn de MACROS.

En l a d e f i n i c i bn se usa e s t e p r o c ed im i en t o p a r a s u s t i t u i r d e n t r o del cuerpo de l MACRO l a ocur r enc ia de los argumentos del mismo por notacibn posicional para poder e f e c tua r e l paso de parametros posteriormente.

Durante la expansibn de MACROS se toma la l inea actual y se busca en el la la ocurrencia de algiin parametro de la MACRO que se encuentra en expansibn, reemplazando l a no tac ibn posicional con los parametros que son enviados.

Actualiza la v a r i ab l e l inea ya que en cualquier caso e fect i ia sus.titucibn de palabras den t ro de ella. Tambien t r aba j a con los vectores MAC-ARGUM y MAC-PARAM, para guardar en los mismos los parametros de la macro ins t rucc ibn d u r a n t e l a def in ic ibn o la expansibn, respectivamente.

25

Page 26: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

y- ".-

Suit-Etip

i h

L

T" L

c P

L

F

L

Se u t i l i z a durante la expansibn de MACROS. Se toma la l inea actual. y se busca en el la la ocurrencia de alglin parámetro de l a MACRO que se encuentra en expansibn, reemplazando la notacibn posicional con los parámetros que son enviados.

Actualiza la v a r i ab l e l inea ya que en cualquier caso efectlia sust i tucibn de palabras dentro de ella. Tambien t r aba j a con los apuntadores a la l i s t a de e t iquetas MAC-ETIQ y ULTET IQ , para l oca l i zar en dicha l i s t a s i en la l inea actual ex i s t e alguna et iqueta. S i este es el caso, se efecti ia la sustitucibn y una vez que se ha concluido la expansibn, se actual iza el consecutivo de cada et iqueta contenida dentro de la HACRO expandida.

P

L

m- 26

Page 27: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

L

c

L

i

Obten-Arg

Se u t i l i z a t an to en la de f in i c ibn de macroinstrucciones como durante la expansibn de MACROS.

En l a de f in ic ibn se usa este procedimiento para obtener los argumentos de l a KACRO actual para despues e f e c tuar una sus t i tuc ibn de los mismos po r notacibn pos ic ional den t ro del cuerpo del MACRO.

Durante la expansibn de MACROS se toma la l inea actual, que corresponde a una macrollamada, para obtener los parametros que se l e están pasando y guardarlos en e l a r r eg l o HACPARAM para despues e f e c tuar la sust i tucibn de parametros.

Actual iza las var iab les col y HAC-PARAH, para guardar en los esta i i lt ima los parametros de la macroinstruccibn durante la expansibn de la MACRO.

i ! i

F-

..

27

Page 28: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

F

L

!- L

F

L

w-

L

P

L

Obten-Linea

Obtiene la s iguiente l inea de t raba j o dependiendo del va lo r de la va r i ab l e expansion.

Si se esta efectuando una macro expansibn, la l inea que se tomará como la s i gu i en t e prov iene del a r reg lo HAC-CONTEI, especif icamente de la casi l la apuntada p o r apcon ten . En este caso, se t r a t a de una l inea que corresponde a l cuerpo de la macroinstruccibn que se esta expandiendo. La va r i ab l e a p c o n t e n se incrementa despues de l e e r l a l inea.

S i no se t r a t a de una expansibn, se lee la l i nea s iguiente del a r ch i v o de entrada y se incrementa la va r i ab l e r e n que contiene el numero de renglbn del a r ch i v o de entrada que se esta procesando.

Este procedimiento dec ide tambien s i es necesar io e f e c tuar alguna sust i tucibn de argumentos o e t ique tas s i se esta efectuando una expansibn y la HACRO actual t i ene levantadas las banderas co r r espond i en t es , en cuyo caso l l amara a l os procedimientos S u s t A r g y Sust-Etiq.

actual. Tambien in i c i a l i z a la va r i ab l e col en uno para la :linea

L

P

L

c

- m-

28

Page 29: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

Act-Etíq

L

F

L

b

L

n."

L

Es uti l izado iinicamente po 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 incluia et iquetas, se invoca e este procedimiento para actualxzar e l consecutivo de las e t iquetas que fue ron usadas durante la expansibn, para e v i t a r que se dupl ique una e t i que ta a l expander de nuevo una macroinstruccibn que ya se uti l izb.

Revisa la l i s t a de et iquetas apuntada por las va r i ab l e s MACETIQ y ULTETIQ, y actual iza unicamente aquellas que tengan levantada la. bandera de usada.

29

Page 30: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

Expande

m-

i

c

L

P-

L

6 L

T L

Procedimiento u t i l i zado para la expansibn de MACROS. La manera en que esta implementado este procedimiento, aunado a l de ProcesaL inea , permite que dent ro del cuerpo de una MACRO sea pos ib le l lamar a o t r a macroinstruccibn de f in ida anteriormente, r ep i t i endo coste proceso cuantas veces sea necesario.

Enciende la bandera de expans ion a l i n i c i a r i a macroexpansíbn y la apaga a l terminar. Tambien detecta e r r o r e s en e l paso de parametros.

Ll.ama a los procedimientos O b t e n A r g , Obten-Linea, Procesa-Linea y A c t E t i q .

F" L

L

F- 30

Page 31: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

L

D e l -Etiq

c

L

Se ut i l i za durante la de f in i c ibn de MACROS cada vez que se encuentra alguna e t i que ta dentro de l cuerpo de ].a F~ACRO. ES llamado en cada l i n ea de l a r c h i v o de entrada que no sea un comentario e i d e n t i f i c a una e t i que ta dentro de la l inea s i el tiltimo ca rac t e r del pr imer cbdigo ope ra t i vo de la misma es el s igno de ':'.

Si esto ocur r e anade a la l i s t a de e t iquetas la actual, ver i f icando previamente que no se haya d e f i n i do con anter ior idad.

Ac tua l i za los apuntadores a l a l i s t a de e t i que t a s MACETIQ y ULTETIQ.

31

Page 32: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

Define

c

L

?- yi

F

L

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

S u ob j e t i vo es guardar la informacibn de esa MACRO en las es t ruc turas de datos correspondientes. Asl, guarda e l cuerpo de instrucciones de la MACRO en el a r r eg l o MACCONTEN y en la l i s ta apuntada por las variables MACROS y ULTIHO guarda e l nombre del MACRO, su numero de argumentos, e l de e t i que t a s y los apuntadores a l i n i c i o y f i n de las localidades de HAC-COKTEH donde esta contenido el cuerpo del MACRO.

Durante la def inic ibn, s i la MACRO t i ene argumentos, va reemplazando estos por notacibn posicional (llamando a S u s t A r g ) a medida que se lee el cuerpo de instrucciones.

Llama a los procedimientos 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

c 32

Page 33: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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 ve r i f i c a r s i una MACRO (sea pa ra definicibn o expansibn) ya h a sido def in ida . Regresa el resultado de la blisqueda en una var iab le Booleana y s i f u e exitosa, regresa además el apuntador macactua l a la MACRO deseada.

33

Page 34: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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 para e l macroensamblador ya que en él se toman las dec is iones sobre el f l u j o de la i n f ormacibn..

Es llamado cada vez que se ha obtenido una nueva l inea, ya sea del a:rchivo de entrada o del a r reg lo MAC-CONTEN.

Dependiendo del primer cbdigo opera t i vo de la l inea, se tomara una de las s iguientes acciones:

- s i e l cbdigo es 'MACRO' se t r a t a de una d e f i n i c i bn y debe v e r i f i c a r s e que la MACRO tenga un nombre. S i e l nombre ex i s te , entonces se debe v e r i f i c a r que no se haya def inido previamente una MACRO con ese nombre. S i esto no ocurre entonces l lamar 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 def i .nida prev iamente con un nombre que correponde a i cbdigo operat ivo . Si esto no ocurre, entonces se asume que no es: una macrollamada Sino una instruccibn senci l la que debe ser escr i ta t a l cual es en el a r ch i v o de salida.

Llama a los pprocedimientos ObtenCodigo, Busca, Def ine y Expande, y actual i za las var iab les l inea y col.

p- i

P

1

34

Page 35: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

. 1 .

T u r b o Pasca l (Ve r s i bn 3.0)

Rt!ference Manual

BORLAND INTERNATIONAL Inc.

35

Page 36: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

I” b..

L

Se anexan a este manual el l i s t ado de los archivos fuente que contiene el paquete, que son:

- HAC-UTI.PAS

- MAC EN S . PAS

- HAC-0PC.PAS

- WACRO.PAS

r- c

Asimismo se anexan los d iagramas de f lujo de datos p r i n c i p a l e s .

36

Page 37: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

C MAC-UTI . PFIS 3 C FIRCHIVO DE UTILERICIC 1

PROCEDURE Moni t:or ;

BEG IN C l r C c r ; Gotoxy(lO,13); Wr i te( ’Es ta usted usando un monitor de co lor S/N ? ’ ) ;

Repeat

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

Read(Kbd,opcion); 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 (500) ; Del ay ( 100) ; Nnwxind

END5

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

BEGIN TextRacI:groi.ind (co lor) ; Window(xl ,y l ,x2 ,y2) ; C1 rCcr

END;

PKOCEDURE T i t u l o;

BEGIN L. impia(3,2,78,4,7): Textcolor (tex-inv) ; Got oxy (20,l ) ; Writei’UNIVERSIDAD FIUTONOMA METROP0LITANA’)g Gotoxy(20,2) ; Write( ’Proyecto de Ingenier ia E l e c t r o n i c a 2 ’ ) : Gotoxy(20.3) ; Write(’Macroensamb1ador UAMICRO Version 1 . 1 ’ )

END j

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

VFIR i : INTEGER;

BEGIN Gotoxy(x1 ,y l ) ; W r i t e 0 ,-’)i For i := ( x l + 1 ) t o (x2 - 1 ) do

Write i ’ , ’ ) 3 For i := (y1 + 1 ) t o <y2 - 1 ) do

Write (’--’ ;

BEG IN

Page 38: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

END ; Gotox ,y ( : i i . y :?? ; W r j t e ( ’ L ’ : , ; For i := (x:l + 1 : lo ( 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 , t30 ,25 ,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 Text.Battkground(fon-.inv); 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 ; Wr i te ( ’F in de sesion.’)

T e x t R a c k g r o u n d (fondo) j G o t o x y ( 4 , B ) J W r i t e ( ? A y u d a ’ ) ;

Wr i te ( ’ 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 ; Wr i te ( ’ 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 ex-er r i j

W r i t e l n i’ ’ % l i n e a ) ; Wr i te ln í ‘ ERHOR : ’ , f rase); Wri . te( ’ O p r i m a <ENTER> p a r a cont.inuar 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) then Sonido R e a d (Kbd, t .ecl 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 or ( t . e x t o ) ; T e x t B a c k g r o u n d (fondo) ; Window(3,6,78,23)

END;

Page 39: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

I MRC_ENC.PAS 3 < ARCHIVO DE MñCROENSAMBLADO >.

PROCEDURE Cibteri._Codi go;

BEG IN codlgo : = " i While (col i= LENGTHilinea)) AND ilineaCcol1 IN C ' ' , ' , ' I ) do

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

col :-= col + 1;

codiqo := codiao + COPY(linea,col,l); - - col := col + 1

END END;

PROCEDURE Sust -Ar g j

VAR num : INTEGER;

REG IN num := O; col :- 1 ; While col LENGTH(linea1 do REGIN

Obt en-Cod i go; If 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 IN

r o l := col - LENGTH(codig0); DELETE(linea,col ,LENGTHicodigo) ) ;

INSERT ( ' %' +CHR (4Btnum) , 1 i nea, col ) ; col := col + 2

ENü END

END END;

PROCEDURE Sust. ..Et.i q i

VAR IJ : TIP-ET;

REG IN e3t.a : ROOL..EfIN;

rrol := 1 ; Whjle col a:= L.ENGTH(linea) do REG IN

Obten-Codi go; If cadigoCL.ENGTH(codigo)l = ':' then

BEG IN DELETE (codi go, LENGTH (codi go) , 1 ) ; col := col - 1

Page 40: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

Q : :: Yi>C._ETIQ; est.+* ::: FALSE; While ,:I;r ,<> NIL) AND (NRT esta) do REGIN

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

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

END; I f ec-tii then

DEG :N W*., usada : = TRlJE; CNBERT (Q*.s ig_et i 1 i n e a , c o l ) ; to]. := col + 3

END END

END;

PROCEDURE Obteri-Arg (VAH niun : INTEGER) j C L lena l a t a b l a de argumentos con los 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 ineaCcol1 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 ren := ren + i; Reacl ln(arch-ent, l inea)

END; COI := 1 ; (iotoxy(58,11); Write(ren)

END;

Page 41: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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

VAR 0 : TIP-ET;

BEGIN c a r : INTEGER;

i.? := NAC-ETIG!; While (I-1 .:> NIL) AND (NOT abandona) do BEG IN

I f usada then BEG X N

car :=: ORD(O^.sig..et.I.CZl); I f @*,,s ig_etiC21 = ’ 2 ’ then

Q”.s ig .-et i tZI := ’ A ” : car : = ORD ( í?*.sig_eti C 1 I ) ; I f B ^ . s i g - e t i t l l = .‘Z’ then

else W.sig_.et. i117 := CHRicar + 1 )

BEG I N

ERRORi’Demasiadas e t iquetas . ’ )

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:

If num-par <: > mac-.actual.’. num-arg t.hen

I f NOT abandona then REI3 IN

ERRORi’Numero incor rec to de parametros’);

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 ac tua l“ ‘ . f in 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; Wr i t .e ln(arch_sa l , ’ ; FIN DE Act-Etiq

END; ex pansi on : =: FALCE

END;

EXPANSION ’ ,mac_actual^.nomhre);

PROCEDURE Def -Et i q : C Actua l i za l a l i s t a de et iquetas 3

VAR r* : TIP-ET!

Page 42: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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. nom-et i : = e o d i go; O*. si g-eti : = ’ AA’ ; O*. irsiida : = FALCE; W.lig_eti := 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.“. nombre : = c o d i g o ;

MAC-CONTENCs ig_ l ihre 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 EOF i a r ch - en 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 : od i g o = ’MFICRO’ t h e n

n i v e l := n ive 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

, . . .. ..~. ~ . -

Page 43: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

END: P.". nirm...et.i :I = n u m ; P.". f i i, : =i si g- 1 i. bre; 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 ig - .mac : = P; U L T I M O : = P

END END:

PROCEDl.JRE Busca (VAR es ta : BOOLEAN) ;

VA" t e m p : AfYJN;

P E G I N c5t.a : = FAL.CE; t e m p : = mac. .ac tua 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 < > codigo) do

I f mac..~act.ii;il .:> NIL.. then

e l se mac..ac:tiral : = t.emp

mac ._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 codigo = 'MFICRO' then

B E G I N c o l u m := col - 5; Ob t .en C o d i go; C O b t i e n e e l n o m b r e de l macro. 3 If codigo = I ' then

else R E G I N E R R O R i ' M a c r o s in n o m b r e . ' )

DELETE (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 then

e l5e D E F I N E ERROR ( e D o b l e def i n ic ion . ' )

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 ewiate then

e lse Wr i te ln (arch..sai, 1 inea) EXPANDE

END END;

. 3

Page 44: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

C MAC-0PC.PAS 1) C ARCHIVO DE OPCIONES 3

PROCEDlJRE A y u d a ;

VAR arch : 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) ; nSSIGN(arch,’MACRO.HLPI); R E G E T C a r c h ) :; Wh i le 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; While (NOT E O F ( a r c h ) l FiND (i < 14) do BEG I N

R e a d 1 n (arch, 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 (arch)

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 then

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); def a : = ’MAC-ENTR. T X T z ;

Page 45: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

.-.,m . - * . .. ”

.-i!,iitbr.e : :: ’ IENTRADA’ ; bhilc ( 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 - ( ter.-err); 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 ’ ,nombre , ’ : ’ ) ;

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 = ” then BEG I N

n o m b r e : = def a; Wri. te ( n o m b r e )

END;

ASSIGN (a rch en t , nombre) I f defa = ’MRC..ENTR.TXT’ then

e lse A C S I G N ( a r c h - s a 1 ,nombre) ; E$ I -> I f de fa = ’MAC-ENTR.TXT’ t.hen

else R E W R I T E ( a r c h - s a 1 ) ; CBT+3 existe := ( I O r e s i i l t = O); I f NOT e x i s t e then

RESET (arch ent)

REG I N ERROR(’E1 archivo C ’ + n o m b r e + ’ l no e x i s t e en e l d i rec to r io ’ ) ; 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 ; defa := ‘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 vacio. ’ ) ;

a h a n d o n a . : = TRUE; CL.OSE (arch-ent) ; CLOSE (arch.-sal)

END END;

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

BEG I N I f abandona then

e l se ERROR(’No se han de f in ido l o s archivos fuente y des t ino- )

BEG I N I n i ci a l i z a ; O b t e n .-Li nea; Whi le (NOT E O F ( a r c h - e n t ) ) AND

B E G I N ( l i n e a .:Z ’END’) AND (NOT abandona) do

Procesa-l..i nea; O b t e n - L i n e a

END; C:l..DCE (arch-ent) ; CLOSE ( a r c h sal. 1 :

Page 46: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

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

VAR arch : TEXT; e,. i % t e : HOOLEAN; de fa , l i n : CFIDENA; n o m b r e : CQDENA; i : INTEGER;

L.impia(29,1:2,72,18,1); defa : = ’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 ) ; TextRackground(fon- inv); G o t o x y (S, 6 ) ; W r i t e ( ‘ D e f a u l t : ’ ,de fa , ’ ’ ) ;

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 consu l ta r : ” ) ; R e p e a t .

REG I N

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

Lee.., ,Qrchi vo (28 , 4, n o m b r e ) ; I f NOT abandona then REEXN

I f n n i n b r e = ’ ’ then RE13IFJ

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

END; ASSIGN (arch, nombre) ; <*I-> RESET í arch ) ; < % 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 rch i vo [’+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 then REG IN

l..imFiia(2g,7,76,23,1); T e x t c o l o r ( t e x - e r r ) ; TextBackground(fon..inv); G o t . 0 x y ( 1 : 7 , 1 ) ; W r i t e ( ’ CONSULTA ARCHIVO ’ ) ;

T e x t C o l or (te,: t o ) ; L.i m p i a (2:7,9,76, 23, 1. ) ; Whi le NOT E Q F í a r c h ) do BEG I N

i := :L While (NOT E O F ( a r c h ) ) AND (i < 14) do B E G I N

R e a d l n (arch, 1 i n ) ; W r i t e1 n (1 i n 1 ; D e l ay í 100) ; i I:= i + 1

END; R e a d

END; CLOSE (arch)

END ; abandona : == TRUE

END;

Page 47: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

L

c.

L

c 5:

Vi1H frase : 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 lv ide apagar el tiquip0 de comput.o.'; Gotoxy i 13,8i ; for k := 1 to 51 do

+rase := 'U A C T FI 1. LI E G 13 ! ! ! ' ; Gotoxyí24 , 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;

L

Page 48: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

< 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 go : CADENA; ex pansi 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 OF CADENA; MAC-ARGUM,MAC-PARAN : ARRAYCi..MAX..ARGUMl OF CADENA;

ap.-conten,ren,col : INTEGER; 5i g...l i bre : INTEGER;

forido,text~n!,fari..inv,t.e>c~..inv,te,:._err : IN.TEGER; npci on : CtinR;

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

num-opc 2 1I.ITESER;

Page 49: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

51’ 7“ L

1 1 T-

i

r iL

c

.-

FROCEDlJRE I n i c i al i L a j

REG I N For ap-conten := 1. t.o MQX-CONTEN dcr

MQC-CONTENCap-conten] := ” * I

For ap._cont:i?n := 1. t o MAX-QRCiUM do REG I N

MAC-ARGUMCap-conten l : = ’ ’ , * MAC_PAiRAMr:ap~..contenI : = ’ ’

END; ap-.conten : = 1 ; r e= n ::= 0 ; s i g _ . l i b r e := 1; expansi on : := FQl-SE; MACROS : = N IL ; MfiC..ETXíI ::= NIL..; C O d i g O : = I ? .

I . i ~ p i . a ( 7 9 , 1 i I ) . , 7 2 , J . R i 7 ) ; Windnw(3 ,& ,77 ,%3) ; T e x t . C o 1 or ( t e x . . e r r ) ; Got~ory (40,ii) ; Write(’Prncesandn l i n e a 1; T e x t c o l o r ( t ’w tn ) ; Te,: t .Rackqro i . . in r i (fondo)

END:

PROCEDlJRE I n f o r m a ín i rn i : INTEGER) ;

R E G I N L . i mpi a (25,7,76,23,1) ; Case n i i m of

1 n BEGIN C u a d r o ( 1 1,6,42,iZ) ; T e x t Col or (t e x -e r r ) ; G o t o x y ( 2 4 , b ) j Te:< t C o l or ( t e x t o ) ; Gotoxy ( th ,B) ; Go%ox y ( 16,9) ; Gotoxy í 16,101 ;

END j 7. : R E G I N

C~ . i ; ad ro (4 ,3 ,49 , 13) ; T e x t C o l n r ( t . e x - e r r ) ; G o t o x y ( l 5 , S ) 3 Tc: . : t .Cn ln r ( t e x t o ) ; G o t o x y ( i 0 , 7 ) j

Gotaxy(l0,9); Gotox y ( 1 O , 1 1 ) j

END; 3 : B E G I N

C u a d r o ( 4 , 6 , 4 9 , 1 3 ) : Te:ctCol or í te>! -er r ) ; Gotoxy ( 18,6) ; T e r t . C o 1 cw- ( t e x t.o) ; G o t o x y ( i 3 , B ) j GCSt Ox y ( 13,9) j GotoxyilJ, 10); G o t o x y (17,li) ;

END; 4 : B E G I N

C u a d r o ( l l , h , 4 2 . 1 2 ) ; Te :c t .Co lnr ( t e x - e r r ) ; Gotoxy (21 I 6) ; Te:.: t . C o l or (t EX t ~ o ) j

O o t o x y ( l 6 , O ) j Gnt.oxy f l .b, 9) 5 , . . -..._-I. --

TextKackground( fon- inv ) ; W r i t e ( ’ AYiJDA ,’) j

W r i t e ( ’ D e s p l i e g a in formacion’ ) : Wr i t -@( ’de a y i r d a para e jecu ta r ’ ) ; Wr i te ( ’e1 M a c r o - E n s a m b l a d o r . ’1

T e x t H a c k g r o u n d if ondo)

T e x t . B a c k g r n u n d if on-inv) ; W r i t e ( ’ D E F I N I C I O N DE CIRCHIVOS ’ ) ;

W r - i % e ( ’ D e f i n i c i o n de arch ivos de entrada‘); l J r - j t e ( ’ ( a rch i vo fuente) y s a l i d a (a rch ivo ’ ) ; Wr i te ( ’ des t i no ) de i n f o r m a c i o n . ’ ) ;

T e x t R ñ c k q r n u n d (fondo)

T e x t B a c k g r o u n d ( fon- inv) ; Wr i t e ( ’ MACROENCQMBLQDOR ’ ) j

W r i t e ( * X n i c i a r l a e jecuc ion del. ’) ; Writ.e(’Macroensamblador UQMJCRO, ’ ) ; W r i t e i ’ p r e v i a d e f i n i c i o n de los’); W r i t e ( ’ a r c h i v o s f r r e n t e y dest ino. ’ ) ;

T c x t H a c k g r n u n d (fondo) 3

T e x t . B a c k g r o u n d ( fon. ,_ inv) j W r i t e ( CONSULTAS ’ 1 5

T c x t B a c k g r o u n d (fondo) ; W r i t e ( ‘ C o n s u 1 t a de un arch ivo ’ ) ; i 4 r i t e ( ’ r J e t . ex t .0 , como lo son’); .~. ,I_ .... I -. .. -- - -----.,I _I,_ I___...-. .

Page 50: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

EN3 j 5 ! K G 1 I,!

C u a d r r ! í 1 ’f $ 6 , 4:!* 12) ; ?ex CCnl. nr’ ! t F Y . ~er r ) ; G o t o x y ( 7 3 , 6 ) ; I r l r i i :e ( . ’ S M I D A ’ i ;

G o t O x y ( s 6 , R ) j W r i t e ( ’ A b a n d o n a r s e s i o r i a c t u a l ” 1; GotoXy(Ih,9); M a c r o e n s a m b l ador:’ ) ; B o t o x y ( l 6 , l O ) ; Wr i te ( ’ l . J f lM ICR0, V e r s i o n 1 . 1 ’ )

Te:: ! . f i sc I;qroi.irid í f c ~ . . i nv) ;

?E.I:.tC01nr (t.C:<t..D) ; Te:ctBackgr.ound (fondo) 2

Idr i t e ( ’ de l

END End ; .: C a s e 1 Window(3,h,78,24)

END;

PROCEDIIRE l...ee-Opcion iVAR ncim : INTEGER) ;

VAR OPC : ARRAYKI . .S I OF CADENA; t e c l a : CHAR; antes : INTEGER;

B E G I N O P C t l . 3 := ’ A y u d a 7 .

OPCC21 := ’ D e . F i n i r a rch ivos ’; OPCK33 : = ’ M ñ c r n e n s ñ m h l ador ’ ; OPCC47 := ’ C o n s u l t a A r c h i v o ’ ; OPCC51 := ’ F i n de sesinn. ’; R e p e a t

ant.t.5 : = riuni; I n f o r m a ( n u m ) ; T e x t . C n l o i - ( t e x - i n v ) ; D o t o x y ( C I , 7 + n u m ) ; W r i t e ( O P C C n u m 1 ) ; R e p e a t

T e x t . B ñ c k q r o u n d ( fon-inv) ;

R e a d ( # b d , t e c l a ) ; t e c l a := Upcase(tec1a); If N O T ( O R D ( t e c 1 a ) I N C13,27,65,h8,67,70,771) then

C o n i do Unt i. 1 ORü í t e c 1 a) I N C 13,27,65,68,67,70,77 1 5 Case O R D c t e c l a ) of

27 : I f NOT K e y p r e s s e d t.hen Son i do

B E G I N e1 5P

R e a d ( K b d , t e c l . a ) ; C a s e O R D t t e c l a ) of

72 : I f n u m = 1 then ni.rm := 5

nirm - I ; e lse nirm := 80 : n u m := ( n u m NOD 5 ) + 1 ;

e l s e Sonido End C Case 3

END; hS : inum := I ;

77 : n u m := 3; h7 2 n u m := 4; 70 : n u m := 5;

hB : l l i l ln : = 2 ;

End; C C a s e 1, I f nirm = 1 then

e l se opcion I = OPCCnumIC21; T e x t . C o l o r ( t . e x t . 0 ) ; G o t a x y ( 9 , 7 + antes); W r i t e ( O P C C a n t e s 1 ) 5

ripcinn := ’ A ”

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

l l n t i l O R D ( t . e c l a ) = 13 END;

Page 51: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

. e .I

b.

r*

r- L

F

L

P

i

L

RFC; I r4 .: Comienza Programa P r i n c j p a l 3 Mcni tcrj P13i co; Mer:ii_Opci ones; 1 j i-ea . -. ahiondcina : = TRI.IE; nirm,,-npn z c = 1.;

.- ) ) . opc.:ion := 'a ' ; Fie[:! ea?,

!.ee._íJpci on (num_.opc 1 ; Case opcion nf

'R' : !Flyuda; 'D' : Def i ne-Clrchi vos; 'M' : :Macroensambl ador; 'C ' : Consulta; 'F' : IFin-Cesion

End 4 Case > U n t i l opcioil = 'F'

END.

Page 52: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

j c - '. c

I

I i -

! l..-

Page 53: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

I_

Page 54: 148.206.53.84148.206.53.84/tesiuami/UAM LOTE 5/UAM21149.pdf · Este procedimiento es conocido comhnmente como expansibn de MACROS. ... pr0gramacib.n en lenguaje ensamblador, como

c

ZRUOR I