tesis de grado previa a la obtenciÓn del titulo de...

365
TESIS DE GRADO PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIEROS EN ELECTRÓNICA Y TELECOMUNICACIONES DEPURADOR DE PROGRAMAS PARA EL MICROPROCESADOR 18086 FERNANDO ORTEGA LÓPEZ IVAN ORDOfíEZ REINOSO ESCUELA POLITÉCNICA NACIONAL

Upload: duongdan

Post on 27-Jan-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

TESIS DE GRADO PREVIA A LA OBTENCIÓN

DEL TITULO DE INGENIEROS EN

ELECTRÓNICA Y TELECOMUNICACIONES

DEPURADOR DE PROGRAMAS PARA EL

MICROPROCESADOR 18086

FERNANDO ORTEGA LÓPEZ

IVAN ORDOfíEZ REINOSO

ESCUELA POLITÉCNICA NACIONAL

I. INTRODUCCIÓN.- 7

1.1. Justificación del terna.- . . . . . . . . . 7

1.2. Planteamiento de objetivos.- 9

II. FUNDAMENTOS SOBRE EL DOS Y EL BIOS.- 11

2.1 Fundamentos del DOS.- 11

2.2 Funciones del DOS.- 15

2.3 Funciones del BIOS.- . . . . . . . . . . . . 16

III. DESARROLLO DEL SOFTWARE.- . . . . . 15

3.1 Definición del problema.- 18

3.2 Desarrollo del programa principal.- . . . . 22

Desarrollo del controlador de flujo . . . . 27

Macros de comandos en el controlador de

flujo 44

La rutina de escape opcional 51

Flujo del depurador 52

3.3 Desarrollo de las funciones: módulos

individuales.- 58

Módulo Flujo. Asm 58

Módulo Pro. Asm 58

Módulo Desens.Ásra 59

Módulo Assem.Asm 60

Módulo Ejecutor. Asm ; • • ^8

Módulo Memory.Asm 73

3.4 Integración de módulos.- 74

IV. EJEMPLOS TÜTOR1ALES: EXPERIMENTACIÓN Y RESULTADOS 79

4, i Una sesión típica de laboratorio 79

4.2 Ejemplos de depuración de programas . . . . 30

Programa i 81

Programa 2 86

4.3 Pro.Sxe: Una herramienta de investigación . 92

V. CONCLUSIONES Y RECOMENDACIONES 100

A P É N D I C E S A P I

A. DIAGRAMAS Y LISTADOS A l

B, MANUAL DEL USUARIO B 1

Archivos necesarios para el depurador.- . . B 1

Adaptación al tipo de monitor.- B 2

Ingreso al programa.- B2

Pantalla del Depurador.- B3

. a) Ventana de código.- B 3

b) Ventana de Registros.- B 4

c) Ventana de banderas.- B 4

d) Ventana principal de memoria.- B 4

e) Ventanas secundarias de memoria.- . B 4

f) Ventana de línea actual.- B 5

g) Ventana de Stack. - B 5

Opciones en los menúes.- , E 5

a) Archivos.- B 6

b) Información.- B 7

c) Depurador, - B7

d) Termina. - BIO

Teclas de Función.- Bli

Macros. - Bi2

Limitaciones de PRO.EXE.- B14

C. ESPECIFICACIONES DEL MICROPROCESADOR 8086 . , C 1

Registros . . . . . C I

Modos de direccionarniento C 5

D. LLAMADAS A FUNCIONES DEL DOS Y DEL BIOS . . . D i

Funciones del BIOS.- D I

Funciones del DOS.- D 3

E. EL GENERADOR INTERACTIVO DE VENTANAS . . . . E l

F. EMPLEO DEL CONTROLADOF. DE FLUJO . . . , . . _ . F 1

BIBLIOGRAFÍA.- , EL 1

El tema desarrollado por nosotros como tesis responde

a lina necesidad de nuestra Facultad (y tal ves, de otras

facultades e inclusive otras instituciones educativas en

el país), que es la de contar con un depurador para los

microprocesadores de la serie del Í8086 amistoso al

usuario y de fácil utilización; dicho inicroprocesador es

de uso muy extendido, pues constituye el cerebro de las

computadoras de la serie de IBM PC y compatibles, que' son

las computadoras personales más vendidas en nuestro pais,

y para las cuales se desarrolla la gran mayoría de nuevos

paquetes de software; además, son las máquinas con las

cuales contamos en la Facultad, y en ellas se desarrolla

algo de software en lenguaje ensamblador. Creemos que el

paquete que presentamos en esta tesis favorecerá el

desarrollo de este tipo de software, pues es una muy- útil

herramienta de depuración; además, podrá ser utilizado

corno base para el laboratorio de Microcomputadoras II,

para el cual no se contaba hasta el momento con un

depurador apropiado (en Microcomputadoras I se tiene el

AVSIM 280, para el microprocesador Z80).

Introducción

Podemos comparar nuestro paquete con otros

depuradores existentes en el mercado: DEBUG, parte

integrante del DOS, y Codeview, proporcionado con el Macro

Assembler 5.0 de Microsoft:

El primero es un programa interactivo pero no

orientado a pantalla, es decir. no tiene actualización

automática de código ni de senas de memoria, y solo

presenta la información explícitamente solicitada por el

usuario, a excepción del contenido de los registros, Que

se presenta cada ves que se ejecuta una porción del código

del programa que está siendo depurado. Por otro lado,

utilisa la pantalla normal de video para presentar sus

resultados, por lo que interfiere con el programa del

usuario si éste trabaja con el video.

El segundo es un depurador de uso general para

lenguajes de Microsoft, que tiene actualiaación automática

de código, pero no de zonas de memoria; tiene varias

ventajas de depuración, como la posibilidad de colocar

puntos de ruptura en el código y otras, pero es de uso

algo complejo, y requiere de memorisación de comandos,

Nuestro paquete, al que hemos denominado 'PRO', es

específico para programas en lenguaje de máquina, pero

Introducción

presenta muchas ventajas, además de la facilidad de

maneje, corno la posibilidad de manipular memoria, código y

archivos en forma sencilla, y además tiene muchas ventajas

de depuración, como puntos de ruptura visibles en el

código y accesibles a través de una tabla, ejecución hasta

el cumplimiento de una -condición determinada; posibilidad

de no ingreso a subrutinas y varias otras.

Por todo ésto creemos que el tema esté bastante bien

justificado, y esperamos que se constituya en una

herramienta útil para el desarrollo de software en

lenguaje ensamblador.

e objetivos. - -

SI ..objetivo de esta tesis es la elaboración de un

depurador para programas escritos en lenguaje de máquina

•del microprocesador 8086 de INTEL, basado en el sistema

operativo DOS . El programa debe ser amistoso al usuario ,

es decir, de fácil utilisación y de rápida f ainiliarisación

para nuevos usuarios, a fin de que sea una herramienta

didáctica y profesional útil.

II^_EDNDAMENTOS SOBRE EL DOS Y EL BTOR.-

Fundamentos ..

El DOS (Disk Üperating System) es un sistema

operativo, desarrollado por .la . casa .Microsoft para IBM, y

se creó a propósito de la salida al mercado de la IBM PC

original. La versión i.O del DOS era simplemente un CP/tó

(sistema operativo muy popular basta entonces, para

máquinas basadas en Z80 u SOSO) traducido al lenguaje del

microprocesador de aquella máquina, el 8088, A partir de

entonces se liberaron varias actualizaciones del paquete,

pero solo se hicieron cambios realmente importantes desde

la versión 2. 10, y a partir de la 3. 00 se incluyó un nuevo

conjunto de . servicios manejadoras de disco. Es a ésta

versión y a las posteriores a las que nos referiremos de

aquí en adelante.

El DOS consiste en cuatro componentes;

a) El registro de inicialisación: Comienza en la pista O,

sector 1, lado O de todo diskett-e que esté en formato DOS,

y se coloca allí para producir un mensaje de error si se

intenta cargar el sistema operativo desde un diskette que

no lo contiene. En discos duros, este registro reside en

11

Fundamentos

el primer sector de la partición del DOS. Todos los medios

soportados por DO? tienen un .sector para registro de

inicialización.

b) La interfaa con el ROM BIOS: El archivo IBHBIO.COM

desempeña este papel, proveyendo una interfas de bajo

nivel con las rutinas manejadoras de dispositivos del ROM

BIOS.

c) El archivo de programa del DOS: Este archivo es el

IBMDOS.COM. Provee una interfas de alto nivel para

programas de usuario. Consiste en un grupo de rutinas de

manejo de archivos, manejo de disco, y una variedad de

funciones fácilmente accesibles por programas de usuario.

Cuando un programa invoca a una de estas rutinas, estas

aceptan información de alto nivel en contenidos de

registros o de . bloques de memoria. Para operar

dispositivos, las funciones traducen los requerimientos en

una o más llamadas a la interfas de bajo" nivel IBMBIO. COL'í.

d) El procesador de comandos, COMMAND.COM: Consiste de las

siguientes part.es:

Fundamentos

Una porción residente, que se instala en memoria

ininediatainen-oe a continuación del IBMDOS.COM y su

área de datos. Contiene los servicios de las

funciones de terminación y de manejo de errores,

rutinas para cargar la parte transitoria del

COHMAND.COM, y la rutina para cargar y ejecutar

comandos externos, es decir archivos con extensiones

.COM o .EXE.

Una porción de inicialiaación, que sigue a la porción

residente y toma el control durante la

inicialisación. Esta porción contiene la rutina que

procesa al A0TOEXEC.BAT, y determina la dirección de

segmento en que se pueden cargar programas. Esta

porción es destruida en cuanto COMMAND.COM carga un

programa tras la inicialiaación, pues ya no es

necesaria, y la memoria que utilizaba es ocupada.

Una porción transitoria, que se carga en el extremo

más alto de la memoria. Este es el procesador de

comandos en si, que procesa todos los comandos

externos y los archivos de extensión .BAT. Además,

produce la señal de espera de comandos del DOS ' (como

A>), lee el comando del teclado (o del archivo .BAT),

13

Fundament-os

y lo ejecuta. Para comandos externos, construye una

linea de comandos y llama a la función EXEC para

cargar y transferir control al programa.

El sistema operativo se inicialisa cada ves que se

realisa un reset o que se enciende la máquina. Primero, el

ROM BIOS toma el control, y busca el registro de

inicialización en la unidad A. De no encontrarlo, busca la

partición activa en el disco duro. Una ves encontrado

dicho registro, es leido a memoria y se le pasa el

control. Este busca entonces en el directorio raía a fin

de asegurarse de que los dos primeros archivos son el

IBMBIO.COM y el IBMDOS.CQM. Entonces, se carga en memoria

el primero de estos" archivos y se le transfiere el

control.

Be inmediato, 1BMBIO.COM carga IBMDOS.COM, determina

el estado de la máquina, inicializa los dispositivos

periféricos, carga los manejadores de dispositivos (device

drivers), crea la parte baja de la tabla de vectores de

interrupción, relocaliaa IBMDOS. COM más abajo en memoria e

invoca al primer byte del DOS.

14

Fundamentos

Entonces, el DOS inicialisa sus tablas internas de

trabajo y ios vectores de interrupción desde el OFK hasta

el 3FH, y crea un prefijo de segmento de programa (Program

Segment Prefix, de aquí en adelante referido como PSP).

Finalmente, IBMBIO.COM utilisa la función EXEC para

cargar y ejecutar el procesador de comandos de alto nivel,

normalmente el COMMAND.COM. Este procesador contiene,

además, un inane jador de errores críticos (accesible

mediante la interrupción 24H), que da al usuario las

opciones de abortar, reinT.entar o ignorar cuando se

produce una falla. El usuario puede utilizar un manejador

propio de errores interceptando la interrupción 24H

(mediante la función 25H del DOS, Set Vector).

2.2 Funciones del DOS.-

El DOS proporciona al usuario un conjunto de

funciones y procedimientos de alto nivel, accesibles

mediante la interrupción 21H, que permiten inane jar

dispositivos, memoria, subprocesos y otros. Se ejecuta

cada función proporcionando su número en el registro AH,

los parámetros requeridos en otros registros, según cada

15

Fundamentos

función, e invocando a la interrupción. Algunas funciones

de manejo de archivos requieren de lo oue se denomina un

'ASCIIZ' , que es una tira de caracteres terminados con un

O, que suele representar al identificador de un archivo;

por ejemplo, la siguiente linea de un programa en Assewbly

es un ASCIIZ:

nombre db "c:\dos\keybsp.com',O

Contarnos con • documentación de funciones numeradas

desde la O hasta la 62H, y en el apéndice D exponemos

brevemente las más importantes utilizadas para la

elaboración del programa objeto de la presente tesis.

2.3 Func-lones del BIOS.-

El EOM BIOS proporciona servicios de bajo nivel de

control de dispositivos tales como el teclado, el video, y

los controladores de disco. Normalmente, el prograroador

puede prescindir de estos servicios y utilizar únicamente

las funciones del DOS antes expuestas, pero el uso directo

del BIOS es aconsejable en ciertos casos, cuando se desea

tener programas muy rápidos y eficientes. Estos servicios

16

III. DESARROLLO DEL SOFTWARE,^

Los productos disponibles en nuest.ro medio para

depuración de programas escritos en lenguaje Assembler del

8086 tienen inconvenientes que fueron ya señalados en la

introducción. Son las dificultades que esos depuradores

presentan las que proporcionaron las metas para el

programa que hemos desarrollado. El depurador debe ser de

fácil uso, de rápida familiariaación, y debe mostrar en la

pantalla los elementos del raicrocomputador que interesan a

quien escribe programas en lenguaje de bajo nivel:

registros, banderas, memoria y código, siempre

actualisados y en forma simultánea.

El objetivo inicial fue hacer un programa que realice

las funciones básicas de depuración: desensamblar código,

presentar registros, banderas . y memoria, ensamblar

instrucciones, correr el programa en prueba en varias

modalidades (como paso a paso o ejecución hasta una

dirección o ejecución total), colocar puntos de ruptura,

etc. .. Para facilidad del usuario decidimos que el control

sea en base a menúes y que los resultados se presenten en

18

Desarrollo

áreas (ventanas) de la pantalla destinada cada una a un

elemento específico.

Pero este objetivo inicial fue complementado al

empezar la creación del depurador por las consideraciones

que se exponen a continuación:

La etapa de desarrollo de un programa de cualquier

tipo se caracteriza por los continuos cambios, arreglos,

aumentos y eliminaciones que el programa sufre. En el caso

de un programa interactivo con uso intensivo de la

pantalla este problema es rnás agudo por la relativa

complejidad que implica el establecimiento de una

comunicación lógica y sencilla con el usuario del

programa, y que lleve de una manera obvia a la realización

de una función. Muchas veces quien empieza a usar una

aplicación no conoce exactamente la forma de hacer cierto

trabajo y allí el programa debe indicar el camino.

Por los motivos expuestos podemos decir que el

programador emplea gran cantidad de su tiempo y esfuerzo a

tareas que esencialmente son repetitivas: reorganizar el

flujo de su aplicación, mejorar los interfaces que el

programa presenta al usuario, cambiar la presentación de

Desarrollo

su programa, etc.. Pronto se hiso evidente que existían

dos posibilidades para el desarrollo de nuestro Tema de

Tesis:

La primera, más directa, era escribir un flujo

adecuado para el depurador, con todo lo que ésto acarrea:

principalmente una gran cantidad de tiempo destinada a

satisfacer cualquier modificación que la calidad del

programa hiciera necesaria.

La segunda, y por la que finalmente optamos,

consistía en sistematizar el mecanismo de un programa

manejado en base a menúes (un controlador de flujo) y en

crear un medio más fácil de alterar la presentación del

depurador (un generador interactivo de ventanas). Esta

opción implicaba, sin embargo, una etapa previa en las dos

direcciones indicadas para luego volver a la idea central

del depurador. Las ventajas de este método son la

reducción del esfuerzo destinado a las modificaciones, por

profundas que éstas sean,, y, sobre todo, que la etapa

previa da un resultado utilizable por cualquier aplicación

interactiva y orientada a pantalla.

20

Desarrollo

Una vez -terminadas estas dos herramientas vino la

etapa de planificar el flujo del depurador y definir con

claridad que funciones debe realisar el programa. Esto no

significa, desde luego, que no surgieron modificaciones

posteriores.

Luego vino la creación de las rutinas que hacen las

funciones planeadas y su inmediato enlace a un controlador

de flujo. La presentación externa de la función se hiso

sencilla y de calidad utilisando el generador interactivo

de ventanas.

Estas herramientas, sumadas al uso de la programación

modular, permitieron conseguir el objetivo de flexibilisar

la extensa etapa" de creación y modificación del depurador.

Esta descripción de la forma en que realizamos la

Tesis indica cuál fue nuestra definición del problema y el

método que seguimos. Las partes descritas arriba serán

desarrolladas en los próximos puntos.

21

Desarrollo

3.2 Desarrollo del programa

El núcleo del depurador es el controlador de flujo.

Es el encargado de mantener información sobre todas las

opciones del programa. Invoca a las rutinas en el momento

adecuado y recibe de ellas el control cuando han

terminado.

La idea del controlador de flujo nace de un breve

análisis de qué es lo que hace un programa interactivo

manejado por medio de menúes. Al empezar la ejecución se

inicialisan ciertas variables , se leen archivos , en fin ,

se realizan tareas que son la base para el trabajo

posterior. Luego se presenta un menú en el cual podemos

elegir alguna de sus opciones. Es posible que la opción

nos lleve a un nuevo menú o al mismo del cual partimos ,

hay muchas posibilidades, pero lo importante es que una

vez que entramos en el primer menú el medio que se

presenta al usuario es el mismo y será el mismo esté en el

menú que esté.

Este medio es el que se puede sistematizar- Pasada la

rutina inicial el programa se transforma en una especie de

lazo en el que pocas variables diferencian un estado de

22

Desarrollo

otro: El nivel o profundidad en que ríos encontramos

respecto del menú principal y la posición de una opción

dentro del árbol formado por opciones y subopciones.

Finalmente, cuando se quiere terminar el trabajo con

el programa, se debe realisar alguna rutina final, como

grabar algún archivo, dar mensajes, etc..

Cuando al usuario se le presenta un menú puede tornar

alguna de estas acciones:

- Puede presionar una de las flechas y moverse a una

opción contigua.

- Puede digital" la tecla ENTER entrando con ésto a

cumplir rutina asociada a la opción sobre la que

estaba ubicado y luego a recibir el tratamiento

adecuado de acuerdo al tipo de función de que se

trate. De ésto hablaremos, con mayor detalle, más

adelante.

- Puede digitar la letra clave de una opción, con lo

que entra directamente a esa opción sin necesidad de

ubicarse sobre ella. Realiza la rutina asociada y

23

Desarrollo

luego recibe el tratamiento adecuado al tipo de

función.

- Cualquier otra alternativa no es tomada en cuenta.

Una ves ejecutada la rutina asociada a una opción

existen varias alternativas (A ésto se referían las

palabras "tipo de función" indicadas anteriormente). Estas

alternativas son:

- Se cumple la rutina asociada y se regresa al mismo

menú que contiene la opción. Estas rutinas podrían

llamarse "normales".

- Se cumple la rutina asociada y se emerge un nivel

en el árbol de opciones, es decir, se transfiere el

control al menú "padre" del que contenia la opción.

Estas funciones serán llamadas "inversas".

- Se ejecuta la rutina y se profundisa un nivel,

mostrando un nuevo menú, "Hijo" de la opción que fue

digitada. Estas opciones son del tipo "rama".

En cualquiera de estos casos la rutina asociada puede

no realisar ninguna función (rutina "dummy") más que la de

24

Desarrollo

devolver el flujo al controlador. Est.o facilita muchísimo

la prueba de los módulos que se van desarrollando para el

programa, pues, mientras ellos no existan, una rutina

dummy tornará su lugar, y cuando estén listos podrán ser

probados de inmediato. Además, puesto que el flujo ya está

definido, la posición que la rutina pase a ocupar en el

programa será la definitiva) sin importar la inclusión

posterior de otros módulos.

Este seria un cuadro bastante rígido de un programa

interactivo. En la implementación tomada en esta Tesis

existen o^cras características para mayor facilidad de uso*

El menú aparece en la penúltima linea de la

pantalla (línea 23) y"una explicación sobre la opción

actual en la última línea (la 24).

Una tecla (ESC), permite siempre salir al nivel

superior de menúes. Si se esté en el menú principal,

ESC significa que se desea salir del programa. En

todo caso se hace una pregunta para confirmar esa

decisión.

25

Desarrollo

- Una combinación (Ctrl-0 o "O), presenta una ventana

sobre la opción en la que estamos ubicados

actualmente con las subopciones que ésta posee, si

existen. En el momento que aparece esa ventana de

subopciones, las flechas hacia arriba y hacia abajo

son aceptadas para moverse en ese menú.. La

explicación que aparece en la línea 24 es la asociada

a la subopción en la que estamos actualmente. Si se

presiona ENTER sobre una subopción se ingresa a la

opción que la contiene y el cursor queda ubicado

sobre la subopción seleccionada, listo para que una

nueva presión de la tecla ENTER la mande a ejecutar.

El mismo "O desactiva la ventana de subopciones si no

se la necesita.

- Una combinación (~P), presenta una ayuda acerca de

la manera de manejar los menúes.

- La combinación "K permite ingresar a las opciones

de macros que el cont-rolsdor de xlujo provee:

grabación, prueba, corrida y eliminación de macros.

Esta opción solo puede ser invocada desde el menú

principal, por razones que en su momento se

expondrán.

26

Desarrollo

- Una última característica, muy úüil, es la llamada

"rutina de escape", que es la posibilidad, a criterio

del usuario del controlador de flujo, de tener una

opción del menú que reciba como dat,os todas las

teclas que se hayan digitado y que no sean opciones

válidas del menú.

Desarrollo del controlador de flujo.

En el apéndice A consta el diagrama de bloques del

controlador. Lo primero que anotaremos es que el flujo y

el tamaño del mismo son constantes, independientes de la

magnitud de la aplicación que va a ser controlada, y que

la explicación es también general. Los detalles del

programa, ya en profundidad, son comentados en los

listados. Aquí solo indicaremos las funciones que los

distintos bloques realizan, no la manera cómo lo hacen.

En este programa se usó una técnica soportada por el

Macro Assembler 5.O que es la de usar roacros de

instrucciones. Un macro, en este contexto, es un conjunto

de nemotécnicos que se define una ves y luego puede ser

27

Desarrollo

llamado con solo escribir su nombre, como si fueran nuevos

nenotécnicos del lenguaje. En la definición de un roacro se

puede indicar parámetros, que son reemplazados al momento

del ensamblado.

Por ejemplo, vamos a hacer un rnacro llamado PRUEBA

que pone un valor X en el registro AL y X+l en el registro

BH. La definición del inacro sería la siguiente:

prueba raacromovIflOV

incendm

X

al , xbh.xbh

Las palabras MAGRO y ENDM son las que determinan que

PRUEBA es un inacro. X es un parámetro que puede ser puesto

por el programador, y puede ser un valor inmediato, una

localidad de memoria o un registro. Dada la forma en que

ha sido usado, X debe ser un byte (8 bits). Invocaciones

válidas a este macro serían:

prueba 5prueba elprueba valorl ;siendo VALOR1 un byteprueba byte ptr [si]

28

Desarrollo

Invocaciones inválidas serían:

prueba 1234 ;mayor que Offhprueba dx ¡registro de 16 bitsprueba word ptr [si] ; 16 bits

Es importante el hecho de que un rnacro se define en

el tiempo de ensamblado, no en el de ejecución. Esto

significa que si hay N llamadas al macro, el

correspondiente código aparecerá N veces, solo con las

alteraciones producidas por los parámetros. En los puntos

siguientes hablaremos de los macros como funciones y, para

abreviar la notación, presentaremos los parámetros entre

paréntesis aunque, recalquemos ésto, no es ésa la manera

de llamar al macro.

Con esta explicación pasaremos" a describir algunas

variables y macros, su uso o su función:

- Nivel: variable que indica la profundidad a la que

está el menú actual clentro del árbol de opciones y

subopciones del programa. El menú principal tiene

NIVEL - 0.

Nivell: variable, indica la profundidad de la

p-pción actual. Es igual a NIVEL + 1.

23

Desarrollo

Nivel2: variable, indica la profundidad de la

subopclón actual. Es igual a MIVELI -í- 1.

X: variable, indica la posición de la o PC ion

actual , aquella sobre la que nos encontramos

ubicados, La primera opción de un menú tiene X = 1.

- Y: variable. Indica la posición de la subonción

actual. Si la opción no tiene subopciones , o si la

ventana de subopciones no está habilitada o si el

cursor de subopciones no está sobre ninguna de ellas,

Y vale 0. En ot,ro caso Y vale 1 para la primera

subopción y sucesivamente para las siguientes.

- Buffer: variable de 8 bytes. Es una secuencia de

números que describe la manera corno se llegó al menü

actual. Cada número se va almacenando en medio byte

(uri "nibble"), en orden desde' el menos significativo.

El menú principal, por ejemplo, tiene su nibble menos

significativo igual a 1 y el resto son ceros. Si allí

se eligió la opción 6, el buffer tendría este valor

en su siguiente nibble y así sucesivamente.

30

Desarrollo

- Bufferi: variable de 6 bytes similar a BÜFFER, pero

en la que se ha incluido la opción actual X en el

nibblfe cuyo número está dado por NIVEL1. Los nibbles

más significativos siguen llenándose con ceros.

Burfer2: variable de 8 bytes similar a las

anteriores, con la adición de que incluye la

subopción actual Y en el nibble cuyo número está dado

por NIVEL2. Nótese que si Y - O , BUFFER1 y BÜFFKK2

son iguales.

Tabbuf: la manera cómo el usuario indica al

controlador de flujo la roanera de correr su

aplicación- es creando una tabla, llamada TABBUF. Esta

tabla contiene los buífers que indican cómo llegar a

cada opción del programa. Esos buffers se construyen

igual que lo indicado anteriormente para la variable

SOFFSR.

- Tabinf: es una tabla creada también por el usuario

en la que constan las direcciones de las

explicaciones, menúes y rutinas asociadas a cada

opción, asi COIDO el tipo ' de opción de la que se

trata, codificada de esta "forma: Normal = 1, Reversa

31

desarrollo

- 2 y Rama = 3. Er¿ total se destinan 7 bytes (3

words y i byte) para cada opción. Esta tabla debe

guardar estrictamente el misino orden de TABBUF para

que el programa funcione corno es debido.

- Nclave; variable. Indica la posición de BUFFER en

la tabla TABBOF y, por consiguiente, la posición de

la información asociada a la opción en la tabla

TABINF.

- Nclavel y NclaveE: variables. Indican lo raisrno que

NCLAVE para BDFFER1 y BUFFER2 respectivamente.

- Bmac: bandera que indica que se está corriendo o

probando un rnacro de comandos del programa. Los

macros de comandos serán discutidos más adelante en

detalle.

- Bgiaac: bandera para indicar que se está grabando un

roaero,

- Bver: bandera que indica que se está probando un

raacro.

32

Desarrollo

- Bopc: bandera que sirve para saber si hay que

mostrar o no la ventana de subopciones. 'O la pone en

i y O alternativamente.

- Buida (var, buf): rnacro que busca la ubicación de un

buffer cualquiera BUF en TABBÜF. Entrega su resultado

en una variable cualquiera VAR. Con esta función, por

ejemplo, encontramos NCLAVE en base a BUFFER.

- Movbuf(buf1,buf2): macro que copia un buffer BÜF2

en BÜF1.

- Nunivel(buf,niv,val): macro que coloca el valor VAL

(que debe ser menor que 16 para caber en un nibble)

en el buffer BUF, en el nibble cuyo número lo da NIY.

Sirve, por ejemplo, para construir BUFFER1: copiamos

BUFFER y luego incluirnos X en BOFFER1 con esta

función.

- Explica (TI) : este raacro presenta en la linea 24 la

explicación, asociada al N-ésimo buffer de TABBÜF.

Menuvent(n): macro que dibuja una ventana que

33

Desarrollo

contiene el menú asociado al N-ésimo buffer de

TAEBDF.

- Menulinea(n): macro que pone en la linea 23 el menú

asociado al N-ésimo buffer de TABBUF.

Rutina(n): ordena la ejecución de la rutina

asociada al N-ésimo buffer de TABBUF.

- Retorno: macro que devuelve el control del flujo

una ves que la rutina del usuario ha terminado.

Opción?: es quisa la parte más crítica del

controlador. Eeci-be datos del teclado, determina cuál

fue la opción "(flechas, ENTER, ESC, ~G,-"P, ~K u

otra) y da un valor de salida que indica esa opción.

Como lo veremos más tarde, tiene un papel ruuy

importante en el manejo de los macros de comandos.

- Actuar: permite saltar a la AL-ésima dirección de

una tabla de direcciones. La rutina anterior y ésta

forman el núcleo del controlador.

34

Desarrolle

- Statusf: muestra en e3 extremo derecho de la linea

23 el status del controlador, que puede ser : Normal,

Macros, Grabando macro, Probando inacro o Corriendo

ma ero.

- Statusv; muestra una secuencia de 6 caracteres dada

por la aplicación en el extremo derecho de la línea

24. Este es el único acceso del programa controlado a

la linea 24 mientras se están mostrando los menúes.

Aquí se podría mostrar el status del programa o algún

valor que se estime necesario presentar

simultáneamente con el menú y las explicaciones.

- Válida?: Analiza si una tecla pulsada que no es una

flecha, ni EÍÍTER, ni ESC, ni "O, "? o "K es, en

cambio, una opción válida del menú actual. Si así

ocurre al salir AL-tiene el número de la opción y la

bandera de cero (ZF) está en 1.

Existen muchas otras variables y macros pero son los

descritos anteriormente los que realmente influyen en el

comportamiento de.l programa, cuya descripción ernpeaamos

(ver diagrama de flujo Al en el apéndice A).

35

Desarrollo

Lo primero que se hace es, entre otras cosas,

ar la dirección de ia memoria de videc y limpiar

la pantalla. Enseguida se llama a la rutina inicial del

usuario para Que el realice las tareas que sean necesarias

antes de entrar al laso principal del programa.

Luego se continúa mostrando una pantalla de ayuda

para que el usuario que no está muy familiarizado con el

programa sepa cómo manejar los menúes y las opciones

especiales. Después se colocan valores adecuados a las

variables y buífers. Por ejemplo, se pone NIVEL en O,

todas las banderas de rnacros en cero, la bandera de

subopciones en 0. Se iniciaiisa BUFFSB con un i en el

nilVbie rítenos significativo y. el resto ceros, para que a.1

inicio pasemos, como es obvio, al menú principal. Además,

para que la opción actual al iniciarse el programa sea la

primera del menú principal, se hace X~l y se pone un 1 en

el nibble menos significativo y en el siguiente en

BÜFFEE1.

En este momento entramos al laso principal. En el

programa este punto está marcado como "a_nivel" porque

cada vez que cambiamos ^de nivel debemos venir a este

sitio. Acá debemos llegar ya con el valor - de X definido

36

Desarrollo

(esa será la nueva opción actual), y no haremos más que

poner Y=ü para que el buffer de la subopción actual

coincida forzosamente con el de la opción actual.

Luego pasamos a un punto llamado "b_subnivel" en el

programa. El nombre se debe a que cualquier acción que no

produzca un cambio de nivel, como digitar una flecha,

pedir la pantalla de ayuda, o la ventana de subopciones, o

correr una rutina de tipo "normal", etc., debe regresar a

esta dirección. Acá ya deben llegar X y Y listos.

Cornensamos encontrando la posición de BUFFER en

TABBÜF (en la variable NCLAVE). Hacemos NIVEL1 = NIVEL + i

y construimos BUFFERl copiándolo de BUFFER y añadiéndole

el valor X en el nibble dado por NIVEL1. Procedemos de

manera similar para construir BUFFER2. Encontramos las

posiciones de ambos bufiers y las guardamos en NCLAVE1 y

NCLAVE2. En este momento BÜEFER2 está asociado a la

subopción actual, la que debe ser explicada al usuario del

programa. Si BÜFFERI = BUFFER2, entonces sus números

clave serán iguales y se verá la explicación de la opción

actual. En todo caso se realiza la función

Explica(Nclave2).

37

Desarrolle-

Pesamos al sitio etiquetado como "e_ventaria" en el

lisT-aac. Aquí ¿.e 1^3 el estado de la bandera BOPC para ver

si se debe mesurar o no la ventana de subopciones, si la

opción actual las tiene. Esto se hace con la función

Henuvent(ÑolaveiJ. No se muestra una ventana si las

subopciones no existen. Antes de mostrar la ventana se

preserva las 23 lineas superiores de la pantalla, pues le

pertenecen a la aplicación,

De nuevo estamos en un lugar de paso obligado C"b_s5"

en el programa) en el cual se presenta el menú en la linea

23. Este menú es el asociado a BUFFER, por lo cual se

llama a la función Menulinea(Nclave). Luego se muestra el

status del programa por medio de"Statusf y Statusv.

En al dirección etiquetada como "c__opción" se acepta

desde el teclado la elección del usuario. Con el valor que

Opción? entrega varóos a la función Actuar para saltar a la

rutina respectiva. Hablaremos brevemente sobre cada

posibilidad.

Si el usuario digita "flecha a la izquierda" o

"flecha a la derecha" hay que aumentar o disminuir X,

según al caso. Si se llega a uno de los extremos del menú

33

Desarrollo

hay que pasar al otro directamente. Hace Y = O siempre. No

es permitido el valor X = 0. Luego se salta a b_subnivel.

Si se ha digitado "flecha arriba" o "flecha abajo" se

debe ver primero si BOPC vale 1 (con lo que es posible que

haya una ventana de subopciones). Si ésto no ocurre, se

regresa a pedir desde teclado una nueva opción. Además se

debe chequear si la opción actual tiene o no subopciones.

Solo si se han pasado estos dos controles se entra a una

rutina que aumenta o disminuye Y. Igual que en el caso de

las otras dos fleches, si se llega a uno de los extremos

se debe saltar al otro. Si es permitido el valor Y = O, en

cuyo caso los buffers de la opción y la subopción son

iguales. Al acabar se regresa a b__subnivel.

Si se dígita "O se cambia el estado de la bandera

BOPC,de 1 a O y viceversa. Esto hace que en la parte

correspondiente del flujo se muestre la ventana ds

subopciones de la opción actual. Puesto el valor de la

bandera, se salta a b_subnivel.

Si se digita "P se presenta una pantalla de ayuda

sobre la manera de usar el programa. Luego se espera q.ue

39

Desarrollo

se pulse alguna tecla para restaurar la pantalla del

programa y saltar finalmente a la dirección b_subnivel.

Existen dos formas de ingresar a una rutina. La

primera es pulsar la tecla. EHTER. En este caso empezamos

por incrementar NIVEL e incluir X en BUFFEP (Esto hace

BUFFER = BOFFER1). Si Y era distinto de O antes de entrar,

ese valor pasa a X en el nuevo nivel. Si Y era O, pero la

opción era de tipo "rama", el valor de X será 1. Luego de

colocar estos valores se salta al mismo punto al que se

llega directamente si no se cumplió ninguna de las

condiciones anteriores. Esta dirección tiene la etiqueta

"c_002" en el programa. Pocas lineas después hablaremos de

lo que ocurre en esta dirección, pues"también forma parte

de la otra forma de ingresar a una rutina.

Esta segunda forma es digitar una tecla distinta de

las flechas o ESC o SNTER o "K3 "P o "O. El código ASCII

de la opción digitada es analizado para ver si se trata de

una de las opciones del menú por .la rutina Válida?. Si la

opción no fue correcta se regresa para recibir otra

entrada del teclado. Pero si fue válida el número de

opción regresa en AL y ese valor es ingresado en BUFFER

(previamente se incrementa NIVEL en 1) . Notese que en este

40

Desarrollo

caso EtlFFEF puede no ser igual a BÜFFERi. Para uso

posterior se pone en uno una bandera que indica el paso

por este camino y no por el de la digitación de la T.ecia

ENTES. En este purito está la dirección "c_002" que fue

mencionada hace poco.

En la dirección o_002 se calcula la posición del

nuevo BUFFER formado por medio de la función

Bufcla(Nclave,Buffer). Obtenido NCLAVE se ordena la

ejecución de la rutina asociada a este número clave,

usando la función Rutina(Nclave).

La rutina se corre y al terminar debe devolver el

control por rrjedio del rnacro Retorno. Aquí todavía seguimos

dentro del rnacro Rutina, que por último nos entrega en AL

el tipo de opción que se eligió: 1 para rutinas normales,

2 para rutinas inversas y 3 para rutinas rama. Con el

valor que está en AL se corre el raacro Actuar para cumplir

los pasos respectivos al tipo de opción.

- En la rutinas normales se recuperan las variables

BUFFER . y NIVEL de los respaldos que habían sido

elaborados antes de entrar en la parte en que el

41

Desarrollo

usuario hace su opción. Con los valores previos se

regresa a b_subnivel,

- En las opciones inversas se procede del mismo modo

que para las rutinas normales, pero en lugar de ir a

b_subnivel se salta a "d_supernivel", donde se emerge

al nivel superior. Esta parte del código será

explicada más adelante cuando hablemos sobre la

opción ESC.

- En las opciones rama se ve primero si la forma de

entrar fue por medio de la tecla ERTEB o por una

opción válida del menú. Si esto último fue lo

ocurrido (lo que se puede saber pues se puso una

banderee que indicaba el paso por la parte que atiende

a las opciones válidas del menú) se hace X=I para el

nuevo menú. Recordemos que si lo digitado fue ENTEfí

ya en la parte inicial de la rutina respectiva se

preparó el valor de X. Una ves puesto el valor de X

se salta a la dirección a_nivel.

Otra, de las opciones disponibles es la tecla ESC. Es

•atendida en la dirección d_supernivel, ya mencionada

antes. El nombre se debe a que se encarga se subir un

42

Desarrollo

nivel en los menúes. Esta rutina primero busca en BUFFER

el número de opción que el "padre" tenía en el menú

superior. Luego se introduce un O en el buffer en ves del

úii i roo nibble diferente de O, que representa al inenú del

que se desea salir, se disminuye NIVEL en 1 y se hace X

igual al número de opción del padre en el nuevo menú. El

objetivo de ésto es que al emerger quedemos ubicados sobre

la opción que originó al menú del que salimos.

Al ejecutarse esta parte del código puede darse el

caso de que al disminuir NIVEL en 1 se llegue a obtener

NIVEL = OFFH. Esto significa que estábamos en NIVEL = O y

en este caso ESC o una rutina inversa indica que se desea

abandonar el programa. En este -caso se pide una

confirmación de esa decisión ("Quieres terminar?"). Si la

respuesta es negativa se ponen condiciones similares a las

de iniciación y se salta a a_nivel. Pero si la respuesta

es afirmativa el programa llama a La rutina final de la

aplicación, para que el usuario realice cualquier función

necesaria antes de abandonar el programa. De esta

subrutina se regresa por un simple BETN y de inmediato se

termina el programa.

Desarrolle

Este es el controlador de flujo. Una opción más nos

resta por explicar, pero por ser más compleja que las

otras, requiere, una explicación aparte.

Macros de comandos en el controlador de flujo. La

idea de los macros en este programa aparece porque hay una

rutina central en el programa que se encarga de recibir

las opciones hechas por el usuario. Esta rutina puede

complicarse un poco para que no solo sea capas de leer el

teclado sino que, al detectarse la presencia de la bandera

de macros. pueda leer -cambien de algún buffer presente en

memoria y ejecutar de corrido. Cuando la bandera de

grabación esté "puest-a", la rutina debe guardar las

opciones en un buffer. Cuando la bandera de prueba de

macros esté en 1, debería leer sus opciones del buffer y-

esperar cierta tecla para continuar u otra en especial

para abandonar la prueba.

En el controlador de flujo se ingresa a los macros

con ~K, digitado en el menú principal. Por qué solo desde

ese menú? La razón es la forma sencilla que se ha querido

dar a estos macros, como una simple secuencia de opciones

guardadas en un área de memoria. Así, esta secuencia solo

tiene sentido si su grabación y su ejecución empiezan

44

Desarrollo

desde el misino punto y en las mismas condiciones. Por éso

se elige corno sitio de partida el menú principal y, coirto

se puede notar si se analiza el listado, se hace X = 1 (la

primera opción), Y = O, y se pone la bandera de opciones

en Ü.

El área destinada a rnacros tiene el formato dado en

la tabla 1. El primer espacio es un índice en el que a

cada macro se le destina 8 byces, el primero para

almacenar el número de opciones que tiene el rnacro y los 7

restantes para el nombre del rnacro. Ocho rnacros es el

máximo que se puede tener simultáneamente en memoria

aunque, corno se explicará luego, la aplicación puede hacer

un uso mucho mayor en extensión y en calidad de los

inacros. Desp~üés del Índice está el área de datos de los

macros, en la que se asignan. 64 words a cada uno. Cada

word (2 bytes) contendrá una opción hecha por el usuario

en respuesta a un menú presentado por el controlador de

flujo.

45

Desarrollo

Tabla 1: Área de macros del coritrolador de flujo

Areamac

Offset

018g

5657

64192

960

10881089

Parámetro

# de opciones rnacro 1Nombre macro 1#• de opciones macro 2Nombre rnacro 2

# de opciones macro 8Nombre macro 8

64 words de macro 164 words de macro 2

64 words de macro 8

índice

Datos

# de macro actualContador de posición en macroactual y byte de interfas.

En este momento conviene aclarar que los macros del

controiador solo alroacenan las opciones que son dirigidas

a él, y no los valores, respuestas, etc. ingresados a

rutinas de la aplicación. Sobre ellas no tiene ningún

conocimiento el controiador. Es la propia aplicación la

que deberá manejar esas respuestas.

Al programa que es controlado le es entregado un

grupo de variables declaradas PUBLIC en el controlador,

qué le ayudarán en la propia implementación que cada

programador quiera hacer. Los datos pasados son: AREAMAC,

que es la etiqueta colocada al inicio del área de raacros,

46

Desarrollo

y BMAC, BGMAC y 3VES, que son las banderas de macros.

Aparx.e de la información dada hasta aquí, hay dos byt.es

más de suma importancia para el uso de macros del programa

controlado. Al final del área de datos de los macros está

un byte en que el controlador pone el número de macro que

se está grabando, probando o corriendo. Este da^o puede

ser utilisado por la rutina de sacros de la aplicación

para saber el número de macro actual. El siguiente byte es

el único ifiedio de comunicación entre las rutinas internas

y externas de macros. El controlador usa este byte para

llevar la cuenta de la posición en al que estarnos dentro

del macro, ya sea en grabación o ejecución. Pero si la

rutina externa de macros pone est.e byt-e en OFFH, le indica

a la rutina interna que la aplicación considera imperativo

terminar el macero en ese momento. Es por éso que este byte

es llamado byte de interías. Cada ves que se digit-a "K

este byte se pone en cero, listo para empezar a grabar o

correr macros. No se debe alterar ningún otro valor (como

las banderas) para ordenar al controlador la terminación

del macro.

Otro detalle interesante es este: Hay rutinas,

especialmente de tipo rama, q.ue antes de permitir el paso

al menú del nivel inferior, hacen alguna pregunta o algún

47

Desarrollo

chequeo critico. Si no se pasa este chequeo, no se debería

permitir la prcíundiaación. Pero hasta ahora hemos visto

que el flujo es predefinido y no hemos visto forma alguna

de alterarlo en caso necesario. Esto se puede hacer

cambiando la variable T1PRUT declarada PUBLIC en el

controlador. Esta variable tiene el tipo de la opción que

estarnos corriendo. • Si alteramos este valor, el flujo se

altera. Pero ésto tiene una implicación para los macros.

Habíamos dicho que el conjunto de opciones que conforman

un macro tiene sentido si las condiciones iniciales son

las mismas. Aquí encontrarnos otra condición: un macro

pierde su sentido cuando el flujo es alterado en inedia de

la ejecución. Para evitar problemas, la rutina de macros

del controlador chequea siempre si TIPHUT vuelve con si

mismo valor corr el que ineresó a la rutina del programa

controlado. Si ésto no ocurre se da un mensaje y se ordena

la inmediata terminación de la grabación o ejecución del

macro, porque el macro deja de ser confiable el momento

en que puede haber ambigüedad en el flujo.

Lo anteriormente dicho explica las características de

los macros desde el punto de vista del controlador. La

aplicación externamente puede tener muchas variantes. La

adoptada para el depurador es tener un área externa de

48

Desarrollo

mecroa en la que se guardan las respuestas del usuario a

requerimientos ajenos al controlador. Se destinan 256

bytes a cada rnac.ro. Tanto el área de rnacros interna corno

la externa son grabados en disco al final de la sesión de

trabajo con el depurador, de manera que los macros que

hayan estado definidos no se pierdan. Al inicio de cada

sesión se busca el archivo de macros y se lo lee en las

áreas correspondientes: interna y externa. Si el archivo

no es encontrado, se crea uno.

Otras variantes pueden ser: tener varios archivos de

rnacros (a manera de una librería) que puedan ser leídos en

cualquier roomeirto. Esta opción fue probada en el depurador

pero no result-ó útil pues, ocurriendo en el proceso de

depuración continuas Terminaciones de" programas, los

archivos abiertos durante la depuración de est-os programas

se cerraban también continuamente y sin dar la posibilidad

de salvar la información. Solo los archivos abiertos no en

el nivel del programa depurado (Child Process, según la

convención del DOS) sino en el nivel superior (Paren-t

Prooess) se mantienen abiertos y son, por lo -tan-feo,

útiles. Más sobre ésto se hablará al tratar sobre el

depurador. Una variante más para los macros puede ser

49

Desarrollo

tener un archivo que contenga más macros, pero que los

traiga y los salve en grupos de ocho.

Expliquemos las rutinas de macros internas del

controlador. Cuando digitamos " K en el menú principal

aparece una pantalla en al que se explica con brevedad las

características de los macros y se pide el nombre de un

macro. Si el nombre digitado no existe se ernpiesa la

grabación del nuevo macro, siempre que aún exista espacio

para otro nombre. Si el nombre es preexistente, se

pregunta si se desea probar, correr o borrar el macro, y

se hace lo que la respuesta del usuario indique.

Corno ya se dijo antes, la grabación de un macro no es

más que el almacenamiento de las opciones pulsadas en el

buffer respectivo. Por supuesto se debe revisar

continuamente si no se ha excedido el tamaño máximo del

buffer o si el usuario ha digitado otra ves "K para

terminar el macro.

La prueba y la ejecución son muy parecidas excepto

por el hecho de que al probar un macro se debe digitar la

tecla ENTEK para seguir viendo cómo trabaja el macro. Aqui

la rutina que lee las opciones debe hacerlo de un buffer

• 50

Desarro}lo

previamente grabado, En el caso de la corrida de un macro

ésta no termina hasta la producción de una condición de

error (opción ambigua detectada o byte de interfaz en

OFFH) o el fin natural del macro. En la prueba de macros,

también se puede hacerlo si en vea de ENTER se dígita "K.

La rutina de escape opcional. Esta carácteristica

está contenida en los rnacros Opción? y Válida?. El macro

Opción? envía cualquier tecla que posiblemente pertenezca

a un Tíienú (es decir que no sea una de aquellas con función

predefinida) con el mismo código de salida. El macro

Actuar hace entonces un salto a la rutina que maneja las

posibles opciones válidas del menú. AQUÍ pasamos primero

por el macro Válida? que busca en el formato del menú si

al final de las opciones existe un byte con el valor

OFFK, que indica que existe la opción de escape. Si la

tecla pulsada es parte del menú, sale con el número de la

opción respectiva, y si no lo es, sale con ZF - O que

indica error o con Z51 = 1 y el número de la última opción

si se había habilitado la rutina de escape. La utilidad de

esta rutina es manejar todos los códigos ASCII, normales o

extendidos, que no son parte de un menú ni funciones

predefinidas del controlador. Por ejemplo, si lo que se

está haciendo es un editor de texto, todas las teclas

51

Desarrollo

normales serán manejadas por una misma rutina y solo los

controles establecidos por el propio usuario son manejados

por rutinas diferentes. En el programa de flujo se dio a

la rutina de escape la responsabilidad de manejar las

teclas de función del teclado. Todas las demás teclas que

se dirijan a esta rutina, excepto "F", "f" o ENTER, son

descartadas sin procesar. Y esas tres teclas despliegan en

pantalla un cuadro del uso de las teclas de función. Se

puso esa rutina de escape en todos los menúes.

Flujo del depurador.

El módulo que maneja (por medio del controlador de

flujo) a todas las rutinas del depurador es PRO.ASM. Es

este módulo el que debe contener las tablas indicadas

anteriormente y que se definen en base a las labores que

debe hacer el depurador.

En la tabla 2 presentamos el esquema de menúes y

opciones del depurador. Es un esquema que puede servir de

modelo a quien desee usar el controlador. La información

que el diagrama entrega es la siguiente:

- El número que antecede al nombre de la opción es su

posición dentro del menú.

52

Desarrollo

- Luego está el nombre de la opción en el cual,

escrita con mayúscula, está la letra con la que va a

ser llamada la opción. Anotemos que rio debe ser

necesariamente una letra del nombre, ni siquiera una

letra. Cualquier código ASCII no extendido puede ser

usado corno "tecla clave" para llamar a una opción.

Lo siguiente que vemos es un número entre

paréntesis, que representa el tipo de función,

numerado de la forma que ya hemos indicado en páginas

anteriores.

- Si la opción tiene subopciones (observe que ésto

ocurre siempre" en las rutinas de tipo 3), se escriben

a continuación éstas, con la misma notación indicada

pero recorridas algunos espacios a la derecha para

diferenciarlas del nivel superior. El punto puesto a

la isquierda indica que todas esas rutinas descienden

de la opción bajo la cual están los puntos.

- Finalmente, se observa en algunas opciones, que

siempre son las últimas de su respectivo menú, un

53

Desarrollo

asxerisco antecediendo al nombre. Este asterisco

indica que se trata de la rutina de escape del menú.

Tabla 2: Esquema de opciones del depurador

1: Archivos (3)1; Nombre (i)2: Tamaño (1)3: Lee (2)4: Graba (2)5: ^Funciones (1)

2: Información (1)

3: Depurador (3)1: Paso (1)2: Corre (1)3: ©Jecuta (1)4: Rupturas (3)

1: Crea (1)2: Activa/Desactiva (1)3: Borra (1)4: Muestra (1)5: '"i-Funciones (1)

5: Ins (I)6: Ens (3)

1: Ensambla (1)2: Busca (1)3: ^Funciones (1)

7: Mera (3)1: Llena (1)2: Busca (1)3: Copia (1)4: ^Funciones (1)

8: ^Funciones (1)

4: Termina (2)

5: ^Funciones (1)

Los buffers que aparecen en. el listado son solo una

descripción de cómo llegar a cada opción del programa

54

Desarrollo

expresada en forma de-números de opción. El menú principal

tiene este bufier:

01h,OOh,OOh,OQh,OOh,OQh,OOh,nQh

Y todos los demás buffers tendrán ese 1 ubicado en el

mismo nibble, pues T.QQOS descienden del menú principal.

Por ejemplo el buffer correspondiente a Depurador se

forma a partir del principal incluyendo un 3 en el segundo

nibble:

Slh.QO^OOh.onh.OOhjOOhjOOh.OOh

Y el correspondiente a la opción Iris del menú del

Depurador se forma ponieTido un 5 en el tercer nibble:

3lh, 05h, OOh, OOh, OOh, OQh, OOb, OOh

De esta manera se construye la tabla TABBÜF 'del

depurador, coroo se la ve en el listado del archivo

PRO.ASM. Esta tabla puede construirse en el orden que se

quiera, por ejemplo podrían ir primero todas las opciones

del menú principal, incluso puede hacerse en desorden.

Pero la siguiente tabla, TABINF, se debe construir, como

55

Desarrollo

ya se dijo antes, estrictamente en el mismo orden que

TABBUF. TABIMF es una colección de las direcciones

(offsets dentro de los segmentos de código, para las

rutinas, y datos. para los menúes y explicaciones) de las

informaciones asociadas a cada opción. Además, consta el

tipo de opción.

Por último, este es el formato de un menú:

- Primero, un string con las opciones tal como se

quiere que sean vistas en la linea 23. Las opciones

deben estar separadas al menos por un espacio, y el

string no deberla exceder los 74 bytes, pues los

últimos 6 espacios de la linea se usan para -mostrar

el status del programa.

- Un byte de O para indicar el fin del menú.

.- Una lista de las opciones válidas del menú, sea en

hexadecimal o en forma de códigos ASCII encerrados

entre comillas. Las opciones válidas no deben ser

necesariamente letras, pero si una letra se usa se

debe indicar el código de la letra mayúscula.

56

Desarrollo

Cualquier código ASCII no extendido puede ser una

opei ón val ida.

- Finalmente está la posición para un by^e de OFFH si

se quiere que la última opción sea de escape. Corno

una seguridad se puede poner un byte de O si no se

necesita la rutina de escape para evitar que algún

dato que esté después del menú adopte por asar el

valor de OFFH.

Como ejemplo, el menú principal del depurador es:

"Archivos Información Depurador Termina Funciones',O,

- "AIDTF'.Offh

Con ésto hemos completado nuestra descripción del

ambiente en que se desarrolló el depurador y pasarnos a la

descripción de la 'manera en que funciona.

57

Desarrollo

3 .3 Il^s^rxallo cié Jja£_j£iiruaiojri£LSJ _ rn.6dul.os individuales .. -

Todos los módulos están comentados en los listados

que se incluyen en el apéndice A; sin embargo, a

continuación exponemos las funciones que desempeña cada

módulo, e incluimos diagramas de los flujos principales en

dicho apéndice.

Módulo Flujo. Asm:

Es el gue controla el flujo de es^e programa. Su

trabajo xue ampliamente explicado en páginas previas.

Módulo Pro. Asm:

Este módulo es el encargado de invocar a todas

las rutinas de depuración. En él se encuentran las

tablas usadas por Flujo. Asm. El esquema de las

opciones de este módulo fue definido anteriormente;

de él "hablaremos luego, como el módulo que integra a

los demás.

58

Desarro!lo

Módulo Desens. Asm:

Este es el desensarnblador , capas de convertir

cualquier código de máquina del 8086 en una tira

alianumérica que contenga su mnernotécnico

equivalente. Contiene varios submódulos, siendo

DesensDet el de más alto nivel; lo que hace es llamar

a Desens, y luego reformatea la tira de caracteres

que este último pasa a fin de responder a la

necesidad del inódulo Pro, que la requiere de cierta

forma para poder colocarla en la ventana de código.

Desens es el que realmente genera la tira

alf-anuioerica que representa el mnernotécnico, y

adicionalioente proporciona la-longitud en bytes del

código de máquina desensamblado (para que el

procedimiento'invocante pueda localisar la siguiente

instrucción).

Hay varios otros submódulos utilizados por

Desens cuya función no se explica aquí. Para ver su

detalle, referirse a los diagramas de flujo adjuntos

en el apéndice A.

59

Desarrollo

Módulo Assem. Asrn:

Este es el módulo ensamblador, capas de

convertir cualquier mnemotécnico válido del 8086 en

su código de máquina correspondiente, y además,

proporcionar la longitud de este código en bytes. Su

subrnódulo de más alto nivel es Assem, que invoca

sucesivamente a los dos pasos de compilación.

Estos dos pasos son EnsPasol y EnsPaso2; el

primero genera lo que denominamos un "pseudocódigo",

es decir! una representación codificada del

ronernotécnico que no es el código de máquina;

simplemente, se reduce cada simbolo a un código

numérico. El segundo es el que convierte el

pseudocódigo al código de máquina verdadero.

El pseudocódigo es totalmente arbitrario, y se

elaboró buscando simplemente una forma sencilla de

interpretar una tira de caracteres respetando su

sintaxis. A continuación incluimos la convención

utilizada para cada uno de los diferentes sirnbolos

que puede encontrarse en un mnemotécnico de 8086. La

convención está a nivel de bits (ver tabla 3).

60

Desarrollo

Tabla 3 (Definición del pseudocódigo)

(Las X son No Importa)

Instrucción:

ü 0 0 X X J u L Número

J ~ 1 si la instrucción es JMP o CALLO en otro caso.

U - 1 si la instrucción admite únicamente un parámetro(corno por ejemplo NOT o DEC)

O en otro caso.L = 1 si la instrucción no admite parámetros (porejemplo AAD o CBW)

() en otro caso.Número es el número de la instrucción, arbitrariamentepredefinido.

Registro:

0 0 1 X w Muro

W = 1 si se trata de un registro de 16 bits (no seincluye registros de segmento)

O si se trata de un registro de 8 bits.Nura sori~3 bit.s que representan el número del registro.

Registro de segmento:

0 1 0 X X X Nú m

Num son 2 bits que representan el número del registrode segmento.

• igue. . .

61

Desarrollo

Tabla 3 ... Fin

Memoria:

0 1 1 Mod Mero |x1

S Num W X X X Des pías amiento

Hod son 2 bits que representan el modo dedireccionamiento.Mera son 3 bits que representan la forma de acceso amemoria.5 = 1 si hay un prefijo de redefinición de segmento

O de lo contrario.Nurn es el número del registro de segmento del prefijo.W = 1 si el desplazamiento es de 16 bits (de haberlo)

O si es de 8 bits.

Dato de 8 bits:

1 0 0 X X X X X Dato

Dato de 16 bits:

1 0 1 X X X X X Dato

Fin de pseudocódigo

1 1 1 1 1 1 1 1

En todos los casos X = No Importa. Por ejemplo, la

instrucción

MOV CX.ES: [SI4-BP+1437] :13D

62

Desarrollo

•tendrá el siguiente pseudocódigo en hexadecimal, haciendo O

t-odos los No Importa:

00 88 29 72 48 37 14 AO 3D 01 FF

Los números de las instrucciones están listados en la

siguiente tabla:

Tabla 4: Números de instrucciones

ADDPUSHPOPOSADCSBBANDDAASUBDASXORAAACMPNEARFARPTRBYTEWORDDWORDAÁSINCDECSHORTQWORDNOTNEGMÜLIMÜLDIVIDIVJOJNO

0006070310182027282F303738393A3B3C3D3E3F404850515253545556577071

JNAEJBJCJNBJAEJNCJZJEJNZJHEJNAJBSJNBEJAJSJNSJPEJPJPOJNPJNGE

- JLJNLJGSJNGJLEJHLEJGDBDWTESTXCHG

727272

. 7373737474757575767777787S7A7A7B -7B7C7C7D7D7E7E7F7F80818486

MOVLEANOPCBWCWDCALLWAITPUSHFPOPFSAHFLAHFMOVSBMOVSWCMPSBCMPSWSTOSBSTOSWLODSBLODSWSCASBSCASWRETRETNLESLDSRETFINTINTOIEETROLROHRCL

888D9098999A9B9C9D9E9FA4A5A6A7AAABACADASAF

-C2C2C4C5CAceCE

. CFDODID2

RCRAAMAÁDXLATESCSHLSALSHRSAFLOOPHELOOPNZLOOPSLOOPZLOOPJCXZ 'INOUTJMPLOCKREPNEREPNZREPREPEREPZHLTCMCCLCSTCCLISTICLDSTD

D3D4D5D7DSDCI)CDDDFEOEOElElE2E3E4E6EAEOF2F2F3F3F3'F4F5F8F9FAFBFCFD

63

Desarrollo

líebe notarse que, por conveniencia, se asignaron

pseudocódigos iguales a los códigos cíe. máquina

siempre que fue posible, y cuando no, se "tornaron

números que se podían transformar fácilmente en los

códigos verdaderos.

Los registros tienen los siguientes números binarios

Tabla 5t Húmeros de registro:

Num

000001010Olí100101i 10111

w = 1

ÁXCXDXBXSPBPSIDI

w = 0

ALCLDLBLAHCHDHBH

Los registros de segmento tienen los siguientes

códigos binarios:

Tabla 6: Números de registros de segmento

Num

00011011

Eeg

ESCSSSDS

64

Desarrollo

Los modos de direccionarniento y las formas de

acceso a memoria son los siguient.es en binario:

Tabla 7: Modos de direccionamiento yformas de acceso a memoria

Meto

000001010Olí100101110111

Mod 00

SI-t-BXDI+BXSI-KBPDI-f-BP

SIDI

DesplSBX

01

SI+BX+DespSDI+BX-KDespSSI-rBP-í-DespSDI+BP+DespB

Sl-í-DespSDI-f-Desp8BP+Desi>8BX-i-DespS

10

BX+Sl-f-Despl6DI+BX-rDesplSSI+BP+Despl6DI-KBP-MJesplo

SI+Despl6DI-i-Despl6-BP+Despl6BX+Despl6

Es~tos bits se generan en el pseudocódigo

haciendo un análisis lógico de la expresión entre

corchetes, a fin de determinar los símbolos

existentes en esta expresión. Este análisis es

realizado por el submódulo Encuero de la siguiente

manera:

65

Desarrollo

Tabla 9: Obtención del modo de direccionamiento

FEDCBA

ÜOOOÜ1000010000100001000000101000110001001001010010001010010010100011000010101010110011001011010100001300010100100101000100101100110101001101010010000100000Otro

Mod

00no000100000000010101010101010110101010101010100000XX

Mera

100101111110000001010Olí100101111110000001010Olí100101111110000001010Olí110110XXX

Error

00000Ü000000000000000 -000001

De esta tabla de verdad, mediante reducción de

expresiones booleanas a través de mapas de Karnaugh

se obtuvo las fórmulas lógicas que constan en el

listado del procedimiento que las evalúa. A manera de

ejemplo analizaremos manualmente " la expresión

[bx+si+17]. Veremos que están presentes los registros

67

Pesarrolio

EX, SI y un desplazamiento de 8 bits, por lo que A -

C - E - 1, mientras gue B = D = F = 0. Por tanto, la

entrada en la tabla es 010101, 3 la que corresponden

Mod - O i y Mero = 000.

Módulo Ejecutor. Asín:

Contiene un conjunto de procedimientos de

control de flujo de subprograraas (a fin de

posibilitar la depuración) y de manejo de archivos y

de memoria. A continuación explicamos brevemente los

irías importantes:

El procedimiento TestTrap hace una prueba del

comportamiento de la interrupción 1, que se debe

•oroducir cuando la Trap Fias CT) sea 1. Lo que<

debería ocurrir es que, inmediatamente después de la

instrucción que hiso 1 a T, se ejecute una

instrucción más del código y de inmediato se produzca

la interrupción. Sin embargo, detectamos que en

algunas computadoras esta interrupción se demora dos

instrucciones, y no una, en ocurrir. Por ello, es

necesario detectar corno se va "a comportar la máquina

antes de utilizar esta interrupción.

68

Desarrollo

El procedimiento ExUniq ejecuta una instrucción

del código del programa del usuario. Para ello, carga

ios registros a los valores en que se quedaron tras

la instrucción anterior, pone T en 1, y luego

transfiere el control a dicha instrucción (si

TestTrap detectó que la interrupción demora una

instrucción de más, entonces se ejecuta un NOP antes

de transferir el control). La interrupción 1 está

interceptada, y devuelve el control al

procedimiento.

Hemos detectado otro tipo de comportamiento

anómalo • en ciertas computadoras: algunas

instrucciones involucradas con registros de segmento

parecen ser ignoradas por la interrupción 1, asi que

cuando _ ExUniq se encuentra con una de estas

instrucciones, transfiere el control a ExPaso, que

es un procedimiento del que hablaremos más adelante.

El procedimiento ExHasta ejecuta el código del

usuario desde una dirección inicial hasta otra de

terminación. Para ello", inserta un INT 3 en la

Desarrollo

dirección hasta la que se quiere ejecutar, el cual

devuelve el control.

El procedimiento ExFaso ejecuta desde una

instrucción inicial del código del usuario hasta la

instrucción consecutiva exclusive; es útil para, por

ejemplo, ejecutar una subrutina sin tener que seguir

su detalle. Opera calculando la longitud de la

instrucción de inicio mediante el procedimiento

Desens a fin de encontrar la dirección de la

siguiente instrucción, para, con esta información,

invocar al procedimiento BxNasta.

El procedimiento ExCond ejecuta el código del

usuario hasta encontrar el cumplimiento de una

condición determinada. Para hacer ésto

alternativamente invoca a ExUniq y verifica la

condición; cuando ésto ocurre, toraa nuevamente el

control.

El procedimiento ExTotal ejecuta el código del

usuario hasta encontrar un punto de ruptura. Para

ello, lee de una tabla en que están estos puntos e

inserta un IKT 3 en la dirección de cada uno de

70

Desarrollo

ellos, y luego transfiere el control. La interrupción

está interceptada, y devuelve el control al

procedimiento. Para definir la tabla hay tres

procedimientos'. AddBrkPt, que añade un punto de

rupr.ura a la tabla; BelBrkPt, que borra un elemento

de la tabla, y TogBrkPt, que activa o desactiva un

punto de ruptura.

El procedimiento Exlns ejecuta una instrucción

fuera del código del usuario, aceptando coioo

parámetro de entrada su mnemotécnico. Para hacerlo,

invoca a Asseiu, que genera el código de máquina, y

luego pasa este código a Exüniq3 al que invoca.

El procedimiento FeduceLevel invoca" a la función

EXEC del DOS a fin de ejecutar un subprograiria,

Child.Exe, que simplemente devuelve el control sin

finalizar. De esta forma, conseguimos 'bajar de

nivel', es deci-r, engañar al sistema operativo para

que, si se llega a ejecutar la función EXIT no se

retorne al DOS sino que se siga teniendo el control.

La respuesta del programa a un EXIT es invocar

nuevamente a BeduceLeyel para estar preparado para un

nuevo EXIT. Debe notarse que "EXEC crea un PSP para el

71

Desarrollo

subproceso a ejecutarse, y es este PSP el que

asignarnos al programa cargado mediante LoadExe.

El procedimiento SaveFile graba una porción de

la memoria del usuario como un archivo. Para

determinar el inicio del bloque que debe grabar

examina el nombre del archivo, y da tratamientos

diferentes si se trata de un .EXE, un . COM u otro

cualquiera. Puesto que los archivos .EXE requieren de

una cabecera con información normalmente generada

por el linker. y no hemos desarrollado una rutina

para crear esta cabecera, SaveFile" no puede crear

dicho tipo de archivos; sin embargo, es posible

modificarlos, es decir, traerlos de disco, hacerles

ciertos cambios y grabarlos después, siempre y cuando

no contengan información de relocalisación (es decir

instrucciones tales como MOV AX,@DATA), pues ésta

seria alterada. Nuestra recomendación es no grabar

archivos de extensión . EXE con PRO. En cambio, sí es

posible crear archivos nuevos . COM o de otros tipos,

siempre que se desee que sean una simple imagen de lo

que se tiene en memoria.

72

Desarrollo

El procedimiento LoadExe carga en memoria un

archivo desde disco. dado un nombre colocado en el

PSP que fue creado por ReduceLevel; la lectura se

hace de forma que ese PSP pasa a corresponder al

archivo cargado, si este archivo es un programa .EXE

o .COM. Este procedimiento hace la carga utilizando

la función EXEC en el caso de archives .EXE, a fin de

permitir al DOS usar la información de

relocalisación proporcionada en la cabecera del

archivo, y utilisando las funciones normales de

archivos (3BH, 3SH, 3FH) para los demás casos.

Módulo Memory. Asm:

Contiene tres procedimientos de trabajo sobre

sonas de memoria. El primero, Fill, permite llenar

una sona con un valor de byte determinado. SI

segundo, Search, busca una tira de bytes en un área

determinada. Y el último, Copy, copia un bloque de un

lugar a otro en la memoria.

73

Desarrollo

En este apartado daremos una breve descripción del

programa, viéndolo corno una entidad única e integrada por

los módulos antes descritos (ver diagrama de bloques A. 5).

El programa contiene una rutina inicial (rinic) , un

laso principal y una rutina final (rfinal). En la rutina

inicial, en primer lugar, se verifica la presencia de los

archivos de ventanas requeridos para operar, ESTÍOS

archivos fueron creados utilizando "vent. exe" , que es un

programa que permite definir recuadros en la pantalla con

información fija y con campos que aceptan información

dinámicamente del usuario o de un programa; llamamos

"ventanas" a estos recuadros , y son grabados como

registros en un archivo. Siguiendo la convención

necesaria, nuestro programa invoca a las ventanas que

necesita (mediante un nombre previamente asignado a cada

una) para proporcionar información al usuario. Los

archivos de ventanas y de macros son abiertos; de no

existir un archivo de macros , uno es creado .

Si la búsqueda de los archivos de ventanas es

exitosa, entonces se procede a reducir la memoria que se

74

i-ien-? disponibit, s fin oe dejar espacio para el programa

•i-/1 'jsuaric t que va a depurar.--^ . Esto se debe nacer

Parque el DOS invooe a los prograrosc mediante la función

EXtC. que otorga tod?. 1* memoria libre al subproceso. Asi

pues, una ves reducida ésta a los reque.riirjien~.os de

nuestro programa (13ÜQH párrafos, es decir, 77824 byT.es J ,

el resto puede ser utilizado por el programa del usuario.

I>e inmediata se instala en memoria un servicio para

Ja interrupción 2FH, oíaf» es la 11 amada ' muí t.ipje>:"; esta

inTerrupción recibe come- parameT.ro un número de función en

AH. y están libres todos los números desde 80H hasta FOK.

Nosotros reconocemos como nuestra la función 8OH, y el

servicio responde a esta función restaurando el staci- (que

fue alterado por efecto de la interrupción") y devolviendo

el control al programa) sin ejecutar jamás un IRET. Una

ves instalado el servicio, invocamos a la función EXEC

para correr el programa Child.Exe, que lo único que hace

es invocar a la función 80H de la interrupción rnultiplex.

Puesto que ya está instalado el servicio a esta

interrupción, y no se llega a ejecutar un EXIT, el DOS

"cree" que seguimos ejecutando un subproceso nuestro. El

efecto de ésto es poder transferir temporalmente el

control al programa del usuario sin T,ernor de que éste

75

Desarrollo

ejecute un EXIT, pues si lo hace, el DOS no torna el

control, sino que lo retorna al proceso que invocó al

último EXEC, es decir, nuestro propio programa, que

entonces volverá a ejecutar Child. Exe para nuevamente

bajar de nivel.

Una ves reducido el nivel del proceso al nivel del

proceso hijo, se examina el P5P del proceso invocante (el

PSP original proporcionado por el DOS a nuestro programa)

para encontrar si el usuario ha pasado parámetros. Be ser

asi, se carga el nombre del archivo cuyo nombre fue

proporcionado; si se encuentran más parámetros, éstos son

pasados al PSP del proceso hijo (que se creó cuando se

corrió Child. Exe) . La carga del archivo se hace de forma

que el PS'P del proceso hijo se convierte en el PSP del

programa contenido en dicho archivo. Con ello nos evitamos

el tener que construir un PSP, ya que EXEC puede hacerlo

por nosotros.

Entonces se pasa al ciclo principal, en. que se

interactüa con el usuario, aceptando los comandos que éste

proporcione. Cada ves que se ejecuta cualquier opción se

llama a uno de los módulos (por ejemplo, si el usuario

desea ejecutar una linea de su código, se invocará Exürtiq

76

Desarrollo

o Expaso "tras haber creado los parámetros de entrada que

estas rutinas necesitan) y luego se actualiza la pantalla

mediante la rutina pdebug, que pone en el video cada una

de las ventanas con los últimos cambios. Asi, cada ves que

se actualiza la ventana de código es necesario invocar

varias veces a DesensDet a fin de obtener los

mnemotécnicos desensamblados correspondientes a la parte

del código del usuario que se está analizando. Corno se

dijo antes, si uno de los procesos ExUniq, SxPaso, ExCond.

ExHasta o ExTotal, en que se pasa temporalmente el control

al código del usuario, esT-e código ejecuta un EXIT, el

control se x-oma e inmediatamente se vuelve a bajar de

nivel. Hemos encontrado en ésto una ventaja inexistente

en programas como Bebug o Codeview," y es la posibilidad de

volver a ejecutar un proceso de usuario que terminó sin

necesidad de traerlo nuevamente de disco.

Debe notarse que antes de bajar de nivel se abren los

archivos de ventanas y de macrcs requeridos por el

programa con el bit de herencia (Inheritance bit) en O, de

suerte que los archivos son pasados abiertos al

subproceso; asi, desde el nivel bajo puede seguirse

llamando a las ventanas y ejecutando macros. Por otro

lado, los archivos que el . proceso del usuario

77

.JEMP.L05 TDTORIALES: EXPERIMENTACIÓN Y.RESOLTADOS

4. 1 Una sepilan -típica de 1 aborat.qri o

Esta herramienta está concebida para trabajar en el

Laboratorio de bíicrocomputadores II. En general el trabajo

empezará con el planteamiento de un problema o necesidad.

La persona que desarrolla la solución deberá primero

elaborar un diagrama de bloques sencillo, indicando las

tareas , que deben hacerse. Luego escribirá el código

adecuado para cada bloque. Luego el programa debe

ensamblarse con el utilitario MASM y hacerse ejecutable

con el LIHK. Casi siempre existirán errores de sintaxis

que el MASM indicará. Estos deben corregirse, inclusive

los "Warning" o avisos, pues son potencialmente errores

que impedirán funcionar al programa. SI LINK suele dar un

"Warning" cuando rio se ha definido el área de stack, pero

éso no impide que un programa funcione, excepto en

aplicaciones muy extensas como Pro,Exe. Esta parte del

trabajo debe ser hecha sin otra ayuda que los mensajes del

MASM, hasta salir sin errores.

El trabajo de Pro empiesa entonces, cuando, a pesar

de no haber errores de sintaxis, generalmente un programa

no funciona. Pro ayudará a encontrar los errores, ahora sí

79

Ejemplos Tutoriales

de lógica o flujo o incluso de cálculo, que subsisten en

el código.

Las correcciones consiguienT.es que se hagan en el

programa harán que caáa ves la corrida avance más por buen

camino, quisa hasta encontrar otro error. El usuario puede

verificar el avance en la depuración con Pro, viendo si

los errores anteriores han sido superados y seguir hasta

que todo el programa esté bien.

El método a seguirse, en resumen, es el siguiente:

1.- Descripción del problema.

2.- Diagrama de bloques y solución inicial.

3.- Corrida inicial: resultados y síntomas.

4.- Depuración con Pro y correcciones sobre la

marcha.

5.- Corrección de errores.

6. - Repetición de los pasos hasta funcionamiento

completo.

7.- Solución definitiva.

80

Ejemplos Tutoriales

4.2 E iemolos de de.-purao.ion de programas

En este punto vamos a presentar dos programas y

llegar hasta su funcionamiento completo. Partimos de un

punto en que ya se hayan superado los errores de

ensamblado, pues en esa etapa solo interviene el usuario

en la corrección.

Programa 1:

i.- Problema: Presentar en la pantalla un cronómetro

que muestre una cuenta en segundos, hasta 60. con un error

máximo aceptable de 1 segundo en total. Para sincronizar

relojes, dar' un BEEP al comenzar y al terminar el

programa.

2.- Diagrama de bloques y solución inicial: constan

en el apéndice A. Él nombre del programa es Crono.EXE. El

diagrama es el A. 6.

3.- Corrida inicial: Aparece una larga serie de

símbolos no esperados en la pantalla, una gran cantidad de

BEEP's y demora demasiado tiempo. Se "cuelga" al intentar

detenerlo con Ctrl-Brk por lo que damos un Ctrl-Alt-Del.

81

Ejemplos Tutoriales

4. - Depurador; con Pro: Corremos Pro con la siguiente

orden:

pro crono.exe

Ingresarnos al depurador y empezamos por buscar

nuestra área de datos en la ventana principal de memoria

para tener una mejor visión. Sin embargo buscamos los

bytes que habíamos inicialisado al escribir el programa

(un Odh y 24h seguíaos) y no los encontrarnos. Para ver si

están en alguna parte, entrarnos a la opción de búsqueda en

memoria y elegimos dar la secuencia en hexadeciroal.

Ingresamos luego:

Od

El depurador encuentra la secuencia en el offset 1SF

del segmento de datos, sin embargo en el listado del

programa vemos que la ubicación de los datos se supone en

un área más ba j a.

Entonces' notamos que lo que falta es inicialisar el

valor de DS con el segmento que el DOS le asigne. Esto

82

Ejemplos Tutoríales

explica que al intentar el programa mostrar la secuencia

de caracteres que forma el número, rio encuentre si

terminador (24H o "$"). Además el programa estaba

trabajando sobre un área un tanto delicada: Vemos aue CS

es superior a US con 1DH. Quien conosca más en profundidad

al DOS sabrá que el DS está apuntando al PSP (Program

Segment Prexix) y que las alteraciones que se haga en esa

sona son peligrosas. A ésto se debe que el programa se

colgara luego del Ctrl-Brk.

5.- Corrección: Salimos de Pro y con un editor de

texto añadimos las siguientes lineas justo al inicio del

progra ma:

mov ax,@data

mov ds, ax

para inicialisar el DS. Compilamos nuevamente el programa

y lo corremos.

6. - Continuación de la depuración: Ahora el programa

corre hasta una terminación, pero en la pantalla aparecen

los gráficos correspondientes a los valores más bajos del

83

Ejemplos Tutoríales

código ASCII, además suenan BEEP's continuamente. Para

oué sucede volvernos a Pro:

pro crono.exe

bo primero que observamos es que en el código ya

constan las dos líneas de inicialisación de DS. Por medio

de Fl ingresamos al editor de valores en pantalla y

presionamos TAB hasta llegar a la ventana de memoria.

Allí, con IB flecha - pasamos al campo de segmento y

ponemos el valor con el que DS se inicialisa. De

inmediato vemos ya un área reconocible (por los bytes QDH

y 24H que teníamos inicialisados). Con ESC salimos del

editor y empezamos a correr el programa paso a paso.

Ingresamos a la subrutina "que" debe convertir el valor

hexadecimal del contador en dos bytes en que el primero

tenga las decenas y el segundo las unidades. Seguimos paso

a paso esta subrutina y encontramos que la transformación

ha sido correcta, pero que los valores almacenados 110 son

ASCII. Por ejemplo, si el número que debía mostrarse era

el 21, las decenas tienen el valor 02 y las unidades 01.

Para convertir en ASCII se', debe sumar 30H (el "O" en

ASCII) luego de "la transformación. Por ésto era que se

Ejemplos Tutoriales

veirm los gráficos de los valores más bajos del código

ASCII y s-? escuchaban los BEEP's {07 en ASCII).

Salimos de Pro y volvemos al editor para poner dos

lint-as'•

add decena,3 Oh

add unidad,3 Oh

Compilamos y ordenamos la corrida del programa. Se ve

que lo* problemas de numeración han sido superados, pero

el eroiiómetro es demasiado rápido. Toma aproximadamente 15

segundas en contar hasta 60. Entramos a Pro para calibrar

la velocidad, ubicamos fácilmente en el código el lazo "de

retardo y vemos que se pone el valor de AL en 2. Para

cuadruplicar el retardo, entramos en la opción Ens, opción

Ensambla. Ponemos como dirección de ensamblado la de la

instrucción que querernos alterar (23) y presionarnos ENTER.

Escribimos:

raov al ,8 -<*—' -4—*

Vernos que el cambio consta ya en el código. Salimos

otra vez al depurador y ordenamos la ejecución en tiempo

85

Ejemplos Tutox~iales

real (JJ. Tomamos el tiempo y vemos que el cronómetro está

calibrado de acuerdo a la tolerancia indicada en el

problema.

7.- Solución: Salimos de Pro, y con el editor

corregimos el valor dado a AL y compilamos otra ves. Ahora

la corrida es completamente satisfactoria. El listado

definitivo consta en el apéndice A. El listado del

prograifia no depurado es Cronol.Asrn y el final es

Crono.Asm. El programa Crono.Exe entregado es la versión

depurada.

Programa 2:

1.- Problema: Pedir al usuario que dé el nombre de un

archivo, recibirlo y mostrar sus 128 primeros bytes.

Ho~üa: La solución inicial es una versión sin errores

de sintaxis de .un programa que empezaba a escribir un

compañero nuestro.

2.- Diagrama de bloques y solución inicial* Constan

en el apéndice A. El programa se llama Test.EXE. El

diagrama es el A. 7.

86

Ejemplos Tutori ales

3.- Corrida inicial: í»a el mensaje inicial pero luego

aparecen más caracteres. Escribimos un nombre de archivo

válido, pero el programa termina de inmediato sin mostrar

los primeros byt.es del archivo.

4.- Depuración con Pro: Corrernos Pro con este

comando:

pro test, exe -*—J

Hacemos, tal como en el ejemplo anterior, que la

ventana principal de memoria muestre el segmento con el

que D5 e's inicinusado. Luego con PageDown y PageUp

buscarnos el área en que se encuentra la pregunta al

usuario. Si hace falta ajustar el área para ver mejor el

mensaje, se lo puede hacer escribiendo un offset adecuado

para la ventana.

En este ejemplo vamos a aplicar las capacidades de

Pro para hacer muchas correcciones sobre la marcha, las

mismas que serán anotadas para luego corregirlas de una

sola vea con un editor.

87

Ejemplos Tutoríales

Erapeaamos la ejecución paso a paso. Llegamos hasta

antes de ejecutar la primera INT 21 que es la que muestra

la pregunta y, al analizar las condiciones de entrada a la

interrupción, encontramos que el bufíer no termina como se

indica en el manual de funciones del DOS, ésto es, con el

signe- "$". Esto es lo que provocó que aparecieran más

caracteres que los esperados.Además, aunque ésto no es tan

crítico, se ve que no existen caracteres para provocar el

cambio de línea (CB y LF).

Entonces decidimos poner los caracteres CR, LF y "$"

en ves de las últimas tres letras de la pregunta. Con

ésto, aunque la pregunta no aparecerá completa, al menos

terminará en el sitio correcto, pasando a la siguiente

línea. No ponemos los caracteres después de la pregunta

pues podemos estar alterando otros valores posteriores.

Para hacer ésto entrarnos al editor con Fl y con TAB o

SHIFT TAB llegamos a la* opción de cambios hexadecimales a

la memoria. Con las flechas vamos a la posición que

querernos cambiar y escribirnos:

Od - -1 Oa -*-J 24

88

Ejemplos TutoríaI es

Salimos cor. ESC y hacemos otro paso para que se

:t~ i-i interrupción. Luego de ésto podemos ver la

prt-;-gunx.a en la pantalla del usuario presionando F4. Para

regresar al depurador, presionamos SSC.

Ahora pasamos a la recepción del nombre del archivo,

revisando siempre que las condiciones de entrada a la

interrupción sean correctas. Ejecutamos la INT 21 y se nos

presenta la pantalla del usuario. Escribimos el nombre de

un archivo que sí exista. Esta vez todo funciona bien, por

lo que intentamos abrir el archivo cuyo nombre hemos

recibido. Sin embargo al ejecutar paso a paso vemos que

DX, que debía hacerse apuntar al nombre del archivo, se

hace apuntar al inicio del bufier en que recibimos el

nombre, sin tomar en cuenta que en ese bufier, antes del

nombre, existen dos bytes usados por el DOS en la función

de recepción de un string. Para continuar sin tener que

salir de Pro, presionamos Fl y con las flechas nos

ubicamos sobre DX. Allí alteramos su valor de OOOE a 0010.

Ahora sí DX apunta al nombre. Pero existe otro problema.

En el nombre la función de lectura de teclado del DOS ha

añadido al final un CR que hará que nuestro archivo no sea

encontrado, provocando 'la terminación inmediata. Como

seguirnos en el editor, nos movemos con TAB o SHIFT TAB

89

Ejemplos Tutori&Ií-3

haste ia opción que permite cambios de memorias en

hexaóecimcti. Ñor ubicamos sobre el 01) al final del nombre

y p-sr-ribimos O sobre él. Con ésto, además, aseguramos que

el nombre recibido se ha convertido en un ASCIIZ. Salimos

al depurador y seguirnos paso a paso hasta ejecutar la I NT

21. Vemos que la apertura es exitosa pues CF=0. Además

vemos que en AX hemos recibido el File Handle.

Siguiendo paso a paso, llegamos a la lectura de los

128 bytes, que se hace correctamente. Esto lo podemos

confirmar entrando con Fi al editor y llegando a alguna de

las opciones de memoria con TAB o SHIFT TAB. Allí, con

PageUp o PageDown buscarnos el área en la que leímos y

debemos encontrar allí los datos.

Seguimos con la ejecución paso a paso. El archivo se

cierra ahora sin problemas, y entramos al laso que muestra

los 128 bytes. Podemos seguir paso a paso algunas

iteraciones, pero si ya queremos ver terminada la etapa,

entramos a la opción Corre, en la que indicamos la

dirección en la que querernos parar: 6A. El programa se

ejecuta hasta ese punto. For un instante se ve la pantalla

que el programa depurado elaboró. Si queremos ver la

pantalla en detalle, pasarnos con F4 a la página de

90

Ejemplos TuT-oriales

usuario. Con ESC regresarnos al depurador. Finalmente se

observa la Terminación normal del programa al seguir la

ejecución. En unf pola corrida baje- Pro, el programa ha

jüost-radc muchos errores, al parecer. -LOÓOS.

5.- Corrección: Salimos de Pro y con un edit.or

escribirnos luego de la pregunta los bytes OPK, OAH y 24H

(o "$").

Hacemos que, al abrir el archivo, DX apunte dos bytes

arriba del inicio del buffer, es decir al nombre.

Finalmente escribimos una pequeña rutina que pone un

cero en vez del CR al final del nombre del archivo, con lo

que, de paso, convertimos al nombre en un ASCIIZ.

6.- Continuación de la depuración: El programa es

compilado y enviado a ejecución. La prueba es por completo

satisfactoria.

7.- Solución definitiva: El listado con el programa

tal como quedó finalmente se presenta en el apéndice A.

Testl.Asm es el listado corregido de Test. Asrn. Test. Exe es

la versión del programa que funciona.

91

Ejemplos Tutoríales

tres salidas independientes de las cuales una es dedicada

a realisar una cuenta descendente desde un valor

programable que, al llegar a cero, envía una señal al

controlador de DMA, el cual lee todas las localidades de

memoria y las vuelve a escribir con el mismo valor

(refrescamiento). El tiempo que se ocupa en el

refrescamiento de memoria es "muerto" para el computador.

Por otro lado, los fabricantes de microcompuT-adores

suelen diseñar sus equipos suponiendo las condiciones más

adversas posibles. Así, por ejemplo, supondrán que la

memoria va a tener la volatilidad más alta de las

indicadas por el fabricante en sus hojas de dat-os y, por

lo tantoj habrá que refrescarla muy a menudo. Por éso el

tiempo entre una y otra operación de -refrescamiento de

memoria será relativamente corto. Sin embargo casi nunca

un cMp llega a los límites dados por el fabricante.

En base a esta idea, podernos suponer que nada

ocurrirá en el computador si aumentamos ligeramente el

período de refrescamiento. Esto se refleja en un mayor

porcentaje del tiempo dedicado a procesamiento y, en

consecuencia, en un aumento de velocidad. De igual manera,

93

Ejemplos Tutoriales

si reducimos ese periodo el computador se volverá más

len-c-o.

El limite estará en el punto en que los

refrescamientos sean tari separados que la memoria en

efecto se descargue, provocando que los chequeos de

paridad que periódicamente hace el computador por medio de

un Generador/Verificador de Paridad 74ALS280 fallen. Este

provoca un NMI y un mensaje de "Parity Error" aparece,

caso en el cual no hay más remedio que hacer un BESST.

El tiempo entre refrescamientos es prograrnable, y se

lo fija dando el valor deseado (en microsegundos) al

registro correspondiente del Contador.

Hemos probado esta técnica con Pro, empleando como

muestra dos programas. SI primero es el Crono.Exe,

desarrollado en la segunda parte de este capítulo, y el

segundo fue un simple laso en el que internamente pusimos

dos lasos.

94

Ejemplos Tutoríales

Primero entramos en Pro y, basándonos en el ejemplo

que da Roermnele, ensamblarnos un archivo Qfresh. Coro desde

IQOh, con estas instrucciones (números en bexadecimal):

mov al, 74 ;Seleccionamos Timer 1ont 43 , al ; para contar hacia abajo,

bajo: mov al,15 ;Valor inicial para elOUT. 41, al ; by te menos significativo

alto: mov al,O ;y para el byte másout 4i,al ;significativo,

fin: mov ah,4cint 21

SI valor dado a AL en "bajo" y en "alto" define las

partes menos y más significativa del valor con el que se

inicialisa el contador. Después áe algunas pruebas hemos

visto que aparentemente esos valores son los que tiene

normalmente una de las dos computadoras en que

desarrollarnos esta Tesis, pues no producen cambios de

velocidad en las pruebas. Equivalen a un refrescamiento

cada 21 rnicrosegundos.

Grabamos este archivo en disco con el nombre

Qfresh. Com y el tamaño de 10 (hexadecirnal) .

Definimos un macro que cargue Qfresh. Corrí y nos deje

listos para ensamblar una instrucción en la dirección que

arriba marcamos corno "bajo". Con ésto podemos cambiar

Ejemplos Tutoría les

Luego hicimos otra prueba. Creamos un programa con el

nombre de Veloz.Com. Su listado es éste:

;inicio del laso

;ler laso interior

;2do laso interior

;BEEP

laso:

lasol:

laso£:

fin:

movmovloopmovloopdecjnsmovmovintmovint

al,FFcx,FFFFlasolcx,FFFFlasoSallasoah,2di ,121ah,4C21

Las etiquetas que se ven aquí obviamente no se

escriben en el ensamblador sino que sirven para saber a

dónde debe ser algún salto. Los valores están en

hexadecimal.

Salvarnos el programa con nombre Velos. Com y tamaño

1A. Creamos un macro similar a CRONO con nombre VELOZ.

Probamos el tiempo que toma este macro sin alteraciones y

es de unos 82 segundos. Hacemos las mismas pruebas que

para CRONO y anotamos los resultados.

97

Ejemplos Tutoríales

Tabla 30: Resultados del experimento

Periodo derefrescamiento (us)

0203040815214396

512

(02h)(03h)(04h)(08h) '(Ofh)(15h) , . normal.(30h)(60h)(Iffh)

Tiempo deCrono. Exe

107797365 '6160. . . .585757

ejecución (s )Velos. Exe

1138577686462616060

Un gráfico muestra los resultados en el apéndice A.

Las conclusiones son claras y demuestran la verdad de

las hipótesis, aunque las medidas no han sido exactas,

pues no era el objetivo del ejemplo. Se puede ver que del

valor inicial obtenido no se obtiene una ganancia mayor al

5 % . Sin embargo las diferencias son dramáticas cuando

reducimos el periodo de refrescamiento. La relación

inversa que existe entre el periodo de refrescamiento y el

tiempo total de ejecución es evidente.

El gráfico muestra que, en estado normal, los valores

del periodo de refrescamiento nos ubican en la parte plana

de la curva. Por ello podemos ganar muy poco en velocidad,

pero perder mucho. Este- resultado hace evidente el

criterio que tuvo el fabricante para elegir el periodo.

98

V.

El programa PRO. EXE es una herramienta de depuración

bastante útil, pues presenta una gran cantidad de

información simultáneamente en le pantalla, y actualiza

esta información automáticamente. Se compara muy

favorablemente con otros programas similares existentes en

el mercado, y creemos que es el primer paquete de este

tipo desarrollado en el Ecuador; existen buenas

posibilidades de comercialízalo, con un consecuente

beneficio para la Facultad.

PRO. EXE es un programa muy probado y útil como

herramienta de depuración y de investigación; el apartado

de ejemplos de depuración (4.2) de esta Tesis tiene dos

ejemplos muy claros que muestran su .utilidad para corregir

prograjnas escritos en lenguaje Assembly del 8086.

Sin embargo, hasta el momento de la culminación de

esta Tesis de Grado, no podemos -considerarlo como un

paquete acabado , pues son innumerables las mejoras que

tenemos pensado procurarle, además de corregir algunos

pequeños defectos que heraos detectado y que puedan

seguirse descubriendo; para ello, contamos con el gran

aporte que seria la utilización del paquete en Laboratorio

de íáicrocomputadoras II, pues el uso intensivo del

100

Conclusiones

programa por parte de los estudiantes producirá sin duda

muchas sugerencias.

En la etapa de desarrollo de la Tesis se suscitaron

algunas situaciones y problemas cuya solución son el

aporte de este trabajo. Hablemos de ellas brevemente.

Se encontraron diferencias importantes en la forma

corno el DOS maneja los archivos ejecutables de extensiones

.EXE y .COM: el primero tiene una cabecera de longitud

variable con información de iternes de relocalisación,

valores iniciales de registros y otros; el segundo es una

imagen de cómo queda el programa en la memoria al ser

'cargado, y no tiene ninguna cabecera; por ello, fue

necesario el~ desarrollo de rutinas diferentes de

manipulación de ambos tipos de archivos. Si bien se logró

evitar todos los problemas concernientes a la carga, no

fue posible regenerar los iternes de relocalización en la

cabecera de los programas .EXE; ello será adicionado a.1

programa en el futuro.

Se detectó un comportamiento anómalo no documentado

en algunos inicroprocesadores de la familia del 8085 en

cuanto al número de instrucciones que se retarda la

101

Conclusiones

interrupción 1 en producirse una ves que la bandera de

trampa T se ha hecho 1 (debería ser una sola instrucción,

pero a veces son más). Esto hizo necesario el desarrollo

de una rubina de reconocimiento de- la forma cómo el

microprocesador se comporta, a fin de tomar medidas que

eviten los problemas que la anomalía produciría. Debemos

señalar que en ésto, PRO es superior a otros depuradores

(como DEBOG o Codeview), que eventualraente fallan en

algunas computadoras.

Puesto que la ejecución de un programa de usuario por

porciones implica la intervención de su código

(restaurándolo cada ves que el depurador recupera el

control), no fue posible permitir al usuario seguir el

flujo de programas en ROM (como el BIOS), puesto que no-

pueden ser alterados; sin embargo, otros depuradores (como

DEBUG) sí son capaces de hacer ésto, e ignoramos la forma

en que proceden (corno es obvio, ésto no está documentado).

Sugerimos este asunto como tema de investigación, pues un

resultado concreto en este aspecto implicaría una mejora

importante a nuestro paquete.

PRO.EXE tiene una habilidad que ningún otro depurador

que conozcamos posee, y es el poder conservar la pantalla

102

Conclusiones

del usuario a tal punto que la presencia del depurador es

totalmente transparente a cualquier aplicación de usuario,

incluso aunque maneje directamente la. Video RAM (VRAM).

Conseguirnos ésto manteniendo aquella pantalla siempre

preservada, y restaurándola cada ves que el programa del

usuario o una porción de éste (aunque s<s -orate de una sola

instrucción) toma el control, y sin u^ilisar las

funciones del DOS ni del BIOS, sino directamente la

memoria de video, que tiene un formato muy sencillo ya

explicado anteriormente. Esto evita el problema que se

presenta cuando el programa depurado no trabaja con las

funciones del DOS y del BIGS sino sobre la VRAM. Pero

tiene su inconveniente cxiando el programa puesto a prueba

cambia el modo de video-, pues este parámetro no ha sido

considerado. Esta podría ser una de las mejoras a

incluirse, pero no es imperativa pues será bastante raro

que programas no comerciales usen es^as características.

El módulo ensamblador representó un paso muy

interesante en la elaboración de PRO, pues implicó el

desarrollo de un analizador de sintaxis de innemotécnicos.

La dificultad que implicaba el generar directamente código

de máquina a partir de un mneiuotécñico nos indujo a

trabajar en dos etapas. En la primera chequeamos la

103

Conclusiones

valides de los elementos sintácticos del mnemotécnico y lo

reducimos a una secuencia de bytes que representa a dichos

elementos en forma condensada, y llamarnos a esta secuencia

"pseudocódigo". En la segunda, generamos el código de

máquina a partir del pseudocódigo. Creemos que este módulo

puede ser tomado como ejemplo para futxiras aplicaciones

que requieran de análisis de sintaxis de instrucciones y

de generación de código.

El desarrollo de PKO no se hizo tratándolo como un

solo programa, sino como un conjunto de módulos que se

integraron posteriormente; esta técnica de programación

modular demostró ser eficiente y cómoda, pues inclusive

permite a varias personas el trabajar en un solo proyecto.

Por ello, recomendamos este estilo de programación a

cualquier persona o grupo de personas que planeen

desarrollar un paquete relativamente extenso.

Complementando este criterio, hemos de decir que los

módulos de esta Tesis están ampliamente documentados y

pueden ser utilizados por otras aplicaciones, lo que

significa ahorro de tiempo y esfuerzo. En general, todo

desarrollo de Software debiera ser orientado, no

estrictamente al programa que se desarrolla actualmente,

104

Conclusiones

sino a su integración a cualquier otro. Por otro lado, de

quienes dirigen el desarrollo de Tesis o trabajos que

involucren a la programación, se requiere que destinen un

gran esfuerzo a la planificación de ellos, para lograr un

avance coordinado y no disperso, sin duplicación de

trebejo, y, sobre todo, con conocimiento de causa y

objetivo.

Aunque el paquete está diseñado para fácil manejo y

aprendizaje, debe notarse que el usuario ha de tener- un

conocimiento relativamente bueno del micr©procesador 8086

y de sus técnicas de programación, el modo de acción del

DOS y la arquitectura de las computadoras de la familia de

la IBM PC para obtener el máximo provecho del depurador.

Sugerimos que, en vista de que esta Tesis provee a la

Facultad de un paquete de depuración más adecuado a sus

necesidades que los existentes, se reoriente el contenido

de algunas materias que actualmente se dictan, a fin de

dar mayor importancia a la comunicación de datos entre

inicrocomputadores, campo al que muchos f utui'os

profesionales se van a encontrar ligados y que hasta ahora

no ha sido abordado con suficiente Ímpetu.

105

FHftC.ASH i i íH!it i i ; ír i íí i n i r n n í U t u r t i í l í t i

• uuí fieros usados =f. E! arcnvc ^UJD.ESÍ.

Parámetros Función

;aviiDS•¡cuida

¡explica

jcetnsac¡geiser¡cusrpin¡iluainsoü

;iappritíBsnabsjssr.arr

JEEfiUVSnt

i E QV buí

jnufiível; opción?j penar

pnclave

dir

salta a una os las dir. en una tabUJir.niip.color presenta ventana cor instrucciones

encuentra Í3 posición de un buíísrpone un "cursor" sn í,24

recibe dato del teclaoo ÍBíCB;da el I riel rasero con nosibre sn NQHBUFobtiena uítiso nibble <>0 en BUFFE3guarda una santal laresalta Is cocían actualrecibe siring desde teclado ÍBIOSída una lisia ds los iacrss en el índiceliepia la cantalÍEcursor abajo sr¡ ventana d= subooc,cursor arribacursor a la derechocursor é ls i^cuierda

pnclave auestra senuíPNCLSVEimuestra s=nu sn íorjEs de ventana

pdír,plin}pcol auestra pregunta y ssosrá raspussiaPBÜF1 <— PBUF2pone atributo norsal en x,24pone ?m en PBÜF(PKIV)espera cus ss elija una opciónescribe CAR (005)Eusstra senu strine apuntado por Ai

pvarKjpvary.tíir convierte pos. de pantalla en direcciónrestaura ultisa pantalla selvadspasa control s¡ usuario y lo recibepush a todos¡iJ55Íra tase del proorasaeuestra datos importante del usuariopop a todovs si una opción es de! aenu del usuariosubrutinas o» todos los «sacros

carpnlin,pealar

j posc i rjrssipantsíldruiiric

;2ta ,usv

¡valida?

¡muí ACTUAR mmmmm;Busca el «L-esiao eleaemto de la tabla de direccionesjqus iré después de HÍA&Lfi pora ssltsr a esa dirección.actuar sacro

laca! ctahleoush bx

Fr.Ar.fi:"

f iov o x , o f f s e t subíscali sact03C bx

;Q: owcrd ptr airartistabia:

¡mu» ftttDfi ¡mmmtmi 16/02/39|EscriDE IÍLÍK lineas separadas ppr c=ro= de=tie Din en COLQFi.¡ücupa CDluínss 1 = 7S y ÍES íüas de! centro de laayuda sacro oír, film, coícr

push axpush ESÍSOV

BOV

SOY

calioopoopen da

ch. color

esax

¡mm BUFCLA¡Busca P9UF en TABBUF y pons su ubicación 2n PN'CLAVEbuícis Ha:rc pnclave.pbuí

push si

aov si.oííset pbufcali abeBOV a l , f t bc fay tesov pnclaye,'! ~pOD 5K

ODp 51

CURS itíUlMlltntí 17/02/8?jpone si atributo as ÍXj241 en inverso,curs sacro .x

push BXaov £lj xBOY ah.b^subbcali scupop axenda

¡titttt EXPLICA ííitHlíUtíUÍ¡presenta explicación de opción cuyo I es pficiaveexplica aiacro pnclave

push cuEOS' C

cali asspop exendffl

jumí SETKEY¡Espera hasts recibir un ¿ate oei teclado y lo canda en BETtiDREgsuey sacro

c a l i iscfcPC-v a x . Q e t w o r d

j i i í t í í 5E7M5C míimmíi í t U/02/e?jObiisne N U f j f í f i C ir.uiüero del aacro en eí índ ice /; buscando su nosbrs KGHSUF en SBB indic=,

sacrocal! ecr

;iíiiíi EEnPñ iiUírtiUítítt ÍO/02/S9¡Obtiene de BUFFER eí ultiao nibblc distinto de C, 5n IPBEV.¡Sirve para regresar ícon "i o rutina inversa! 2Ü5 opciar. sus dio origen a cierto aenu.sstxpr ca:rc

cali CCKende

BUARPflHTALLft líttttrtfíicusrda la pantalla sn PftSSL'FGuarpantclls cacro

cali agp

;tiitH ILUHIHAQP;ñe=£lta la opción actual (indicada por U variable Iíiiusinaop sacro

cali sio

INBUFF iifUitutííni 17/02/S9¡Recibe desde el teclado el buííer DIR cuya longitud se indica en¡el priser byie del buííer. En el segundo byte 59 obtendrá E!¡nuaero de bytss recibióos. Solo se aceptan letras o nuaeros,¡Para edición, solo Backspace, Pita si 5= ha llegaco al iiaite.iíibufí sacro dir

push siaov sijoítsei dircali albpop siendis

INDHAC ííiimmiiiíi 1&/02/89jllena U lista USHftC en bass al Índice de iscrosjen ñREAHñC. REcaplsza ías csros por espacios Í20H).indaac sacro

cali sis

erice

¡fcarra U oaníá lUispcni sacro

piish dipush es

BOY

aov&OV

reopopDOD

popendi

exdi2X

siaxexdi

,2001',(:

,072CnOS*

;UUf! HEHA9A í í t i í í iUUÍUíífiuevs cursor abaio =n U ventana de subopciones,

sacroC = l l 055D

5HDE

•.iiítH HENflRR¡Siailar s KENABA.asnarr sacro

cal i as

HENDER;hu°ve cursor tís opción acíiiél a le derecha.

caliends

; t i í l i j HEHiZl? t n í t f t l l í í r i t í;Siíi!ar a HENDER.

sacrocali sai

HENULINEñ ijnuesiró senu (PNCLAVE)aenulirtea sacro pnclave

push exaov c ! ,pnc lavecaí! Bftlpop exends

; i ; i iH MENUVEííT ( t U i l t i t t t i t t¡Muestra ffienuíXCLAVED En íorec de ventano,

sunüav, ftcril ;.'j, líe? face :

eeven o E.

ÍÍOSTfiAñra pregunte apun tada per PD1R y espers respuesta. L?tener esta -forc3; hsnssj5,0.i de recuestas, listé ceestas. En AL sale si misero 09 la respuesta slr s.acrc p Q Í r , o l i n , D c o ¡

sush £scov a h , D i i nQOv d l ¡ O C D l

BOV eoslir , ,ahzcv fflD5:oi,a¡(BOV ax,oHsBt odircali asesOOD 2K

aov a!. anuosende

¡i ltrtt KDVBÜF;Hueve DsllFí a PBÜF2,sovbiií ffiHLrc píiUT2,pb!¡T!

ou=h siDU5h OÍ

fiov si, o f f se t flburificv di,oÍTset pbu;2ca l i ssbDQD dipOp 51

endo

NQCUííB r i T n i í í t t U í U 17/02/89¡pane el atributo de Uj24) en noraal .nocurs aacro s

push axSOY aljX

aov ahjbnnorircali saipop =ssnds

;iíí¡íi NUH1VELjPane PNÜK en el bufíer PSUF En el nivel PKIV.nunivel aacro pbuí,pniv,pnuB

push expush dxf f i O V C l j p ñ Í Y

aov ch,pnu&soy dxjoí í se i pbuícsll afínpop dx

Xe QOG

xq dadX3 CCC

xq'jtpd AQB

Jippoa'xq Aoo

ptíg |¡SD

"tq AQI13 AOB

SD usndsq qsnd

xs qsndjTpsod

g púaXD dadxp dod

U3a fTS3

(qp AOBJTI'JC'p AQ«

x3 jsnd^2 usnd

JQTCM'UTTUd DJI35» niJSSQ

J3g ODSni álAq j3BIJd {30 UOIDÜSJtp 5{ 5p!

j t{ss ¡y "0 jod ooEiunde nu=s sjisan^:

SO 3CC

JSD'JQ AOB

xp usndJ?3 OJ35B1

iJEd ={¡Q [5P JQTDU11

iitntnnntn

-UDU3

JC O J3JJ02 i? COB|351 ¡SO Z=A Uc QJ3s8 [5p U53Í 55 Aí

JrqsjQ r s soi?p =OT u2U5:93;s 35 spuop inc? sa ==B3Díí:

A dv'lv'^y'Ov^BiNr'35^-3^ íuQ5 sauoiDcc SET 'üc::da:33 cjaanu la ¿"íduií y3 s-5s -tiopcc sun aiióip =s ánb sjsas^i

3DJ3

dea

*r

o

e

"-i

u:

a.

w

=1

r-o

<u

ra

ni.—

o .a

ni

u

ui

ui

ro

ni

••-

.-« c

e. <r

(K,:i:

es

i.-:

i— ixi

--

1/1 e

l-sl

iu

ro

III

-(

- m

u .a

u

J , .»

t- •rl cz

• -•

>

K .

ni

u

>

.—

••*- O

-.T

ni

iii

'0 ti

.-<

.--t

in

u

ni

i~

ui

a

n

•-•

=3

k- •2 -u

•v-4 X =3

lí 1U

• 1-

U

L-1

X

SO

«—

,-.

in.ra

'a

CJ.

••»-

x>

•-«

tn

jetu

.r

a

IM >t

=1 ™ lO,

»<

-o•a

i-ií

S

19

-0

a

mM

ei

-w

i C

n)

ru

Ai

1.1 U

« >

raí D

ci

n

-a

-cj

o

n

a

o

o

c.i

O d

a

cj

o

*

oui

ni

m

tn

ni

1/1

til

in

tn

o.

o.

a.

o.

a. ra

,. c

i. a.

a.

in

na

a.

ai

¡rressriüa 6 bytsá apuntados por FAE=:Tíi en;Se use psrs indicar U fas? actual c=Í orstatus* sacro

cali G=*ene. TI

¡luid S'ATüSv i i j i i J imum 1Ó/C2/89¡Presenta o avies apuniaoos por VftLPTR en (73,24);5s usa pars no5trar iaport3r¡t2E Caros de! usuario,statusv sacro

caí: ESV

¡mm TRAERES:?op 5 toco,traereg sacro

aop ==DOp 55

pop 05

pop ciCCD 51

pop bppop dspe-: espop bxpop axende

¡Íí¡i;i VftLIDA?;Si en OPCIÓN? ss dígito una opción distinta de las que¡noríalaente, ACTUAR Randa el ílujo acs para ver si ss una opciónjpuesta por si usuario en el aeriií, Si es asi, AL=nu»Bro de opción.;5i el prifter byte después 05 la ultUa opción del aenu ES FF se¡supone que la ultisa es la "opción 05 sscapE* para todas las{posibilidades que no consten en E! BERU,valida? sacro

cali EV?aov al j f iv?auxentjfl¡

SU3RUT;Este es un sacro qus contiene todas ías subrutinas líaaadas por losjotras sacros de este archivo. Se hizo de esta «añera para evitar el;uso de demasiadas banderas, y que su ausencia no produzca "Phasejerrors* al cosento del ensacblado.subrut sacro

satvaregdec al ¡pongo E! AL-esiffio eíeñento ds laÉQV cl,2 ¡tabla en DÍRACí y CS en DIRACTiZaui el jpira hacer el OHP al regresar,

Sjr:a>. *:ri: 30, !9£"

aay!:

SDC;

ase 5:,D;.*:v bo.OTtseí ci'B¿Er. s:p¡:. =i.á¡fflOV t«,C5!ÍSij

sbcO:

abc3:

DOOEOV

ffiOV

traereqretn

piishpushS30V

cavEUD

GE:EOV

oe:E10V

EQV

DttSilU

inc2QV

EOV

osenuincdec

eovpfisnuDOD

pooretn

salvareofiOV

CÍO

jnejf f lpfflOV

BOV

fiOV

aov0DV

EOV

incEOV

xor

51

U S i E b D l . D X

QE: I í ;DT2J , : 5

dxbxbx,asd i , 23 !til , el ;

t;iavlin.ti:fisvhnE3'/:o;,crai:,ofís5t blancDtcvlinjEsycol ;sayhnspsprsj t jxax,«pap.-x ;ftayliri.saycDl :saylin :el

a^oíísei blanconay l in , f t ayco l ;bxtíx

al ,naaxbuí ;j V j

sbcO |ebcí i

~ J J

abcbuíjSi jibcuoí.ofísBt tabibcbyte,0bs.sbcbufa h j t b x lbxbp,ebcpo=ch jCn

:;entro el testo en pantalla:;linsa ir,i:iai= í23-81inss5Í/2 -1

¡orussrD una linea en blanco.

¡Ahora el resto de lineas. íiPHPñ)!¡da ls dirección dei priaer byte:despU5s del 0.

jlines En blanco al final.

jSusca un buíí=r sn la tabla TABBUF;y entrena el nuaero claveiqus servirá para obtener toda lajinforsacion necesario acerca cié la¡opción representada por el ímííer.jSi el buffer no existe, clsvs=FF.

Aon;

RCZD:

ffiDV

in:S3V

CE;jn:cap

JSP

incffiOV

ccp1 CJ -

acóJSP

KQV

fiüV

irasreoretrr

cl.scroyte(tb:&vt=d;.:xan.cs.'íbp^í&D:2ECCI'-'-.r.S

Hc5 ":I"HL

EOCf:2nU

5n,nfiaxbuTah.ctjcsenuSOLÍ

abcpoSjSIDC!al.Oríhaacsyte.al

ecc:

posoíracvnov bh.ahEOV

addincfflCV

traeregretn

Bi,a3¡51

¡Fons si atributo d?do por AH en;la po=icior¡ ÍAL,24í

6BÍ

salvaregBOV a l j n i n í b u fBUl Ci

¡Busca en TAB1HF la dirección oE Í3jexpHcacion y la pone en linea 23.

addEOV

COY

paenutraereoretn

ax,offset tabiníbx.axax,tbs]24,coleXD

entisalvarsgaov ah,0int Ion40V

traeregTEt

;Uso íuncicn de! BIOS que;que ss puíSE una tecla.

suíicsv. Aprii 30, Í S:

0115 P £3 =

DCD

F;DV

incCfSD

SOV

addeovEQV

3D3

in:(ECV

esdh-Oríhchdh.S

íbusci si =1 ricí.bre en NGMBUF esta!2n ia listó de gacroá y ce =u fiiiffiero;rBÍ'n sn K^AC si ESI oci¡--5. Ei 5=

íBi va nc hay ssoacic, 05 Fr.

noabuísi, 2tii,Dal^8dttdi.B

di

;bytsE Ó y 1 =on o= uso de otro aacro,

;byi5 O e» la lonaitud del sacro,

agn2taon2h

jn=3CCÍ

EDV

EGV

incCip

ffiori!dn.SOnRUBKC.dr:

ch.OfthenDh,8

|5i no: e-a E: re

¡Buscc

EDV

-ÍDV

acd

SíOV

BOV

reos

t í Í , o f Í 5 E t s f E E

dh

al, Ocx,8

tí. cooparo

libre.

fiOV

J E p E(0ii4

BOV nusff iac ,OHhpop SEtraeregrstn

nusvo.

;s5-:ro nuevo sin sitie,

=2Ív£reg¡sov el ¿nivelshr el, ixor chCh

sddeovsovshrshr

=i,Dffssl buíísrsi.cíal, [si]ah.alah, 1ah,Í

;SE divide KIVEL/2; se suai 3 direcciorijinicisl de BUFFER, y se obtiene el asn¡distinto de O sn ESE byte.jEss ES el ultieo nibbleOO sn BüFFER

cas

;1¡ P.OViraeregrstn

al ,sn

:gp:¡caso oantallá a PANBUF,

xorsovffiOV

S3V

aovEOV

£1,51

di,offset panDui

sa vareoÍ3V

di, collar;BOV

«oís: posdir í.23,aiodiraov • si.ttiodirsov di,sipush espop o=

aioI3l! lodswcap al,20hJS BÍ0131

sub si ,2

j:gioH:

usedec

aioló

cap al,20hjíie aioiílodsKcap al,20h

sisielaiol4di.si

inzROY

lodsxBOV ahjdlcap sl,20h

;R°=aÍia ía DCiCiori actual, a=

jtrabajo directo en pantalla,¡busco la )!-eáisa palabra en U¡linea 23 y caubio su atributo.

¡salto espacioE iniciales.

;salto palabras.

;resalto palabra.

Face 1¿

JE SlOl;

tac a; , OJE eicl?

jap f i ló lo[¡la!?; tra?rec

reír;

eic:

Eibl¡

SÍD/I

aib2l

fiib22:

aib31i

salvarse ¡aotsngD string desde te^Iaoc ,AOV

E C V

E9V

arfdposdiraovaovinccur=QstkeyCSL

jnsjapCE;J H E

jéCíp

jnbc&pj bcipj bCSG

jbccpjb5UD

nocurscapJ H B

penarjapBOY

incHOY

addincjapnociirscap

c l ,UiJ ¡B2X1CD i de caracterescíi.C jcaniaocrdx.s: ;ount=ro auitihar=Í j2 jbytEE 0 y 1 de uso dei ffiácro! ,24. f f i ib t i i r ;dir2cciori de sni&sr caractsrb S j ü i b d i rfiibx.cñÍÍDX

&ÍM

al,08h iBacfcsDacs?eib2í0ib4al ,0oh ¡Enter?sib22

ai,30h ¡O"?fiib2élj7bn ])'z"ítib2sl,3éh ;=5 un (iusero?fiib3a l j 4 1 h j ' 9 " < a l < " A * ?£Íb2a l j5bh jes una aayuscula?eib3al,61h ¡ 'Z^aK'a*?¡sib2ai .20h ¡es s inuacula, hacer asyusculaBÍÍ1X

ch,cl |Contatíor=aaxÍBt3?eiib3107h jsi, bs2p.sibltsi],al ¡AL al Bu-f íe r=i j apunto prox. dirsccionE s : [ b x 3 j a l ;ñL a pan t a l l abs j2 japunto prox, direcciónch jcontadorüftiblsibxch.O j b u í f E r vacio?

jrscec

J 5 1 , C5BO,

s: íborrc iilticc carácterÉiyre p t r [s i} ,0 ;en gi curísr

;v sn a n t a l l a

QE: znjsp Bife!nocurs aibíÍ5CV 51, tí

byte ptr s=:í £¡0,20(1iñ ¡cotítatJor-í

: f i r d= rutina: bvts íliriCica i c = bvtss r5c

retn

eie:salvareeQusn

oov

e;Cí

;oon= la lista de sacros actual:sn LISHftC. ReeapUza ios 00 con:2E 1 punios) .

d i . o f f s s t lisoa:di .8

ai,20n

el, 7lodsijCBp El , O

aovstosbdscjnzQSC

jnz

trasregretn

8ÍE2difiiel

salvarensov cKnclavei jBusce E! i de subopcianes que tisneaov sljniníbuí ;e! senu de la opción actual dada portul d' ¡HCLftVEi. Si Y supera 555 i, Y=0.add asjofíset tabinííflC £S

inc aspush bxBOV bs.axsov E

prp &;•leda:CSC 2;, O

;ie Kaes;Icdsbinc i\; v

traerser=:r

íalvaregeov ci.nclavei ¡Busca I 2= =ubopc, CE esEOV él.fliníimT :5i ¥=FF, V igusi z 9=5 ?BU! el'30G aSjoHsei tscinrin: 3sin: axC'dsf. D?

POV í¡x,a¡'aov s i r íb^3poc bu1D05D

cap 21.Í1

JOB fiffia!

dsc ycap y.Oííí;JflE Í&32

fltüv y. al

TBÜ1

eov cljnclave jBu=ca 5 de opciones ds isnu actual,»ov sljninfbuí ;Si I supera ese valafj X=i,

;3iefipre V=C.aulacáincincDusr¡BOV

¡SQV

pop

capjnelodsb

elax.ofaxES

bsbx,axsi, Ibbx

= 1,0ilidí

U!

1X1

111

-kJ

cu

.-)

ai

ru

u

ro

ro

ratn

<se

K

>e

at

x

ro•u

ra ja

IT

I IM

a

.

LJ

t_i

inO

. "p

C

l

(2

a

-M

ffiC5 ír

add ax.o^sst tabiníSÜC 2K,C

SOV DS.5ÍÍ

:c;- byte ptrEbxí.v-

JGp f f iC 'V/

fñDV c l j f l C l í í V S

SOY a i i T i i r i i t ü TBill C!

adc as,offset tacinf

5 tno 3.

¡¿lera DLÍSCC 13 Dirección¡aei aEHü £¡ que osrtensce;=sia c^cicr: sn Tft?;fíF,

zncpuihEDVECVOCD

EOV

EDV

OK

el,Odi,x

;5I apunta ai inicio del EBÍIU.¡Voy a contar los byts=- hasta;la opción actual tsí para saber¡colusna inicial de ven Un a,¡Salto 2=pacio=;D2rc los

¡si x-l ya tciioo la colusíií

ds:EOVisc

JE

GEC

Í50V

EOV

SOV

ffiOV

nulcddííiC

incpushffiOV

covaoo

c!Sf tVKÍj í l !

sav4di

lodsbinc c]eso al,20njns sav32lodsbinc elCSp 5l,20h

«v33di

elsavsí,cl

c!ax.offset tabiníaxa*bxbs,ax

bx

;DL; cuantas opc aas deoc saltar.¡Cuanto DVÍES nasta encontrarítiií SSD2CÍO ECL contsdorí.

esacios sntre ociones

juna opc asnos que saltar

¡Terrsino. Ventana eeDisza snjcoluans anterior,

;ñhora busco dirsccior! oe aenti¡asociado a ia opción actual¡sn TñBINF

;B1 apunta a prissr byts

BBV41J! loóseCtSD

GEC

PDV

Eflvflí ! isIÍSC

cr.cjne«¡IV r

jprsivílO: IP:

cap1 U

BGV

JBt

Gsv42¡ lodsbCffD

je

CflD

jneISOV

jcpEsv43í ific

2QV

tieC

Jfflp

iasv5¡ popfitOV

incincBDV

sub60V

EQV

incposdiraovfeDV

oovIBOV

StüSH

3DV

ftOY

xarrspBOY

5Í05K

fflsv50: incttOV

C6D

zl,20n

5 Í

cs. l

ai,2íih

?;,(!6tt'v41CErvíir,,c;tüiV*

chch.iacvcarEffiv41

Efflvcar,chfflov41

al,20hasv42al,0§fiv43a¡-5vlin,clÉffiVD

Cl

ch.C=1feav4ísiil.fefviinal

El

ah,23ah,aleivlinj3h«6v3in!¡ar¡aevcarEftvxI,aitvlin,SBivdirdi,aavdirSE,videQseaaljEBOBÍ

ah,colven

aljlínsupcljSfiVcarch,cbSÍOSH

Sl(E5qS(í

EtvlinbljSEvlinbl,22

¡no :DEC er: cuen:a ics:=EC2:io= inic:aisí.

;VsD cuantis ÍÜ35 y COÍLJEÍ¡Gcuoa i£ VEPtaní¡Les espacios no cuentan

ítsTflina si AL=0

:t de 5üc:sciQri2= del BURL

;Cn; e ae C5r (35 suDoociDriHKVCAf;: (üanao Ch iograoü

¡saltar espacios

¡teraina si AL=0

ir es siiüoíiciQnsá del ssnu

:ctrs suDOpcior¡í de ca^ = 0

jBusco la lin=s inicia!jtie la ventana incluidas¡des líneas de recuadro,

¡servirá después

;dir. de sspuina superior¡izquierda en pantalla

¡dibujar esa esquine¡en color óe ventana

¡dibuja linea superior

¡dibuja e=q. sup. der.

jproxiaa linea

1 linea inferior si SL=22

tu

u<

o

.o

o

u

-i-1

— *

~&•~

i o.

k.si

o

m

id

aja

_

o c:

•*-"

•*-

*•—

. -a

••

-<•-

« za

m

ai

cu

cu

x..

e:

.-t

-s

-.

>.

cr

—.

U

Ul

QI

~-

— e

s>

es

-a

—*

>.-<

—a .o

•—-

x

.n

>u

es

ID

¡aa

ts

ru

ui

a

u

<—t

u

•«-« "a

-a

ta

ui

o

t-j

mU

•"

, tí

U

l 'O

a.

tn

>

s-«

a

o

o

••-1

O

. «1

M

a.

>•

o

ou a i-

o o

llTl

&• ua i»

o<r

> m

- C

i•—

a

.a

(u

ni

u

19

—-•

ui

o

m— a

-

ra^—

LS

>—

« IB

m

ui

a m

ia

ni

a

-Q

133

'O

Ci.

O

í

—.

&

-'

ÍBra

. >•

o.

til

O,

>

Ul.

13

B

s?

rucu

<:

m

o

uiiu

cu

rip

jfi

'O

~K>

111

ta

cu

ni

ri

cr

o-

er

n^j

>••-

a ;r

-x

zx

t~

t —

.zi

TJ

-...-.-

K.I .

- cji o

o.

o-

n —

— -

a

-t

cu

n

<:

-atu

. i-i-

ni

n

ui

o

•u

ITJ

ui

¡-o

o i_

iea

.o

ra

.a

i>l

-i-*

i» U

o_

-~

O

Í3

£1

-C

! U

111

>—i

UJ

U•-i-

JC

rO

lU-~

t-

,tt

M

ifi

--

ce

a- a

.m

ci

o

ra"C

T

U

I_l

US

«S

ül

--•

--^

"oo

u

u

-u

ci

oo

«-

, en

LJ

131

ft3

IH

1So.

iu

>•

3.

o

o

o L

JU

l II)

III

Oa

ai

a M

ia

<c

-o

reí

ID

u

a

o

o r-

- m

c:

ir-

i

fu

u

LJ—

«

>t

-rl

m

ni

&

ni

oíes

.-u

si

ci

—<

o

.—<

oa

m

ea

ni

aCE

U

S ''i

l ta

^

x.i

-nC

) C

l O

ci.

i;>

ci

fc

C3V

. C

L

>

5*-C

3 O

O

C

lC

J

O

O

-Mcu

tu.

o.

o.

nt>

>

ci

Oe»

ts

.,3 o

•a -u

o.

O

ni

C--I

•¿r

-*--

r i

a

- n

(3

c=

oIH

.n

es

EX

-

ci.

a

o o

un

a—

• >

13

i>J

ca

ui

"u

in

'ti

ui

m 13

-a

rd

-o

ra

u

in

-a

x

a

•<

m

<

—O

. U

l —

D

S>

(U

r*~

O

O

Ora

a

tu

ni

-n-

ai

n

o-

«i

io

-<-

o

ni

w

ru—

d,

rs

ruD

J

(--.

m

"C3

•a

d.

<:

'O

m

m

m

ro

cut—

C

t'

ID

"a

m

tu

o

a

o

O f

u<

--

<

-i

t—

On

n

i rí

i a.

•< "

••

-

•*in

oj

Q

-s

o.

CT

O

- -r

t i-

- i-

-aa

-

ta.

O-

III

lli

m

ur-

l U

I

m

ttJ

TU

cr

cv":

av?I¡

av?l í :

ev?2;BV?2! !

EY?22:

jn:iraer=;rot r.

salvare£DV

iDV

Kl

BCC

IRC

PUS*

1EDV

HlOV

PDD

}fld5hCfiC

jns

EOV

QQV

oysnQU5ÍÍ

sovxoradd

•n*fiOV

copPOD

SDY

jbcap

jaEübSOY

lodsfactpjedecjn:cap

jeBOY

BOY

xorJ ac-orJBD

Í!5V1

CÍ , ( lC t£ ;

a3,nin*¡elax.oHsf

sxesBSjBX

5i,£íix3ÍJK

ai,06V?1

el. aldi. alsití*-

üv?aiisl,ah,ahsit=j;byt° ptr

av?ausl ,a w

sial.mopau

EV?2

21, 'Z'

BV?2

a!,20hbljal

a!,blev?Sc!sv?2!sv?auí;Í1

av?22al,ev?au•v?aux.aEh,an(EV?4

al,lftv?4

• 6

3'J

?t

0

is

ai

»

0

xl1

tá í iznt

¡Busca EÍ 12 Eisccion ssts:=n si aer,!: CE; -j

;8I spunta al aenu

al sturta a oriiera QD:ÍD:AL usos sí i a= opcicn==

51 si oriffier oves DESQU&SGE i e5 GOClOflS

es rr, =ntanc55 evacuarias tecles no validaspor !a ultiaa opción.

jdejo HV7AUX1 coso banc=ra

Jas f f i i

¡las nago mayúsculas.

JYEO 51 oción es valida

jno TUS valida, veo si hayjrutina ds escao£;si hay esa rutinaisaioo con rsspiiEstajy IF=I

;no hay esa rutina¡ZF=0

irmmmt tíísc*!::*.A5K mimtuín: t l I U t tí ÍU i

aart ¡sacrc-c:aanoo=

cerrcicr cierr= srcr.ivo ce E2:ro=crsaatr dirruía CTE? a r c h i v o ¿E aceroscrabscr craí-é v c i & r r a srcruvo tís eiac'05

ÍES teciaoc- D c j í r s r de nacrú?cr tíirnoi: sbr» y I E E ic c r s= í er-rivc oe ita:roE

cons O er ís= arsa= os r»a:rr=rtodo D D D toceSÍtJDÜ DLJSh ZDdt:-

ibrccr sübrutinss os ios otr^s Eacro&

CERRHCR iitUíiiiiHtíi !7/04/e?Lisrra e! archivo cuyo handls == HCRBAND,CErrscr sacre

calíende

CREAMDR musitmmt 10/03/99;Cr=s si arcnivo cuvo nosore esta dado por el ftSCUZÍQÜ* eispiers en DIRNQfi, Pone =1 nandle en KCRHftKD,creaecr fiacrc óirnoa

push disov DXjOfíEeí dirncficali rcacpop ¿K

;íiiííí SRñBHCR U t í i i i U í t í t i i 10/03/8?;6rsba en el archivo cuyo handle =5 HCRHñHD los Í038 faytss quej£ffipiei=n sn AREñnftC y contienen E! ifidics y datos CE! sacro aansjadQ=;por FLUJO; y los 2048 bvtes que sapiezan sn MCR8AT y que coaponen;el ar=a de datoE os ios sacros cue E! usuario ha dado en respuesta;= rutinas del prooranic usuario ds FLUJO,}Codigo5 ds error en Ai: Oj todo bien} i, no h=y archivo abierto,grabscr aacro

cali roaen ti e

;ifm¡ GETKEY r t r i t í t U í u r i i 10/03/89jEE la función os teclado elsasntal intervenida para poderíleer un dato del teclado o del burfer d= aacrosj y poder;grabar un dato en SSE bufíer si es necesario. Su salida:e= 6ETHORD que tiene e! código ASCII extendido de un= tecla.;Ei ss sstaba grabando sacro y se tersino el espacio pars si

«púax? usndxq (fsíidX3 usndxp qsnd15 qsndip qsndQQ u=nd

53 tísnoDJjSffl 000^5

oaois

=3 ooasp doddq dodTP dadTS düdxp dadX3 dadxq dadse dea

OJ3S5 OpGlJ

68/SO/Oi i l J J i i í l l í i i J l t QQOIH jjilílí

IDUS

¡íp dadÍU [¡33

}'"XD AOffl

xp ijsna

un 3C 5IÍD '53?iJolüT 5D ^5 £5 alAQ 31^3105:= ¡5 A Icn

1 ¿¿ = ,(3 5:85 '=a..3S3 9p =5 GU QATÍÍ3-; lili SHD s^

'i y ua «GGiasjsixa ^oj-ia =p scóipcn'^^^^ -5 arsucu -a

; -sisiits : -ÍIAIUDJP ÍB ^TJ;= =s e;sji i=33J-:.'0!J *3 !Jt3: JUjStf -r- K?VÍÍ" ^- ->T1-5!Í ?

ie/2G/OI l iü i imi iuM KHIííI

10 J

•; ua -J.;j3iJ2H A jj tía a^Bijaui ñp ai.: 13 suoa ss

:Ui»t¡ SBfifJC" nmíjíniíiii 10/03/39

iteres:Control

cirneüctv. r-.anccsincrd

rcfscr:

rre;!

rae:

real!

rcsí;

dtdtÜH

Gk

CH

dr

5ÍOdC

BOV

ffiOV

mirtodoreir;

510QC

IfiOV

EOV

int(60V

rtoriDretn

siodoctpjnsBDV

jcpEDV

flOV

ftSV

aovffiDV

SOY

ccvintaovBOY

SOY

intaovSOY

ÍDV

int6DV

rtodoBOY

aov

2X5 duciO) ¡datos E5C£jsao= iur proarai&c uáu0,0 ¡Para ver =1 ercnvc es CE csrrr.t¿' :dire:ciGn * 05 ESC re airtuéJC ¡nancic 05 2rcfiivc OE sscro;0 ¡salida es 5r7f'rV0 ¡Daré sacar ccsicc as error,

bXiícrhanfJ ;obtengo el handí= yeh,3=h ¡cierro el archivo21 n

2h,3cn ¡creo archivo fl= sacros.C K . C

¿\T¡

scrnanc.ax

-

acrnand,0 _ jhébia archivo de sacros abierta?roaí :=IF continuo.cicrerr,! ;no saloo con codioo de errorrg£tcontrolj'F'coniroHl/Q'ah,42h j f i jo puntero de R/!í«¡O ;al inicio del archivo.d X j Obx,icrhanda 1,021hex, 1038 ¡escribo prisera partE úsl archiviox.oíiset areasacahj 40h21hex, 2050 ; escribo ssgunds parted X j Q Í f s e t scrclatah,40h2íhacrerr.O

aljiscrerrah,0 '

r—i

Ü'

n>

ni

in

o.

u;

m

UJ

l_ ss

<s

_ra

.o

.o

- 13

M-

O

-o

k.

i—i

-—i

,c:

31

oí o

-'•l-

.^

<

.Cl

•o

cr-

.en

-o -c

i in

-o

reí

ai

eu—

-M

^J

»<

>-.>

.-o

.ex

.13

111

t3

Cr

LJ

"i

&

ai

(a

ai-o

Q

is

ro

u

ea

RJ

O

O

O

O

C"

»

CJ

O ra

. a

ni

ID.

n ni

"<=• o

o

j*

n

hJ

cr

m

n—

i =

r —

~

s»ro

m>

O

J —

•i

o

ri

j ro

O =3'

3<

X

»—

cj

o-*-

» »*

^^T

* "»

-» Lrl

B

I-.J

n _,.

"o-

T-J »^A

O-í

CI-

o-

.1»

D

ItO

K

í

~l

BJ

' 1

~

TI'

•'-

IDR

> ^ 1

=1

-1O

.

'T*

(Jl •-

~u

n"

"c-

fV>

ry

"w CL 1

SI

oí n

of^

i -i .

en

-t-

Oii

ui

r^-

=1 O.

n o

":ri:av, *sy 1, l íEí rere

I i i i Ú t i l RU7Ví iT . f i=KumwimmíU ^'.'titís car?

n=?£s: no-;; e:; AL — ' .asen en tí.iovrít c iTssc .EJi r res . longres ioentiíica arciíivc v ares as veníanas3CDal l DCC e ÍOCC

32=dir s,y cakiiU cirsccior. sn ffgiBoria fl= vídsscu=hail push = codovnt nofiorej i iao au=strs o actualiza une van tana

subrutinss de la= otros ffiíc

HEXAS: tmumuwí io/03/e?Ei byte en AL ss convierte en dos bytes ñSCIl en BX,

cali ' rrí=ende

¡muí IDVHT i ju f ímai í i i oe/03/89;Esi= sacro recibe ei noaors del archivo os ventanas er. un ASCI 12 qu=¡inicia sn BIRABC. Acre si archivo, tras todos los grupos onncipaissjal área que eapieza sn D1R3ES y guarda D1HRES y LOH6RES er el indics.;En AX salen códigos de error: 00 todo bisn, 01 -error al abrir arcrávo,¡02 =i se encuentra que no es un archivo de ventanas, yi.03 error por íalts de espacio (LOHGP.E5= 6 grupas para Índice T I de¡grupos principales * 1 grupo pars una tabla de residencia actu=Í T aijoenos 4 grupos para secundarios, a senos que todas Iss ventanas sean¡principales), fíate; Un grupo=25£ bytes.iávnt aacro

push tíipush bxsov düjofíset dirascBOV éi.oííset dirresEDV bljlongrescal! rivpop bxpop di

pop dX

en da:

,„„,, POPALL UUííUMiíUi 10/03/89popall sacro

pop sspop bxpop espop OK

.-•

i=

in

ni

•-"

m

tu• II

Ql

•—i

Ul

III

I—

-O

. 01

(U

E

3

"ti

*-*

-M

111

-C>

Ll

>-«

Cr-

cn

-t-1

p

ni

•~~.

- o

in

en

ni

ni

ni

ra

tn

•<-«

u

u

ai

ül

^¡a

ni

ni

ai

ui

tit

m

m

c:

ui

ÜJ

ai

ni

"oo

< o

•*-

"-D

ni

LJ

«E

" a:

tn

m

in

ui

m

O.

«4

Q

•ra

in

c:

>•:

ni

••

ui

ro

inni

a

(3

LJ íli

•**•

•M'

d.

IXI

SK

wo

o a,

a i_ ü.

^c= i_ ni

c iii 111

IU

Ul

i_ (O

ta ni

rti

-M e:

tu >

<E l_ O a.

«t m Ul

-M in ai

ia BS

5-t

-CE

11J

C

o,

-<

o.

•<:

-e

•<

•<

a,

-tín

r;

i C

UBt

O

E

? a

in

rs

i

tu

n

cu

ni

ra

in

=j

a

a

ni

cr

n

o,

to.

-i

oía

' ><

x

x

x

*•>•

x~

lf¡

r-, „

.J

ex

-t

- •>

)-

>

O-

1O

!-

-

-

-£ ..

-

iu

iu

rt

CJ,

-I-

d-

10

IU

EU

ID

nanea;. ",av i. !?B:

rur-f;

pcci-

segvsroírvartisvntcirantnu&orpcoíiifinalinssnnsbyte

rvnt:

rvnti :

rvntlO;

.-ti:BOV

se;pe:retn

e*

BÜSh

E1DV

EUl

=dd63V

BtOV

poppopretn

osdv.dbQh

dbdedbos

pusnallEQV

BOV

sovSDV

addpushpushpopBDV

BOV

addBOV

incsovBGV

fiOV

inclodsbdecJ2

capjneC5Q

riv:as.í-tí:.

í'

CS

al.lcüchcl.clch,0

pddir,a)!es5"

000&A

fi(i0

55gvar.5!íQffV3r,51

di,dirinddi,Edi-f23di, 48a=ds55

dii.2ap,dibp,2Adijbpühsijbxes 93h,es;ídi]di

exrvnt 11ít,¿r,rvulOal,0

;SOi2 bytss por linee

:í- 2 vecs= B! * de cclusna

¡BagosncD donas 9=t3R Us¡cí-fset c= la variable actusi¡tipa: 'h't '5' o 'i1¡dirección de entrada de vsnt, actúa":it de grupos que faltan por trssr;coiuina sEcnia a:iuatssnt°:linea escrita actuslssate:í oe byt= lastrado oel grupa actts^i

¡dirección del índicejultifis ventana valida;voy a buscar E! noabre en las entradas;ds! Índice.

juóico entrada indicada por;DH

¡noabre de 8 faytes;leo ! byts del noübre ds una ventana

¡leo í byte del noibre buscado

jnoebrss iguales?

jnQfflbres diíerentss;iouales?

JffiC

rvrt!0: carj isPCD

SCY

rvnt '1

120V

fflCV

ffiül

atícffiOV

EDV

cspjn=JÍP

rvnt2: cap

rvni26: aovE a YBOYaov

eovfflOV

addBDVODV

rvni2ii cspjeaovpusfiaddHOY

Cip

JE

pushaovfiUl

addiOV

poprvní22; «ov

ffiDV

popincaovsubcap

rvntílrvr,t!0dn.dlrviítlesn u a b y t e , írvntf

3i,dir:rd

tíhdi,axdirent,di

dh.3rvnt2rvnt4dh ,2rvnt20

¡busco er, tacas la= vsntsnaE"¡no, =190,¡53, noitare nc esiste,¡error = 1

j g u a r t l D í ven tana a:tua!

:uDico entrada actual v;DS:DI apunte a ventana actual

¡veo si es F o S,

;5?curtdari5. Reside?

di.íci-íj ¡íio, ubicar ia ventana.byte ptrtdi-:-S3,2 :QDV resicencia a ls ventanasi,d:rintí ;DS¡SI apunta al indic=ah.[5ÍTl2] ¡ubico tabla OE residencisan ;AI tiene el offset oe la taolsal,O jrespecto dsl inicio d=! Índice

bpjss ;DS:BP apunta a la tabiacljÍ5Í-t-153 ;CL = í oruoo que va a s=r dadobSjló ;5 la ventaría actualbyts ptrldiibsl.O ítEraino ventana?rvnt3 ;EÍ.

bpbp,cx

al,Orvnt22si

jnüj ÍBsr valor en tabla

jorupo estabc libre?

¡no, quita reEÍdsncic = U ventana

ansi.axbyte ptrUKSÍjOsi3l,[5Í*63 jven tana actualds¡íbp],al ¡a la tabla de residenciabpel jpreparo proxiao grupo a usarse

c l a h

rvní23:

rvnu:nmt31:

rvntí;

rvnt41i

rvnt42:

JieftOV

£GC

H3V

aovincCDp

J H =

n\v

cae

;9E3V

CDV

AOV

ffiOV

GU=h

fltDV

iniDDp

SGV

CCV

asoSOY

aovpt!5h

fiQV

intpopincctpj(teBOY

ÍOV

eovfiOV

fflDV

aovBOY

aovacvftOV

addposoirfiEV

lod=ncapJ E

StOSí*

jsppushEOV

rvnt23ah , [= ÍT?3St i . fc

c i . ahl31rl5J.cl

bl01.20rvT.tiiD S . i o

d h . í á i T b x ]d h . Orvnt4d i .Oc x . Os i .Oah(42nbxox,[5üI332ihbxdh .LÓl rbü r í ]

dhüC X , 51

cs,,2565h,3írtbxDx.Is iTl3321 hbxfalbls20rvnt31ax, tdi i l23linea, =hcolu6na,£lal .[tii-í-93nuagrp ,a lniiff lbytE,0si jdirindah,[cíir203b p j d i«1,0s i j axcoluina . l inEadi,pddir

a l , lrvnt«

rvnt4 ídibs .oí fvar

i iernnc 2^=i ds r2=id=nte5:==> voy 2 inicio d= ar=a os;s9Eunri3ri25

:YÓ revise cuairo grupos7

;na, volver.

l iso ? d= q rupc! tsrsinC' ';s:." f l C í CX í3í=DTÍ52t tíSBDr

;inicio de arcnivo

¡LSEhtí

:D5 :DX apunta a fauftsr os lectura¡Leo un oruoo del EJÍBCG

;READ

:ya leyc 4 grupos?;no, sigo leyendo.;esq. =up. izo.

¡5 os crupo=

;l ds byts actual

;ñü posición priser grupo

;SI apunta al grupo

¡variable?js i .jno, sosirar carácter.

J!EO uns veriable

rvní43:

rvp.431 :

rvni44s

rvnt5;rvntí:

rvntO:

rvntOÍ :

aovffiOV

DQD

in:Cit

J5

SIOSK

n=xa=:fiOV

5105K

iQGsü

BQV

StOSIí

incEDV

caliCEp

3£adtícasJS

caliCSC

incftOV

C*P

jgeincSOY

ÍOY

posdirÍSOV

SOY

cepj bjapSOY

popal 1sovretnpUáh

sddcspjboecCíp

jn5BOY

jfipBOY

os.segvsra i , [ í ) K ÍDs

ot tvart ipvm, ' f t !

rvntí ^

s l .b l

co lunnatíX,51

rvntOd x , = irvn^Slsi. 2= 1.1rvntsrvnííal,!rvntScolufinaal ,G5:tbpí-14]al jcoluisnarvntí llineaa l jd s i t bpM?}colu ianá ,a lcoluaina, l ineadi • Dooiral 1 05 1 í opT¡ j]a l , linearvntarvntí lnutbyte.O

ax ,nu i sby tE

bpnueby te j2nusbyte,100hrvntOZnuagrpnujsarpjOrvntOÍ5l,l

rvnt03sh,nuflgrp

Ii•

!

¡

i!

j

);'¡,;,

;

;!:

•J

í;;

J

¡l:•

J !

j

i "i¡

r͡

í

5 1

J :

j

i ';

J

jvBntana hExadeciaal?I 3» .

;nc, ventana ascii,

;fti =e conviene en ascii en 9X

isuestro sitad aas signiíicativa.jLeo étrióute siguiente.Susonoo;que Al=í (otra variable) vÍBUBstro la otra sitad,

)Con DX veré si hubo csebio tís grupc,;vs si grupo actual ya rebino.:Ht¡bo caabic de grupo?¡no, SI spunia correcüaeiente,:EI, hago oue SI apuriis bien,

ino la Yentanar'¡ai, salir.:nof seguir,termino ventana?;=i.

jtereiíio liosa?

i no, continuar,:=i, nueva linea.jprUerá colupna.

jteriino ventana?

;no, continuar,

jvaria cantadores y ve si es necesariojeapezar otro grupo. Altera ftX,¡tersino un grupo?¡no,jsij un grupo aenos por aostrarjterisino?;no.

5£Íao con ft!_=l,

j leo un í de grupo

ace

NACPR&.A3*

¡K=;rc rÉrssíirc? Función

u:V-ír Salís = lí AL-»S:JÍC cir . de ur¡= tabis¡-ir . ' jCro tersiris £>¿cro y dé un jsen=aj?jg e i c r t s r ¡9= un A3C1Ijggtcs té K t v , y u - T , t i p ! j !es un bin¡ hsí; o riec;c=t i iRe OUÍT ¡55 un string áe! teclado •íliir.íir, ncs.atr ib " 'oorrá uric íin?ajlcippní borra pantclls¡print S jy ,d3r ,5 Í r ib pone ar tsxio en s an t a l I s:r£=;23 ¡restauré linea 23;salva23 :=alva linsa 23

intercasbia psntaHss ds ususrio y PRGsubrutÍTias de lo» otros EEcros

í l i i i l t ACTUAR r íUínii i iuíi 30/03/5-;l£= =1 AL-esiso sÍ9fflsniD ce U tabla TfiBACT y salís s J a Qireccion;dads cor sse eÍ9E°nío. AL-0 pars °i pnaer eisaento tí» Is taóls.actuar sacro

local tebactpu=-h sifflov 3h,0atíd sx,sxECV sifOríset tabacttídÓ 5Íi5S

fiov ax,cs:[=i3pop si

tabsct!

FiNHACRo íítmmmíí'20/04/e?;Ba un asn5SJE de fin ds sscro y espera un ESC para seguiríifissrrü iscro

cali ríitisende

j i i U í l EETCHftR nnttií-ííiUíl 23/03/39;Les £ 6CASCII un A5CI1 05! teclado o buffer de sacros. En 6CCOD¡salee! siguiente código; O, hay dato valido en 6CASCII. i, ENTES, 2,;TA3. 3, SH!fT TAS. í, ESC, 5} alguna Tunciorj o tecla especial, cuyo¡ASCII extendido sais pn 6CASCII. Pars cus kNTEñ, TA3, SHIFT TAS y;ESC :=an aceptados coao datos noriales, se debe presionar antes FIO.gstcííé' sacro

cali rgchsnda

ti-

o

^

i ti

u

i-

:«!•;

iii

ni

ui

t:

uj

11 ca

--•

cu tu

u

ai

tu

ok»

k.

l_

tU

i—•

II)

o-

- o

m

i_

t: ji

LJ

13

ti-

••-*

k-,.

új

^

"i.£

= ci

ni

- •—

< oí

o

M

c

a_

1.1

«i

m

ai

LJ

ríi

LO

—i

•—«

,-i

n

—•

-CJ

CJi

C

J

I\ —

I

•o

•• m

w-

M-

oí—

=i ti

ni

a.

_t;

-*

a>

m

f—

o.

Jl li- li ]I

-i

'•I :j •í •ll '1 ^1 -- — -1 ."1 p.

^1 :i 11

k- L_ t3 ri OJ

ül

U)

uU O

J1

U»"

•!! • n i" ^

u •-4lll ai

.. Cl

k'

•u u c;

=1 u..

<ii

i¿_ k.

r-1

••*

^

|' O kl

.u k- •u

IU tr.

m •H =.1 cu t-i

tu o — < di

k- k. ~i

u o •• •

iíi

a

IU .d u Ul

r— *

•<

- V*

r-i • <u ,ii f* k_ k.

fli

4U

-IZ

L J ni

— .

.Í3

.1

•31

1-

l —

I.L.

V—

*ur

in•*»

-a•

»^a

PÍÜ

t~~ ».

llT

-

III

k. ai

>- >u k- F1I

a.

o "iri ni

m ni

Ul

O u.; a.

m ai

-S Ul

ai

o -M m -a C

£=3

'i-* Ul

tt. LU

LU m c:

t/J

111

re:

t^3

en lU c:

"*i

^^ =3

<.n> ^j

tu id *« ni

O ni

(Jt

ni

ni

^> •n:

a Ul

Cl

*— t o c »-.

o Ul

ai

•-^ if)

•a

ni

ra

ora

111

m

u

-.

k-

ni

i_i

c:

ni

o

in

ni

iriin

ci. ii

oí ^-

O

fil

>-

LLl

-O

ai

m

m

az UJ

i— =K

O>

-X

IU m

ai

-a

---i

ui

ai

(U

ai

o

a-

-•

!i"i

_J

Ll

tlJt—

ai

a.

ni

tn

-i

-ra

ai

uJ

i-oui

ai

-a

e

- LU

x

in

—.

a

o

ni

u

u

ni

o. ra

, -o

ia

ra

3=

ao

oa

rt

ic

io

_.

o

o.

a.

na

>B

LJ o,

a.

ai

i tU

•+

"*

ccv

cal ípoc

a l . n u= h a ic«i i fl i. j

LHPPNT niiitvmmU 15/04/89isarrs ¡a pantallaífSDcnt íuacrc

push expu=h dipusn axBDV cu,2000BOY 01,0

flov ax,0720h5ÍQ5W

3X

diex

repDCD

DOEJ

DOE

snds

¡iííiíf PRIK7 líííitttííínU 2B/C3/B9¡EseriDE si issto apuniadc ncr OÍR =n lo pantalla ó partí" deííí.Y) con atributo ATRIE. El testo debe tErcmar con un 0.print ffiacrc x,y,cir,atrib

P05í3ir X,V

aov sijO-fiset dirsor ah-otribcali rprtpop =xpop siends

¡ttítii SftLVA23salva23. sacro

cali rsal23

21/04/9?

¡ííttít SE5T23 r 21/04/G?

cal! rrs=23en da

¡ittttl USRPRO líUUtttHiiit 09/OA/89:!ntsrceaibia las pantallas de usuario y delusrpro ftscro

csll rií=rpen da

íUUI 5BRPRQ Í U Í ¡in

i—

ui

LJ tu 11 O

O

—"

*^

l^

f<Z

t -^

> C

>C

- -

CM

C

--I

-o

.O

Uu

i-

ai

ti

U

l L

t -D

a ni

in

ra

->

•1-

1

O

U 'U

ra

¡U

ITJ.

PtOV

CS0

CfiD

£OV

rcch3!¡ cov

dh.an£h,óSrgch3íaí.,15rocr.fd i , 3

TAE?

Cffipl /ÍC

J Ü p

"BCr:32í i3V

Bi)V

CEC

CfiD

jeCip

JOS

ErDV

iGV

popDDp

r=tn

rccn-j

aí . ibhrgchíal.OdñrgchíEÍ.9rgchírgchlQccod.di

jEKTER

510QE3

cap gdrsset.ljne rgd2sov dhjEbx]EDV Si, O

SOY tbs+13,31

EOY SÍ.2

aov al.'O'rgo'i: aov Esi+bKJjñi

inc siÍÍBC dhjnz rgdl

rgd2: g=tkeySOY gccod,0csp scrsrr,!jne rgd21íinaacrojap rgd2fflOV 3

cap aljOjne rgd4BDV gccodj!csp ah,72je rgd3í

rgd2

¡iniciaüso variablES?;no,

;inici«ii:o buf íer

errar EÍÍ (sacros?

jtecla 2ED2CÍal?

¡ílechs arriba? 4-Ín

•13 ll

•-.

Cl

—U LJ

<-

---o C

Ji

ti

U u

r-o

r--

>i_

-oi C

l

¿i

cu

r>->

en i-t

ra

-El

CT

Y

^1

C3i

•-^

Kll

a>

—- •

—.

-ra

•-

<

-—

-o

j^

i>(

-o«t

- -a o

ti

1

w

n-

-u-

o

•-<-

— •

-a-

o

-*-

tJ

"1

3

— -C

l "O

«•• 13

LJ

T3

" -C

l U

"O

a<

cu

•— i

131

i»''—

' C

T<

u

ai

•— <

cu

u

ai

,C1

-s

i-

OrO •T •a

— -

ai—

* O

*

-o-£

3

"OC

l-

131

Ic:

m •u-

c-t

- i/i

«i-

^

O >

-'•«

-

-

-^1 .

— 1

ni

LJ

• ri

-^

-I U

e_-

ea

sí «

c;

--1

-'-I

•".

U '1

•r-,

U

•-—

, ffit "-.

U

I1J

>•

CX

Cl. III

e:

o

«i

a

e;

-^-, s .

, u

•—

iO

O

O

í

t'~J

UI

«1-

-i

.1

SI

r— 1

- U

U

LJ

d.

a.

cio

-a a

p.

ni

«i

u

K

ID

ira

ni

«r

-«i-

« -r

a -o

O

O

23 a

ía

«

tn

tati

ni

ra

.

'31313QÍ

ÍOPÓ.J

ai.tq

dif

OB3

dif

I i"difdod

¡ppÓJ

3p

JÍOIÍJSAQ:

¿ ' IP

xpcpoj

xp¡oxp

TS

GüÓJ

XD

50

A05Í

AQ3

ijsnd :cp5j5UC

dai3H21

A.oaAQI :<^pÓJdoddoddodA03

3UI JjQypÓJ

GBf

doddeadan ¡CC^QDJaiaso

«QTiJSAQ!

¡O'lP PE3?

XQ qsndU p ( p AOB

sp dadGBf

31"

=uqaUt

Q5f3 '

auf

3üT :t?C7?3.

31

fav 1. í95=> FUE?? 52

" ú j s í cisr C . , h i J i s ü TJ; rcco ,5 ios Díñanos no los t r ans fo rmo yj & D r:;.-' ; io= dsc.

r,:v

d!.2

a&v = i . íbs j - - . j ¡convierte HSBcal; rc¿03aov c ¡ , 45Eil Oh, el

f iov i s i - i - i J .dnEOV = Í , t b ^ - í - 3 3c= l l rc:&3adc í = : r i j , t í r , ¡HSB t rans í

raes¿: srv ó .ac r^JJ !convi£rio tsbcsll rcá03EDV el.4shl tír.cl10V t = l] .G'h

sov al , [bx^3jcali rcd03add Í5i3 ,üh

rodt: riodor=tn

rgdO: push bspu=h exsoy s l j t D S J jpQns 9H En E! buííer spunt, por BAcísp a l . C b ü M j ;ya no hay espscio?EOV s i , 1

inc byTs p i rEbxf í ] jincrsaento contadorEOV 51.05!

aov bs , ícffip byie p t r t s i J j íJE rgiOr,

rodOh fiov a l , í bxT5Í f2 ] ;rots a la izquierda n-1 VECÍSlov t h « f s i - f í ] í 3 l ¡donde R=Í de datos pedidüs,inc bíeso b l , í = i 3jb rcdOl

radOfi: eov íb - s f=ÍTÍ3 .dh ¡incluyo nuevo dsto,sov a l « O

rodOi; pDp espop bsrain

rgdOl ; psish es ;prsssnto burísr En p a n t a l l a

'Hü "a OQTSJl Aí

-IH O3sngí

qPTP

Oíl!P

¡SQPaj

XQ

surG3D

3UT

AQB

13 ÁQ9

U1BJ

xq tiodAOS :3UC

AQS

: IZO?"

AG3

A09

AOS

usndU13J

aoddod

[5 aji=3ng

OJJOO OJ5ÍTJQ!

0';cj;X2!

S3f

aq1

X3f

£'ÍO'

Pp

TPSD

TPTsÍ5T5

¿33

AG3

ppsT no

Aul

022

PP3

AG3

AG5!

TP j'Jtaszis

1 TO íi-j

'U3 AÚ3

'da ACJ(TP AGÍ

'p JTp=CC

>—• •

m

u

E*

utro

o

'_

i13

F>

*

-•o

u a

<

< n

o

u

u

o

o<

ru

TI

<

-e

[1.

Cl.

ira

-tn

n n

n -i

n —i

n o-

0- '0

•i-

vy

a-

n

*i

ni

0,1

d-

LU 'd

-i -i

un

<r

aO

J

t-*

ti o• o Í.

-J

n o

-i • o r-3

n a

cr

n

-—

r-i

a.

ra»

cu ni

n c= Ul

nO

IP

••: •

<

in in

u>

mi-

. \

<"•

D

.I

DI

r

o

i n

O

r' r-C

L

III

l'l

ui

- -

O

M

O.

•-

a-

-u-

o-

*-

e^j

i-t-

ui

n

" 3

x

d-

o

ea.

o

rti

o

ci

ID

on-

-o

-o ta

O

O

r-<"

Oo

m

-Q

s?

o

. P

' 53

si

a.

o

o

a

o

ni

ti.

o

o

rn•<

<

n

i •<

n

ci.

«e

(i

a.

in

ri

m

O

~-U

l D

33T ^

n

n

ci.

iu n.

ri

t[I

ITI

-T

>o

—i

r-J

iii

o.

-Tira

ri

>o

•-•

•• ;T

I- —

na

13.

III

t.»

|~

J

-.J

(-»

- a

- a.

C-

HI

?*'

>-•

•I-

•!•

Ul

I-

ni

ni

tu

--<

J*

ÍClil

I/)

1.1

A

l -C

J

ui

oO

-J

3D

I -•

-

tii iz

i ni

13

in "o

u

u

>i

i -1

3 ui

ni

1/1

-d

U

11

1

— .

'-

t*

IT-I

-ci

i- -a

ca

a

a

nja.

ex.

ci.

L.o

o

o

rj_

>

>

>

ct

LU

o

o

o

ai,

fea

cu

<a

d,

ui

ni

:>

o.

oí >

=1

¡3

O

«

C

OO

. C

l.

tíl

u

.i~!

Id

•—•

-U

-oOí

10

•ci

-O

fu

ci

LJ

<n,

LJ

O

ÍT.

10

LJ

e:

- i-

zi

ni

ui

se

LJ o

.i-i

&

LJ)

iu

Ul

ai

ai

ai

ru

nj

ni

m

*aI™

L

_ l_

L

.üi

tu

ai

ai

•-

'~a

o

-o -a

ai

c

•=

c:

r:

>-n]

m

ni

ni

-*

H.C

i .o

ci

.o

c:

rtl

ni

roo

a.

tv>

-.

in

10

in

-o

>o

«TÍ

ai

ca

co

en

-a

.a

.Cl

-u 'o

T

Jx

s-

-a

ja

ai

ni

(u

C3,

ni

ni

tu

ai

aiM

•-

* r-i

c:

c:

r=

ÍM

" 3

3

M

>•-

O

íni

a

a

rui-

ni

o

n.

Q.

l_l

r-

O

-_

IO

-Oci

. a.

LJ

o

ra

un

ui

•-•-

O

=i

£3 .a

U

LJ

tj

O

(J

LT1 ID

UJ •«

ü.

m a•ci

o.

i -.

u

s

ni

o-

ui

CJ -a

ni

•.-*

Z

3

Ok.

>-

. k.

iu U

l.

-i

i—

a-

LU

>

— ••

>n

m.»

-,-(

rn

ui

ai

k.

ni

ZJ

•>>! iii

ro

ci, a.

.—i

">

LJ

Cl

"O

' IZI

• r*

•,">

-c-

-^

ivj

c%j

*z>

^,

L,-f

<z>

c> -^

O<^

0. C

i•

fll

-9• -

f ^^ ?

i u.

Ul

r-C

lO 1»

.

e"

1 k.

L-

Cl

C.)

CJ k. I.J UJ

H

O-

d,

^J

=1

ifi

-ci

LU

1

Cil

r~>

H

b iiu

i:

o u

-O

r_i

a

•"> tn

i,

a-Ll

Ul

<

<C

l a• .

a

u

u

• -<

k.

(II

ifl

ni

m

u

a

«5

üi

•o

ni

ai

rü o.

111 *>--

•*-

-o o

ni -ta Til

U •*H

•a K:

• •-•

CS m T

Zl

lll ai k. ru 3

ni "Cl o u_ ni c:

irit

ería

celo

ngitu

dco

ntad

or

.!-• Ul

Itl O LJ ia tí

ai k, .0 ai a c:

u o.

-Z3 e: ni e U'l

ÜJ

TZ

l

Q Cl

12 P ÍLI

•a m ra.

a.4

-J—

1

a u LJ m ni -a LJ

ITl

.Cl

oí L-

cj

-a

ra

, *n

r

ra

ei.

k, .e

u

ti

1C

LJ

-o

ci

xa

-o

iri

ni

m ri

-oca

o

ct.

i_

i ^-

te

&

13 «

•CJ

"Ip

"C

J 'L

J

-d

rn

LJ

L.

IZ,

CJi

O

. UJ

•o

*o t3

-O

ia

-c l_

U

L

J

LJ

U

LJ

LJ

na

ni

n)

n1ni

o

IH

«i

tx

e*u

rn

i_

i e

K

c:

Fas; ti

ccrruaceraisa:sjtcace=:::r

inssac

Hs»acpcbaa:coívsncciliinCCÍBSS

co!a:tcolla:?

niníbuílonolifiílederíleizqílearrusaba

crctrloctrlpctrlictrlfcesqsilinsupesqsd

linlatssqiiesqidonnorebnsubbbninvaaxasc

iictcbnr

c:dbri l-

cbd:cbdest¿D

dedbdbtíbdbdDtíotíc

,CDÜc

estrnestrn

eauEGU

equeoiiequSGU

5DU

equsquBOU

equEQU

equeauequequEQU

equequEQU

equ

*rr£±j : -¿ .'5 te:. á. ' .«'rBarri este «c»-c • .5. ' ís íT I . í )2. t5 ' 1 l

"iricio oruEL¿ OP r:5:ri-. 5?Qü;r: tr.TEF.. Tgroiner! '•;•.•;'inicio CQTIOÓ CE c,ó:rG. fresionf uri3 IE:Í£/.-"Fin d=Í bufie* v íin oe! sacre, -rssicna EsC. ' .C-33 tí'jp í20h)J-hf tCR05." ,0E se Q'jsden usar ñásta 3 aatrns ag ¿í *

"opciones caí ico.' ,0* Ingresa desas aeml crinciDal con AK.''.01 EscriD= ei nofr!br'E es1, enero. Tsrfiína con ENTEf;.t'.(1

' Si e= nueve, defínalo, " .018 si es viejo io cusfles c^otjr, ccrrsr c narrar.*,í'

v £si£ ss el íntíícs actcs! tic siseros/. v6 dúo (2Qh;64 dúo !20fí¡,&*Probar...P Correr.., C Borrar.. .Bp, 0,3, 'PCP*bnnont ¡atributos: color de ventanabnnont jcolor d= Hnssbnnoris jcolcr de explicaciónensebe ¡coior de suoopcisn actualbnnv iccíor OE cocicr. actual

ríniciííBar.ríinalsnsarnaaxbuíjsíis

7 - jiníoraaciones asociadas 0 bufíerlóO :30í2 tincluvEntio atrioutos)77 j teclas oulsatías: —T =

728013!5U0

HÜdah ;codÍQos pars dibujo de cuadre

<MhObíhObíhOcOhOd9h7 ¡video noraal (B/tí)0?h ¡subrayado intenso •7Síi jinvsrsíí64 ¡sacros de 64 Hord5 saxiio

inclutís TBS

flujo proc near

¡sjorutinas ss -¡aero; ce! MABíl,

.Sdata ¡:ricia;izc 15 i' - -

acvPCV

BOY

csp

JÉsed

vidadflr!aov

\ EOV

SOY

EOV

cidXQr

TSDfiOv

i_í: pcr.ár

QSC

jn:sovaovcali

es.axax.es-.Ce3h]

«!3b4?0h

vid=tíírds.BOOh

vidBossgjOkes.dxax,072í'n

es. 20&:

oí. diEIDSts

el ,25Oa tiLl

ijíaseptrjOrrvalptr,QT-5rinic

;2Cm ~ * ", 07ñ = VÍQ30 norsai

íDorro pariLtí l la

;=5cribo 25 LF para poner¡cursor al íir, de patítalU

rrSEL inoreíancc¡rutina inieisl d? usuario,

guarpanta l la ;¡au5Stro insiruccioíiEslisppntavuds insprDg.E.collsctqstfesyrsstpantalla

niv-1.0 jinicialiio var iables qusbuf íe r , ! ;sín=j2fi í lu jo del proarsüa,

tsov bopc f O

GOV bver,C' ¡no varit icarEOV bgsBC.O :r|Q 9ró'D5r ¡sacros,EDV x , l jopcion actual

ajiivsl:soy y, O ¡subopcion actual

b_suQnivel!buida nclavs.b.TÍKr ^Variables del aenu actualísovbuf rsspbjT.ruftBr

KOV al,nivelÍSDV re=prave..alBOVCUÍ butrE'-í . j i íTTerEQV al,nivsiBDV nivelljc". jVarisbles OE opción actualinc nivel 3

ta-

E?

n n

i-t-

•ia

o-

-io

o -o

a

n n

" | I

O

O

»—

SI

OJ

o.

o.

a.

-i-.

-*.

ni

in

in

uiru

rn

ro

ru

a

o

o

o

in

in

niiti

m

m

O

O

O

Ul

111

Ul

a a r:

O

.—

1..

i n

i- -3-

\

•e»

ni

el

•-*-

ni

ui

-i-1

ul

-i->

3 oí

c:

1/1

u

ul

>-.

rj

>-

je

K

.ra

u

L_

Ul

ai

ai

ai

a.

u

u M

o LJ

ua.

a-

OI o -

u .a

í-~

a

c:

a

a

c-í

ÍEBOf i í

evuds insproz,B,eolia".cs t reyrestsanialls:CD b_5uonivel

EDV csniccr.Oauarpant=ÍlaÍ-QV ss.OTÍsst bienco

CÍO

¡Rutinas 6~ sacros.¡resal s íjyts d= interíacs,

snivei actual e

aov ax,offset noca:

c oty¡

aetkey¿IB

ffiOV

• DV

ECV

esv

misheossoyincftavrepSOV

40Y

repaovfiDV

SOY

rsppopiridiase1 eppntayudaBOV

ptenuaovstatusíinbufífflOV

incaovcapjnsEOV

statusí

c_ok=

s.l íloá (aacros ss deben iniciary, 6 :d5SQ2 el eisac punto d= oartidiconc.üss.C ¡borrar srsa de noibre os sacro

ds=5

di.o-iíset nDebij-fdiCK.9

stosbcx,53Xfiac jborro buHsr Q£ Raeros.dijoHást burísacstoswcontsac.Oex, 7 ¡borro nonbrs actual.di, offset rioibaacstosb

¡prepara un Índice de sacros.

irisase, Sjtcllact j instrucciones de sacros.ax. offset Escrnft23,collactíassptr,QfTBet fsac

¡EUEstra Í555 dsl prooraaa.íio&buí ;rscibe un nofibre.sijoítsst nofibuísi2lj[SÍ3

al, (I ¡se dio nocbre?c_oH01 ¡si.íaseptrjOTÍset inora ;no, salir.

XS'1

'OJ35Í JSaOJQ B

3ESTUT

'3=31 JSJ1SOSÍ qtJJCj

'a_132<fl JBqGjdí 35

•ofau

'UQnsasjti ap EJapusqí

7'IS

;5}}o-ts

ADZ

AQffl

AO«AGS(Jod

P

sa

sa qsíio

]~D daf?3G AQV

AGÍ)

1^555

AQ5

HU55Q

AGÍ)

ap

qns :£H° -

AOÍdcdaaJAQVAQUÍ

AQffl

dea=o usno53 qsnc

4.5^1515

«G'J

'OASP.Ü OJ3S3 JSQ3JC 'GÜ! AS3 :?'13 3

¿onói+ae

cu:30JOU 13 * * n • v D A r ".r* -J ft - ¡\<J J

I'lO 2 cu'

3? jjp.ü £y3

jSiiuaaó ¡io"cía": -TüC

re*150 v

r.úv

l"\C

!5DV

íiDv

iticcovr¡c-vr=p

C-QVS*si.ofai. núCi tCr •

si , byi ano E51

di, oíL'¿ ,1

sovsb

í tEv arEEí'9í.3:

ts Qtrisi]ac,al

Í59t TiCEuMi

pop esreírGOV áü-ofíset pierascossiiu 23,coliactccv -faseptriOÍTset -fcorr5Í£Íl!S:

"EÍK6Vc=Il if i imacEOV

'.ablenao datoe ds sacro actual,

;corr=r sacro.

jtianoeras par= ccrrsr sacroE2V biatíZ. 1

: ÍQV Tfiora

eostrarsí.l

jr\SQV

puáhpu=hDDD

acvauladdSOY

KOV

Korrepsovaov

c_okDai;,B5 E-j-

55

cl,nusaacelax jo í fss tdi jsscs,Bas, as510 =b

3X,2l«BXfi

cunusaac:

ssí aresasc

§ul eladd dSjof fsei ase!aov tíi,axS3V CXjBaKESC

xor aXja1,:rep =to5Kpop 95

_ok5: restpantallsjap b^subnivsl

¡borrar escrc

-'rasrasa

mn ttn¡

==:rs: ctcí?r¡ dboc=r2 tí &

DDBr4 dbQpBTu db

oDsro ODoper? db

opsr? dboDsrp: dtDoarix diOD=rfL: deoperleí dDOperíé; Gt

GQsrcc dtopsrjc dfcOD5TK21 dÍ3

operes íSCopsrsto dbopsr=i dboperrn dboperrí dbopsrll dboperiS dbcperint dbopsrÍD dbcp=rir dboperaa dbaperxlE dbopérese dbaperj! dbopéralo dbDpfirU dbcpErrrr dboperhlt dbocercuc dbopernop dbreoi dbrsg2 " dbiodos db

c ~ - i '

•fiCDÍORlfiflC.SBS.fiíiL'.S^.XCíi.CtíF.-'Bfift,DfiS.AAA.ftA£.-

•Ó'jÍQ.MC.Z.NMÉ.fijijHS.PjKP.L^E^E.e.-'PUSH,PQP,SAH,LAn, '•RQLÍROR,FÍCL,RCR1SHL,SHR,???.3AF;,'ITESTI???)HQTfHEB,KULJIHUL,DÍVtlblV,-

'INC^HC,CALL.CftLL FftR.3KP.JKP FAR,PUSH}??''PÜ3H ,°2£ ,'JTEBTJC^j,''RG^,??rt

'Leí.. ''KCHc Ak.'CRD.DBW,''OHP,CALL}''üAIT,''CHPSjfíOVS,1'ST03,'•SCASjLBDS/'RETN.'-•RETF",''LD3,LE5,'•IHT 03.''1HT ,''ItiíG,'•IRET,''AAD,AAK,''XLAT,''£3C ,''JCXljLOOP,''QUT ,1« ,OÜT DX,''LOCK,'•REPE.REP^.EPHE,''HIT,1'CHC/'HOP,''ALjCL.DLjBLjAHjCH.OHjBH,''AX^Ü.DXjB^SP.BPjSIjQl,''SHBXjDlTBXjSJrSPjDHBPjSI^IjBPíBX,'

casos db Wh160h,70hfBOh,84h,88h,8chl90hdb í l h s h ^ á h b h ^ c ^ O a O

III

Ul

11)

ill

O

1 J

01

U^

.1

CZ

*--

a

-a

ti

co

u

LJ ni

-v

1_"

l'.

*/

_

£~

o-

••>

.u

o

1 1

-1

11

) II

..-

(11

i- -J

11

11

111

- É

-r-

ri

••..'

. i

11

> i

i u

• «

ít

t , .

.U

LJ

-, 1

1

ti

u

va u

1. 1

t-

LJ

Cl

i-

r-iu

ru

111

Ul

10

TO

LJ

IJ

m

u.

ui

m

LI

(1

á o

í¡o

-a

* •

*. •

ni

ai

O

o

TJ

U

1 1i

>m

'[' t -3 13 a u 01

IJ 111

111

••!-

• ri

ai

i-i

ai

m a

na a LI

rn ai

ni

ai

u ai

ni

O IJ u ui ai

L>l

ru ai

m Q

cr-

o- ai

LI ai

Ul

a Ul

ra -M ai

ul

o

o- rjj

IU LJ Qi

111

a u- o -i-*

u J

Cl- cu IU ai

Ul

a -o

Cl~ ti u ll- ai

Ul

rd LI ai

m a a- nt Ul

nj

ai

Ul o Cl

•11

O -»a" ni

ni

ni

LJ

III

Ul

a o m Ui

ul

no Ul

ill O V

rn n i j

ra ra ni

Ul

ra u ai

ni

M- o Cl

' a •i-j

Ca ni ni

Ul

rd at ai

•4

- a o

O 4 J

Ul

111

m LJ

IU a o .1-*

LI

m ai

Ul

ru Ul

Ul

O o

U a -M

LJ ai

Ul

ni

m in Q a Oí u ni

ni

ni

t-j

m Ul

Q ti

L4 in ni ni ru Oí

Lll

•1-

C3

UT O -hí

-a- u Ul

ni

• M O

í11

1 o

LJ

O LJ m 111

ni

u ul

O a" a co u in ni ni

-i-i m ni a

LJ

Uai

ni

Ul

Ul

LJ

LI

ai

ai

id

ni

•H -

•-!

Cl

Q

LJ

ai

L.I

1 1

ni

airr

j íJ

.4-'

-I-1

ui

ai1/1

U

l

ra o

U 'U

•u £1

til

111

•11

LJ ni

Ul

íl

CJ

*.*

"[1 ai

Ul

ni

ai

ul

CJ

Cl

U

O)

ai

ai

m

ni

ni

(ti

Ul

1.1

ili

ili

Ifl

Lll Cl

u•;i

n>O

í l|i

III

LTl

"1

-IJ

m

DI

ni

in

„„

ai

CJ

O) ai

in ni

LJ ai

m o i • a i ••

«d-

01

Ul

ni

m ai

Ul

Cl

ai m m «i LJ ni m a •u ill ai in ID m m in 1

3

ai

Ul

ra LJ ai

1/1

• i- a o LJ ni ni

1/1 ru ai LA o

• i- ni

Ul

ni

u ni

Lfl o ni

Ul

m m Ul

O

In ai

Ul

rd LJ ai

Ul

« i- o wr

M- ai

m ai

Ul

M- a

's 2 ai

ni

ni

LJ

111

m a i--. o •o-- ai

ni

ni

--.

--

ni

nJ

r-

C--

c:

-(J

O. U

.01

O.

E)

-3ul

3

-a

13

L.I

^v

nxi

o"1

- £> C

i l-

O

o

¿s>

r-

e*

- i—

(••

• i>

- 17

*1 IN

o.

tli •13

O

ÍJ

ti

1.

1 u

u

11

tj

u

i*

'*

;.• IO

»>

e:

es i.

L.

i-ei

'o

.i

•«

*-••

»-'

raa

i-

aL

-i_

uiiíi

-raff)

i

ni

LJ 1

J

-i-J

ni

.O

ni

--•

n

i~

ex

ui

ui

.4-j

-i-j

ni

=1 c:

ni

•u O en

V.

u in ru -o o 1= ai

ai

c: ai

ai

a ni íi 1 1

ai

ti u.

O.

ai

.1-1 in UJ

en ai -a Ul

ai

-a u a u oí Ul

o 01 01 ai LU tn u> \~

,

ó.

XI

o ro •~\ ai

ni

ni

-ni

V,

ra u o fll ni ai

=1 cu Ul

a •o u LJ ai

-o •u ru .u -I Ul.

ni

ni

CJ m k. ID 0,

Ul

ra o LJ ni

in ai

.0 ai

•o o ni

IU OJ

-M c;

111 ai

i— n o ra CJ ai

Ul

Ul

Cl

ni

i*

O

;: 5^3"; ¡í:e-usurera: '.i^scs*" e; siEce";:

¿re =;

ce,E. Syis otrísi.].', ísscsreaD/"'jne buscccsa ¡n:-

ifií Ei ; acutí i 51" si eissEpto sncontrádosnccrit:

lodsb ¡csráctsr =n ALcap al,',' jssparsdor?JE finrEad ;=i, Ünalizar trstíEfsrsncia5tQsb ¡no, trari=7=rir

DOC c?cct svrstr

sndp

public EDnvhss

!

;EstE procsdiEÍEíito genere un siririg cié 2 csractersá GEB-JE ES;DI queirscrs^sritan hsxgdeciaslcsntE si núearc BU AL. DI ES acosotia coso sn si

|tfiraoa¡ l = nüasrc por convertir,

DI = dirEccián d=l ultiso csrácter usnarado T

pu=r¡ exaov ah ,a land a h , 0 f h ;4 Isb en AHf t o v c l j 4shr aljCÍ :4 usb sn Alor ax(3030h jconv. a asciícsp aíj'9'jbs nusal

add a i j ' A ' - ' ? ' - !nusa i i cap ah/9'

jbs nusahadd ah , ' f t ' - '9 ' - I

nursah: stosv;pop expop ax

retr.COnVí iEs EHCC

con vi ti 5!-.

¡Este üracedie isníc ;=riera ur =tnriQ dé 4 ca^ciEres aesde ESiDI que;re[TE5=r>isr, nEsaaenrike":? 5 Í= salabr; = .üun tad= uor US: SUBí. D! as

a :CPG sr¡ rE=o?"-s ,

¡Bshda: D! = dirección es: ü l i i f f l c csr;ci:5r a^nerado Ti

push asSBV a K j í spíisíl Sí;

sov al .aricaií :opDC 2K

C2l l

rcc nsar

:Est= procEdiaÍEnio obtiene el nüaero CE 3 bits de los bits 3, 4 y 5 ¿E;BL, y !Q coloca en B!_. Es de utilidad paraj por eieaplD, obtener rsg:sn E! byie dE tsodo ds direcciünasiEfito.

i¡Entrada; BL

!

;Ss!ida; SI = ÍSL and 3SHÍ/8.

u=h ex

íc-v el, 3shr bljclpop esretfi

codSbit sndo

proc near

jEsts procediEisnto genera el string de aodo de direccionsiüiento [ , . . 3jdesde DBífes t r inq , y lo tsrsina con 0.

¡Entrada; riL - tipo de operarior ívií

i;5alid=i Cí = longitud prEsuaida tíe instrucciónj seeop = í si ss opera con ssioria

ri

ai

a

m

ni

in

n

nn

o*

o*

:->

er

ia

n-

en.

cu

Ul

l/l

U

LJja

ja

o.

iii -a

«i

.o

-a

CL

1S

111

(1

&>;

LJ

ti,

UJ

•—,

icí

o

-u

o

«ia,

UF

>

O >

-o

m

c:

a

-u

o -a

o

o

o

o

o

tu

v-. o

n

n

C

C=

IS

RU

! Lll

Ul

UI

^~

ia*

rj~

zr

U.1

ru

ti

iu

a

a •

cr-

ia

r-*

rt-

í-l

•i

ni

m

m

Itl

O.

-

o

\o

v\

O

r\.

ai

o

=Í neí'Cí£:m:c ia Dartu OE ESíDI) ssauít e! bit oe Girscción (DHí v ICEsc; oestes 01 coso er-

atícastr, addbs'.T'

EUSr' áí

icv al.Etos: ¡r^rer unor tíh.dr3: b-first

cali addsstrcov

caí! addbstr:EC snori íinoroer

~éll accüst'RDV a i , " , '

5Í55C

pac axrsin

orcer endp

addstr nroc near

;Est£ praceditienio coloce un string sountado por D8:£i terBinada gn C;óB5de ESiDIj scofiQoantíQ DI coso en readarray.

oush 51puáh óx

KÍEr: lodsbor al,si jíin de strinn?J2 finaddstr ¡sistDsb jno, continuarjsp short síer

-íinaddstr:pop axpop sireb

addstr ertdo

;Lo= 5ÍouÍEnÍ2= dos procediffiisntGS colocan los strinos apun-tarioE por¡astriño o bstrinc desóe £S:Di, acosodando DI COIG sn rsadarray.

aüD2£Ír cree n=ar

c a iDODreír

si, astriñeascstr

ñcíCitr oroc nesrDUah SÍ

aov sijbstri:C2Í1 sddstrpop sirein

addDstr sr.cc

ns=r

Eáis arocsdifaisnio gpfier= un strinc ds oueración de ázue,'JÍ3dor corr d^tosinsEdistC'S. v ic ccÍQL5 a sartir EJS t S í D I , acDiociando DI cccc sr¡ rsafiarray,

Enrrada:

Salida:

ñl = v* íbit de tice CE opEradori

CA = longitud 02 instrucción

, convhsx, conv2hex

•push os_ DU=h dü

push siSOY di.alBDV

sorCOY

or

EQV

catal: calipopSOY

StOEb

sovincorJ2

calijap

dsil: ffiovcali

-finaccdsta:¡aov

:ors5srvar K

jponer ur. Espaciojleer string os scuisulador (AL o fiEJ

si.offsst rsoldi, didatáí

readarraysi

bx,ilbxdl,dldatl

seun

jponsr una cosa después del acustulador

jSI-rBÍ apunta ai dato inssdiato¡•que =5 d° t o 2 bytss según

short finaccdata

convhes

al,di } recuperar u

¡icnoitud figpe: :;::r D--rr.r

Es:? p rac=GiBÍe ruG C S Í C L Í Ó í = :ir£:ció' ree!ccrivisrts en un »irir¡e £ osr::r GC £¿¡1,;, r;

pusn aspusn b,r

Dr a l .e l lasspiazasiento Oe un oyts7

COKji d s p l f a ¡5iecv éh , tEÍ^bs í23 ¡no

d53lb¡ scc £í.ador

add as,ex ;direcciori real er axuiish ax

1 ' Jt3V di,

stosfa —eov il , a r ¡poner =i strinccail convhespao axcali corivhexpop bxpop 3X

retnendp

HOD oro: near

j¡Este procEc3ifti=ntD colote SK'P o "H* EÍÍ ES:D¡ e incrseenU D I , según w. E=jüiil cara cosoletar instrucciofiss de string,ijEntrsda: AH = accede

í¡Salida: ftL = wj CX = longitud de instrucción

iüov al}ahand ai,1 ;AL = woush ax

EOV

al.'K'

¡lonq = í

üs!2:ic cree

ifiEnto Gsr i= r= E: strinc ú= CODO CÍE áirsccicnassisritc íE5:DK Acosnds DI CDÍIQ rsstiBrrav ,

Este crur¡ CDBr

£r,trad3: ftH =EL = 5r, íbits os esísrision ce signo y iipc QB

Sslida: AL = MC)1 = l o n i t u d ss ínEÍ

, addssir, convhes

pusíi bxaov al.afcand al,lEOV DXjoKseí atbsrr*cvcaliDUah 3X

B3v alstosbcal!sov alj','

BDV bX.ll

add bXjCxEDV ax^si-riinc exCBD dlji

jne unbyteinc exHOY 01,51

BOY é l j a h

Cali convhexÍDV al,bl

unbyte: cali convhexpop ax"pop bxrstfi

datadle ends

;obtener w

¡generar t...]

;poner un espacio;poner 1...]¡poner una ccaa

¡apuntar al opeode¡apuntar a los datos

;s=Q y w=l iaplics dato de 2 bytss

-.:•:£.. n .. ::r: f¿:?

Salios: AL = r¡CJí - lene, ú° irstruccior.

;; naydei ¡si si Isb d°! opcüde ES C, nev dstosrv 1

--' Í - K Í -

j:: snort ñndairstfsydá':: na; el . ' ' ;pcnsr un Espacie

5tDED

cov s;;,;l::.: DSC£:; ccr.v2h=x íDDns1- r.£t:CDV ex , 3

inflairet:r:v ai.l ír»=!

rstn

adsoluic prc: nsar

jEste procédisienío pone un string de türección absoluta as=£Í5 H5:DI,DI COBO

AL = wClf = lono. de instruccián

conv2hex

bxaov al,'stcsb ¡poner un espacioacv bx,l!add bXj3 jspuníir =1 segundo par QE bytB=cali conv2he3!SDV al,':'stcsb ¡poner dos puntossub bXj2 ¡apuntar si prissr par de bytsscaü convíhessev es,5BOV al, 2pop bs

-KI

-CT

-o

-o

-ea

-o

xae=

c;

e=

1=

i=

c:

r:

ut

m

ui

'Ji

1/1

m

<Ji

CX

II

I U

J !—

ID

Itl

in

n

c:

\o

CUV

pu=r.flUSh

ffiOV

fiDV

EOV

rspCDV

EDV

ccvCDV

ffiOV

andC6E

jriEfiDV

£n:5D1.

snrpushaovxorsddfiDV

popaovjap

nopre1: eovAOV

proced: eov

3:

diBSjSÍ

dijQííset oDCodec s f ?

ÍOVSS

cs.ai;addrjbxtiiDtísst opcodeal,[5i3ah,a!

ar.,úe7nari,2óhnopre1

n'.íai.lflrc3 ,1ai, elEÍ

5Í,QÍT5et segrsgsh.an5i,axal.lsi}síBílÉ.Qi

short proced11,0QíiS.O

CEftüpjO

aoveovCÍD

poppoppiishcaliJBP

ieníe: aovsovxor

buscop: scast-jbincjap

Encontrado:pop

¡transferir instrucción si segraentEj de dato;

¡dirección de ia instrucción

¡prsíijo de rede-f. 05 sagren t

ocode un oyie

jopcode en ah

senfedi

short ajustarQÍjOir59t Cc=05

sl,ahbx,bs

encontrado 'fax

shorfc buscop

di

prpreí:

DOD

shiacóD¡J5T.

CEll

CÜL

Jfi

capJ2

pushpush

pushttOV

aovre orí =pushí.orrssürDQp

SUD

fieg

inc

pushpushpopsovGBC

adtístdrspcidpop

80V

aovaovpoppoppopÍfiC

jap

ffiQV

aov60V

BQV

aovBQV

DE

bs.lbs,rfís=; d:r=:::c:

ci ¡incluí'" EÍ :r^i-~ 3= rtscc;:r:':t' -t

íiri£52100,0

prpref

SK

exdial,T'cx,3tscasb ¡buscar un ;ais!,alsc=st ¡buscar un nulíex,cs,ai jcx Oibe tener sí nusero es caracteres ouees ¡van 2 aoverse a la oerecha para que pueósCK ¡Entrar el prefijo de redeíinición DB seo.

dsES

dssi,disidi, 2 ¡preparar el ttovisiento

¡hacia atrásaovsb ¡acoBodar strino

ds

word ptr Es:tdi-lV '•$'allaneeE:Ctíi-2jj2ldiexasex - ;la long. de instrucción incluye al prefijoshort fin

al j uness:[di1,alHord ptr s5iídifl3j*:B'byte per =s:[áH3],0al,255cs.l

ííor.is

JD: sriDrt riñe=eqrs

tifié:

fiaycusb;

ED'1

«vpop;to

ousr»capjaBOV

EOVcalíBOV

ffiSV

calíECV

C; ,1

el.lC 1

shtsrt finOto3í -

Si

bl,3cs3si ,oíís=t oíiarpcES,1

readarray5Í,OÍT5St 55grEQ

c l . b lrsadarrav-1 'S'el i 5

¡cae

hort íln7ca3; tov

EDV

caí lfifi?: sov

BOVpop

TÍnOtoóf:

el,elex, 3readarray

sor5tOSD

popretfi

C25540Í05Í

BOY

andsovshrBOYsoriaovcali .BOV

etosbI5QV

iOV

a l , al

2X

endp

proc fi=arh l , shb l . I S hel,3

cl,blcb,ch

readarray.al,' '. '

opero

i j O f f s E Í reg?

-i

-o

IM

»e

TSI

n

•—•

tu

uicu

o-

u

cr

a.

ID

o

o

i=

QJ

tu

BI

ty

n

Duáíc:;

sicsb&DV

fiQV

POE

pop -ffCl

DO?

caliCOY

fifiC

calijcc

lífiDDC! I55t

JZ

caliorjzftOV

BOY

caliHOY

5t05b

jip

BSD3B! ODV

fiOV

caliinclaoiJipop

EOV

aovsovcalícalijsp

a=lea; HOY .xorcaliBOY

SDV

aoviOVAflV ^»LJT *

popcali

iin8cto3f:

tíi.OTÍBs: atbstrbstrifiG.iüdie== i . 15Í

aodrídn , óttíí-,,2 :cortJersíiart finSctoór

' ah.,:es teacod3l:incbl . biSSpQD

sijOf-ÍEgt opera?ex, ! ;???reaoarrayál¡' '

shori inclfiodsi jCtíset opErppcs}l ipopreadarreyai

dx,DÍÍ=Et stbEtrbBtriíiQjQS31,1aüdrteddbstrshort finBctoBísijQÍTBst operleaex, ex j leereadarraydx,OTÍ=5t atastrastriño, dxdx,oí{=9t atbstrbstring.dx

siBiodr=ore

*•' A fl P n •

SICSD

retn

EIBSE^O OTDC nsarBOV s i jOí - fse t opsrr.DcX^ .. • C X , C X .. JÍIOp

csll • Tsstíarray * •xor •- al.al .

8PY il.l

•fiOV CXjl

retncase90 ende

proc nB2r

XD^ CS,CX ¡XCP.C a!

cal; rsacarravEiov a l , ' , '51056

scv el, siland ex,76QV 5Í,OÍT55t T5Q2

cali readarrayser =l ,alsto=bÍOV

ÜQV

retni97

)99SOY

xcraovand

al, ic x , J

encip

orocsí, oíex, exal-shilA

opsrcc

jnz vidinc es

«c; csll reatiarrayaov es, IplíSti 5X

xor si,al5tosbpop . ., axretn. .

eridu

proc nsar

O

=1

Cl

,-+-

C3

O•<

o,

<

o

-<

TJ

-c

-e

ui

ui

-T!-••

fD tu o. nri

ui

EB

m

"o

3<

h*t

in

I-" 1

El

Q

ID

-1

13

Ul

•-*

-1

•<

UI

n

-o

o -i

'o

n

11m

o

o

i-*-

a ro

13

ai

ci

n:

o

nt

ti

o

tn

iri

-op.

. -

-a- n

a

ro

n

ta

n

u

o

1.1

1-1

in. .-I

>C

O

ío.

m

ui

um

u

m

1/1

ai

i"

.Cl

íl

OM

- a

o

ni

r;-*

J

O

111

-.-

t o n r s i r . M a y

stcst

endp:

C25SCOIQC.' proc usarcali coti31linc

sov s i ,8TÍ=£i opEra1?sor cs.es ¡eovcr a i ,o í12 BSií'OV

eciv d l . ahand d i , icali datadlepiish axsor si,ai=105G

pop asirstn

casecctoc? encc

proccali incognitrstnic9 entip

casscstocb proc riearpu=h siffiov sijcfíssi op=rrfüü r c S j C X j r e t icali resdarraypop sicali íiatrsipush asxor a l , a l

003 5K

CESSCC proc nsar

tu

=J

cr

o'

-~

o

•—i

»--

n

in

111

cu

-i

"O

ui

1-1-

-o

ao

--

.-•

o

ra

O

Ul

U-

ra-i~

i j;

ai

III

LJ

a.

til

1/1 i o

ni

LJ

.T

I ai

u

>:

tno

1.1

o.

15

>

ka

s-•«

rj

u

cj

u

4ta

111

ao-

LJ

ui

ia

—i

•" .e

m

>t

tu

ci

.ti

ru

in

in

.ti

ni

ux

M

• o

O

- ti

—•O

ru

U

) rn

ru

>e

in

o,

u

m o-

>t

u

Q.

ia

a

m

u1(1

O

tu

a.

ni

m

u

ro

ui/i

m u

o

LJ

-a

U!

"-I

"H

Mc;

ui

ni

M

IJ

d.

U

rsalatr

StOES

DO: ñí

caseKtaeíccvsntíBOV

test

procaí . ihsi, i

oaeroic

«DV CS ,2

cali réséarrsyBBV cs.ax«e1/ ax , ' f t , 'BtOSk

BOV a;, ') i '

or dl,d:

C1DV

|DUl DX

a l . - L '

jap Eíiort finectoe-faov cs.l ;incsll readarrayBOV ds,ox£ov al,'A' /

sovcr

flOV

=sroas: soy

sov

al.'X'di. dissrnax

ah/,'

ax/XD1

finectoeí:BOV CSjl

sor al,alstosbaov sXjdxrstn

cassectoeí endp

cásefO proc nsar*DV =i,OTÍ5=t operlksor ex.ex jlockcalí readarrayxur 3l,cl

—i

-a

-o

-uu

l rn

ro i»

ni

u

re

ni

. 1=1

">

•r*

111

—*

in

u.,

ra

r-j

=3

O

ai

>

-13

o.

tu

L:

«a.-:.

r~>

í,.

fy 1/1

a.

w

.11

t.

Ul

-Cl

O.

ID

O -a

t_

o

•-•

ra- o

in

ti

ai

uO

O

O

ci

o.

-uu

-•

-» ti

na

u

r-

- o

.a

o

n

i -o

m

=)

o

o

sriti s i , !

CK íil.2

EOV CS,7

jü;c snort T i n í e i o f tnorsal: aov c l . b i

xor d h . d h

j? SEDE:ccp ci,5jri= tin-rstofí

°=pec: ffiov dh,2íinístoH:

csü readsrravOOp 51

BDV d i , a l£Dv ¿1,

BDV b s t r i n o f a vaov as .dscali ffiodrscalí addbstrxor el,5!stosbffiOV tíXjdX

or ah,ah

BOY a l , a hsaasi rEtricasBfstoíí stido

pufalic des5n5D5toroc near

ijEísts procedisierito oeners un string = partir tíal coc-igo de oéquina apuntadojpor DS:£I, ÓEsdc ES;D!, tertinado en ú, consistente sni

- Cuatro caracteres oue repreBentsn el valor inici=l d= SI sn hex-- Cinco caraiersa tísl anaffiotécnico de la instrucción,

; - Veintiún caracteres OE pareitctros del snesctécnico.jñásaas, se retorna:j AL tipo de instrucción tO¡!f2 o 255Jj CX longitud ds instrucción!

push- .. alcidoov ax,=ipush axÍDV o l , ah

U

V.

•"!

• '-i

ai

=ain

in

ra

-

ni

11 n

3

í-j; x

CI- C

J tj

l~l

'II

LJ

•tí

-jafí

a.

, -

f-i

ti,

re.

IKíi

u

u

ui

ci

.n

ul_

l 1X

1 "U

l/l

iii

a tn

t>

u

se

ni

Q

a<

a(

3S

•,-!

X

•-<

LJ

•"

-«If

l 1/

1

"O

LJ

c:

rt

•"<

•—

i •»

•*

Oui

cj

ca

-o ü.

>

-«a

-o

-ra

oa

-a

•i-

' o

•*

-'

¡ilinmimmPRGSRAÍift EK5ANBLfiBOÍl¡íiíírmíimimPQR IvAfc GRDG-"EZ

, fí 3 ¡j E* ; E ü • * 1

.esta

tr5r(=;l ct 32 :•:: •"

Engp.o di) 'AD f l ' .O . 'P i íSh ' t ó j 'POí ' J /Or ' .S

db 'S'Jb'^BH/EAs'^FH.'IOr'^OH,'fifia',37H

ds ' S Y T s ,3CH}'IÍQRd-,3DH, 'DHQRd',3tH, 'fifis' ,3FH• ' INc',40H. '3E:' ,4BH. 'SHORt' .50H, 'QWDRd' ^ÍH, "íiOf ,52H,'NEg1,53K

'HU!' ,54H, ' If.Ul',55H,' Div1.56H,' ID!v' ,57H

ot ' J N A = 1 1 ? 2 H , ' J ! i b ' , 7 3 h , ' J í i ' , 7 2 H l ' J A B < , 7 3 h

Sí JHg' j7Eíí,' JHLS' ,"Fr% ' Je ,70H, 'JtiD' ,7IHCD 'Jc;,72H,:JNc',73h,\i5-,74h, 'ONe'.75HdC ';ae'í7¿H1'3a1.77H,'J=',78Hí'JH5t,79'H

de 'TESi',84Hf'XCHo'¡86K,'HOv*-88H,'LEa',BDH

db •PUSHÍIt9CH.'PQP:")9DHJ'SAHT'J9EH,'LÁHr!9FHdb 'MQVSb',OA4H,'HOVStf',OA5H,'CHPSb',OAáH,'CKPSw',OA7Hfib 'STQBb1,OfiAK,'STOSn'jOABH,'LODBb',OACH,'LQDS«',OADHdb 'SCASb'jOAEH,'SCASw',OAFH,'ñEt*(OC2H,'RETn',OC2Hdb 'LEs1 tOC4H, 'LDí1 ,OC5H, 'RETÍ' jOCAH,' 1HI' ,OCCÍidb 'INTD'jOCEH/IREt'jOCFH.'HQl' ,ODOH,'RQr'.ODlH

db 'RC!')CD2H,'ñCr'JOD3Hl'fiA§'.OD4H,1AAd'1OD5H

db • S A l ' ) í i D C H J ' S ñ r ' J O D F H ! ; L Q Q P N = ' I O E O H J 1 L Q Q P H z ' ! O E O Hdb ' L O O P e ' , O E Í H , ' L O O P í ' . O E S H , ' L O O p ' / JE2H, 'JCX2' ,OE3Hdb ' !n' ,OE4H, 'OUf (OE6H, ' Jlíp' ,OEAH, 'LQCk' ,OFOHdb 'REPNB'jOFZHj'ñEPNz^OFZH/REp'jOnHf'REPB^OFSH.'REPz'.OFSHdb 'KLf lOF4H. 'Cf íc ' .OF5Hl 'CLc ' [OF8HJ 'STc ' !OF9Hdb 'CLi ' .OFAH/STi ' jOFBH.'CLd' .OFCH.'STd^OFDHdb OFFK

reos db 'ftLCLDLBLftHCHBHBH'tib ' f tXCXDXBXSPBPSIDI '

db 'E5CSSSD3'

27HÍ2FH,37K)3FHI90HÍ9BHÍ991ÍI9BH,9CHJ9BH19EHÍ9FHOA4H,OA5HJOAÓHJOA7KJOAAHÍOA3H)OACHJOADHJOAEH)OAFH

f- iri

-.r.

t>-l

-i-

.j;

.1;

LJ.I

n r-

. ii

. o

iri

r~-

r-- -

:j"

r-c

:.t:

-a:

—.

m

-o

uj

unle

í r~

- i-

- cr

<

T;

n7

-i.

—.

o-

r >

ti

Til

-C

3

- .ra

tu

u

na

ni

(ti

ra

m

a 111

m

ni

ni

'uc;

cu

=1

.tx.

ui

m

in

u

o-

O u

m

— u

in

ni

ul

iu

tu .a

ai

as

c:

ou

o.

uu<

in

••—

i -a

u

a.cu

o.

d.

-u -o

O

O

O

fcJ

G

••ci

••--

--•

Entran*: Dsíbl apür-Ts ai strinD, aue dése tercinar en -•>,ES:t'l 55 is dirección sn oonde se ponorá el pssuBacctnoa.

DS;£I asista 3! T;-ifJ as! cr.Er.ctScnico - 2 er E; Efirg si

H=:B1 eD'jnis al Tina! ísl 2==u3occí:oo ¿ !C* =E. 1 =1 EÍ BPBflOíécnicc es inválido o si nav error

altéranos lexceptc si nabia espacios QEsde G5;3í¡¿í /"nnTisrí— fi^ ricciftrtnrnni n T W —íí p!-t— ~p>* irít- i_Uii L¿ Cii" - - UjcUJUi-iJUiwU * n*- V i ni r ^.ijv * r

caííKpüshpushpushpush

sovEQV

EiOV

SDV

dslsoc ¡erscofitrar =1 Kn=Eotécniccíin=nc2 jen caso CE error; terainarDKdx5=

diaü.ldata55, ax ;hac&r que i5:Di scunte a los ansso técnica

d* ,of ísDt ffin^™:"oXtSi ¡oreservar si COEISTI~D dsi onsicouecnicD

¡o:=csov an.ss:csp shi'a'js noíinícapinecfr

10Y EÍ.ds

jcp short íinencufí: sov bl,í

and ah,0díhjap short sigcoep

nofinsiriseo:xor bl,Qí

no al,(idíhCiED

•or

íodsbCip

J5

cep

ja

EscorchísiesestE!

decEOVpop

icarácier de: strir¡g sr¡ fiL¡carácter d= U tabla En AH;es una minúscula, iítolicando fin de ansao?;no;e= el -fin QE la tabU?jrto, probar el siauiante síieso ds la tabla¡si, =1 cDoioo era inválido pues no¡constaba en la tabla, £5Í que se debe gsnerar¡un bit ds Error¡indicar íin ds ftrssao naciendo BL - 1jhacer ftayáscula a Atí¡comparar si ultiso carácter

¡indicar cu- todavía no hay Un ds Sñsscí¡hacer sayiiscuía a fiL;son iouales los dos caracteres?

bl.bl

escorch

noesesíeshort 5ÍE

s

d

jno_, iñtenier con eí siguiente fip.Biso;si, sra el uítieso carácter dsl sfieiso?¡no. seguir coaparandojcasparación exitosa, vsriíicar que¡haya un corchete,

¡un sspaciOj Te.B o O después dsl ansie¡si no. intentar con si siauientE

jsn caso de corchete, dsbs dejarse SIjap'JíñandD a éste¡encontrado, obtener el psEüdocódigo

t,-. O

•u n

o

ri n

o

i o

o

o

o-C

C

L. <

<

•<

o.

ui

-••

=1

in nsa

>-

-<;

ui

ui

ni

IU

Cl.

M

ti

-ti

Itl-

K

I--.

II

I >

c >

-•

IU

1-1-

ai a-

m

ID

tu

ai

ca.

o

a

tu

M-

--,

¿'

i 1 m

c NI

IJL.

-1

OO

L

J

=1

U in s-,

ni iffl ro 2C <r e:

DJ k.

01 .tj u «u i_ ID LJ

^m

. Oí

k. m a k. o •-*- m E=

iD k.

-M

1

-CT

ÍC,

-. -4

. .

3<

-ni

«i

•_<

-a

•-»-

a>

<o.c

-

ni

o>

- •>

= -

L- .c

m

.n

--«

k.

.— É

sil

m

•)->

m

ni

ar

iu

[11.

V3

O.

1.1-

ni

si

4j

rz

ra iii u

1

U '"I

lU

U '-I U

4: ni

-iJ m

a LJ

Ul

•=J

>-

ra a ni

<E es 1W k. oí -u u ••

o u.

no UJ

f— • 11J k.

iij

Ul

L-

O -*- 111 r= ni

k.

4-1

,t=

^4»

U1 O

kdt

F—

«

-U

111

Ola

ir••

— .

IT

J

-tJ

-Oí

-O IU Ilí

111 3C <K c O)

V.

ai rfj Ll

-«)

k.

ro U .— • ai i~ ni

-u Ul

=1 •—i

n)

^ .1= 10 d.

@ LJ

.. Ul

c; k.

— i

<c ¿^ o LJ a tí Ul

•<H «!

O T^

1 T

TO

- C

r-"l

1

.

3

J¿ —

3

«C

(U

iK

K ilí

a ti.

.a.o

s> ti

a 3

•—1

Ul

Ll

••-,

1"

-C ra Of

S3

aéri

cc

=a c:

ro r-i

'#•1 U Ul

íO ai

•C3

L,

al

111

IU CL

. O

M¡3

-o

ai

-o

M

— <

v,

.c:

ni

ro

QJ

<u

XI

CX

Ilí

0.

n

<*

m

uU

l U

••

— , U

«**

4 ni

•i ra

a L- ai

tí -3 d *« ar i_ ra m c;

ili •o i=? O LJ

K ai

.— •

.1-

L_ f, ,_

^-4

OJ

U

ro

id

ni

>

*^iM

O

JS

k.

• •-i

a

1/1

o

.—

u-

" < -u

CK

-—

• r-

i •-«

líl

- U

l -O

-

111

- 1O

iii

.,

u,

— -

ai

- cu

C

'U

Líl

lO

'11

C

rtl

U

l

->J

1-

J -H

-1

1-1

ni

>-•

ni

í."

ai

—i

Cl

111 m u a K.*

-ÍJ O cz 01 C*-

Iro in O .+

-*• •

-í 13'

.*-4

"Cl

CN O __,

Ul

•o U'l

Ul

o V.

ni & -n cz

•— •

Ul

'•-1 U

l

~a --• ii „[

•tíC ca 13 .-i •u en

o t- OJ a -o cr _ Ul

•o Oí

IH

-r-f L,

0-M

U

.ui

m lü

r— * -^

ni

n:-o

r-**

-CJ

[U^J

T3

-M •—•

L.

oc;

r--

O

ni

>II

II

rr; x

-a;

cis

=3 líl

111

•r* U)

O O t_ ai £9

-n G t= =)

U1 ni

o G •—

ni

en

.i-J

tJl

.asn

L-*

lU

. I--J

a a.

ni -ad 13

m

Ul

ílJ

-J-i

«3c;

=j

ni

Cl- 13

ni

oo

i--~

< ni

ÍQ'*-*

HU

l d

— < II >•

CJ

JC

¿K

>C"a

.0

j^ líl

!„=1

O

13-

3;

ni

u

m.

-t;

o j

:•o

-a

C3

ro

o,

»<

•*

r-4

cJ

a ni

o

n

tu o

o

o

ct

o

n

cu

oo

o

o

nri

ro

ai

n 13

si

»•

st

=r

O •'

--i

SJ

O-

OJ

lli

1/1

OJ

-

-

a»-

in

•-*

ai

ra.

tu

o-

X •I- Ivl

•O

r-i-

Ul

o

ni

ir:es

. u

ai

TU

L

/l13

1 --

U

1J5

1

U3 «

«t

(X-

n -.--

III

til

Ul

II

CM

•• L'

M

«r

ÍX

II

II

T" , I

v-

iy

a

• M

- en

in tu

«—

•>—

i o

-o

«J Í-.

O

w:

-c

n

•—•

no

o

o

o-i

-E

l n

a-

o

p:-o

xa

es

ru

re

o-

iner

10

a.

ru

a.'

-<:

-i

m -i

i—

ro

ísi

iri

o

cr

o-

d.

E"

ri

ni

SJ

ILI

ri

ID

n

*-*

"-•

o

n -

ui

ID

C3

Cl

•—-

ni

LJ i.,

o

••—

i ••

—i

ul

c=

u

-in

es

IU

O

in

c:

tn

-i-

as

a.

e:

-M i

-ain

ai

-o

i—i

- n

in

ai

u,

- o

—i

e

n

e:

o

- i_

iIII

.-1

st

r~t

,—i

3

f~t

(U

.t-t

-C

S

.—

(U•T

J M

- -o

na

ra

s:

in

-o

'-t-

1/1

ro

-o

ci

ts

>e

nr

—'

ui

ni

ni

tu

-a

til

m

ui

C:

ni

u>•

"o

>

ra

, ni

o

>

a o.

t= .-i

u "^

LJ "-.

a .

, es

e

«T

I m

u

-—

. o

ni

«

m

EDV sfc.bl5105*

rstr.

Bfíchss ende

ensoBSD

itEte p roe e dirá SEI te ejecuta s! p r i m e r peso GE coapüacion, es de{traducción de un strino slíamüténco E seuoDcádigQs pu= s=rán t;s código V5rdaoerü oor otro prscedieiisntc,

;Fptrsó3'. D5:51 anun t s ai strinc por coisDiiarse, oue ó-oe; sr. í).; EE:Ir¿ apunta ai lugar donas SE csssa el seucccc!

¡Salida; Es:5! ss altaraocI ES:Dí ES alterado1 Cv ssi si hev errof

a

pushpushpushpushcalijeincinccaliaovlotlstcopjnsaovSÍ05D

jfflQ

nosrEgpref;calijec&pjbcapjacalijecali

asbxadsencsrsg ;=s la instrucción un orsíijü coso ES; ?nasregpreí JÍÍGsi :si, proceder en consecuenciasitísispcah,al joresErvar códioü

al,':' ;por sintaxis, dabe habsr ;srrpasoísl.ah

short bisnpssol

encneft jlo priaero debe ser un faneantécnicDerrpasoíah.OÍOh jes un prsíijo REP o LDCK?nopreHr2h,ÚÍ3h

nopretírdslspc jsi, buscar siguiente en eaa técnicobisnpasol jsi no hay ¡B¿S cu° el prsíijo, tereinarencnsfl

L.

fil

QI

"O

o

cu n

m

LJ

U•*

-^

-Mrc

ai

o

o

u

a-

ui

LJ

ra.

ai

.i

ia

c:

ts

-.-:

mn

ni

o. i

L_

r;

L—]i

ai

H -

"O1 *

.n ra

Ul

u_ tn.

o e

1">

M-

7^>

.c m

ni UL L.

U-

Ql

a-

13 -.

JZ^

111

c:

US c:

tu ,^4

Jíl

ITJ

\"t

.r= ™

Ul

a.

t— U-

ai

¿: 10_.

.ir:

ra

<ij

Cl.

L-

l_ Ul

,Li

111

1 1

~S

13 ,

• .

k.

1

1—re

í O

í

ni

"ra ~

:;•£ •13

ill

rj .21 -',

>c .a

.„.4

TI — .

vri

"O

"- tn

O

t-*}

— •'

x

se.a

u

.Cl

i_j •»

•Jiz •u

ai c; ol*-4

111

111

t-

TJ

Ul

ni

-o

ie .a

es

fia

es

LJ

<•-,

ra. d,

a.

a.

-i-'

o

o

o

o

mcu

o,

ex o.

L.

-• C

l..-i

xz

o

Lll

--J

G

a

ai

in

t_

í--

d-

it.l re:

1 —

=1

UJ

ui

te

ni o

ill

(-1

(ti

c:

•=>

c:

«i

. ra

10 .o

i/i

ni

o

LJ

1/1• M

.c

a

oin

ni

tu e

>e

cu

¡ai

ni

a

u

U• H

j=

e

cu re

m

tu

m

i/i

tu

u.

a.

a, .-i

kj

í-«

ani

fe!

m

El

ai

tn

K:

-u

LJ

•*->

-i—i

u ~i

u

'"^

•—

> LJ

••—

i o

••-

P in

LJ

u

cu

—*

ec:

Cu

••<

U

1

ra

ni

ai .o

t-

U

111

1.1

t.

—•I

•-.

..-*

dU

l 1/

1 -C

l II

I

ni

•»

ni

rti ca

e;

o,

ex-

-ni

.o

ai

,ía

ai

iu

ai

111

.ci

ai

Qi

C.

ril

ij 13

i

c:

«a—

u

o.

;i.-H ..J

-O

ni

-i c

Trt

O-

II]

ui

ai

-es

o_ai

-o

»r

»<

•-<

u [i

nIII

'O

•o

LJ

ni

-ra

oíQI

ni

di

m

iu

ni

Ul

TI

a

ota

. -

a

o

es

o

sndano

c.cv

?c '

sr,,:-;s r. r *° i r d '•' i i D '

srort re "iIDO

ai.OcOnan,~

al, ohbs , ax

sí recistrc ce

Q=tpre- prc: r;=ár

¡Este DrccEcieisntc ottien? ?1 Drefijc d= reoefinicicrt os Eeaienio a uartir;d°l nuaero de r=giítrc es ssoiaentc.

lEntratíá! BH = xPSrxxn cor- P = argsencia á= prefije

i¡Salida; fifí = O =1 no nay arsíijc, c; pr°iijc-,

sor ah,ññtest bh,40hj: íingtpaov ah,bíisnr =íi,land ah.ífihcr 2h.2¿h

:irigtc: retnQ=tpr5t encp

proc nsar.

¡Este procEiilÍKÍBnto dsisrs.inc =i debe incluirse un. prefijo de rsdehnición;d= 55Qeento antes de! opcode, del cual salo debe hacer 1 byte, y E3:D¡jóebe estar apuntando á la dirección siguisnte a dicho byte. Hace la;inclusión y los-ajusies asi caso tíe ser necesario.

AH O si no debe haber orefijo

oxods del pref i je ~n caso contraríeE£:l'¡ c¿rsccióri osi byi= os QBCCSS -^ I

Ai == inalterado D conusne s\pD¡ e: ajistsbcC* i:i:reii!=ntaóo en ! E: nav ursii't,

cas ín. ; a vJE noprshjosov al.sn ;si, ajustarxcnc a i , E 5 S i í i í - i 3

inc exncpretijo:

r=tr¡

5ÍZE2ÍSC ero:

D=t=rEÍr!í daoos ¡D£ t¿i= c y ? as ñL. ous d=bs ;:=nsr s'. cvce ce Eao=í t3ftsr¡: 3P bytss del 03=DÍ52£EieniD u Qtí55':. Lusgc incluvE sstE

ic sn sj opcoce.-

OL c- Dí. oESDiáZEiisnicfil ovts oé ffioüo d£ direcLionasiíníoE5:DI spunts al lugar as: op'ode donas va si dE=pl222aÍ5ntG

;S=lida: " AK ss aíteraaoES:£I EE alUEtaocCÍE increserttado E=qun el des el a: aai sirte

t95Í

jzandceoJ2

inc -C£0

JBE¡soy

jsp=EpI?; and

al.OcOhdespl?al,0c0hal.OcOhnodespexa!,40ndasbytal, di

short nodsspa!,7

¡obtener si aod;=i £5 00, averiguar si hay desplazseienío

555 !!?

;=i, taEpoco hay d°=piazaí:isntc

¡55 Oí?

:no;si, áespiazaeiento as un byte

i=i iod = 00 y r/c = 110,cs.-p al,6 ;el satío ES directojns noáesp

dosbyt: §ov aK.dx :d55pla:£Ei=nto ds 00= bytss

inc es>; retn

sízsdisD endp

proc near

• —

tu -a

111

Itl

r-4

1/1

U

•£>

O.

I!

II

"O

1/1

«u

6S

-i-1

ni

m

ui

m

ul

'&

LJ

ui

ri

•—•

•-i

U

-—t

LJ

CU

til

T±)

«

CJ

I ">

[II

U

ül

ai

—.

LE

••o

tu -d

ja

c:

1:1

se

i-

.c:

a.

ja

ja

.ra

.es.

rd jii

ni

ul

-O

a-

-CJ

-a

ut

es

ai

c-s;:

.c

: jx

r o

a

i c:

in

m

oo

oa

ic

an

ia

o

ci

aa

oca

>t

•—

, a

u

es

e

IH -íi

ss

o.

a

n

<~*-

nn

n

•—•

n

cu a

.•c

i -o

-o

e e e

ra,

1/1

ui

(.11

in

ru

inS»

cr

SI

O

i—

-1O

. -1

3

tu

(ii

in

sn

m n -i

o

3

i-o

=1

m

=1

-i-

ui

ni

•—•

ili

rt

rti

cr

rn

i•-• •

n

3

ni

n

o-

a

a

o

ro

•o

=?

a

iu

a

si

tn

TZ>

--

1-,

X

L,

x;

xr«

nJ

rn .

•13

—•

nj

O

ora

, o. ra

.i~

. -r

a

ni

m

n

•-•• n

T;I

ix-

n

•<•

mo

•—

ai

=>

hj

i-*-

Ul ri

d.

PI

10

-i

-ra

-o

1.3

t.j

=a3

nt

o

o

a o

o ni

in

nt-

o

— o

•o

-or*

t-

CL. rt

-^

•--. -i

m,

cr

tu

^j

ti.

n

r>-

o ro

o

tí.

n

35:SI es alteradoE5:DI == 2JU3t£d2Cí, iongitua ae¡ céoigc'CV 5=t =: hay ?rrcr, en cuyo caso le; rscistro;

5tarto2:

dasíj:

unb:

prsrg?!

sr2:

rumión;

saltare!

DÜ1Ü

pushpusnpus ticüshssrcsilJCnr

iss:j?L£L

M3

JD5

ÍOV

SÍOSH

addjapstosbin:jscctpjnsSh1:

shlshlor

incj f t B

jap

cepjóCttp

ja•

calijeC60

bs

fapsi

di

CK

c x . c x ¡longitud inicial = CtioD ;d5t°r@ificr tipo tía p=Buciocódigo iriiciai£"2J t Jl T ^ - . ¿ ~ *-L — *,-*.*« £-*)tí!, c* ;E= tiiid ir:=i.rucciuriíprsrc? no. pasd= =5r Er=Dan . l s= un lonsr?nsssior "cal ,0d4h £= AñK'

sl.Odáh EB SfiD?uñó ríe-íhjOsh 5= ñfi'H D A A D j in=trucc:ion55 cuyo opcode es

J O B 2 bytsacx.2 - ;Íncr5¡ÉErit5r iDncítud en 2bisnDa5o2

exbisnoasQ2c l ,2 jsreg?sr2 jno , error31,1

á l , í

al j ía l ,2óh ¡hallar el pret i jo

esbien paso 2errp2

slJOfi jes un ssíto condiciona!?nojcond= l j 7 f hnojcond

¡si

tipoEr2di , 4 ;lo siouientE es data?

a-LUÍ i ir.Ssh';: B-L

:nc. err:^

!caku;3r oisisncir

¡:csp36

noip jcs icapjns

'isp!StQSfa

caliJC

;LQOP o

al,ds3hásltorel3l ,9dh

a l , 3

¡hallar E! códiga tíe los

|ri y w dsosn ser 1

stosbcaliinc

CÜD

jbCCp

ja

exbienpsso2op¿; jcp

eÍTlea: CÍDjb r.oídslescap £l,0c5hJDS

£l,OÍOhalterablesal,OÍ3h

inc eslodsb

aoclc ce d

;LDS c LES?

jprEÍijo RE? o LOCK?

;si, incluir el prefije

jedec

alterables;testjn:jsp

sÍGíier: testjzjap

nojc; capjb

5tartp2

ah,2Eionernoonsrahí ,4no je

al,0c2hnori

¡eapezar otra VES con lo que sigue al prefijo

;JHP o CñLL?

;=s oner.¡si no es REÍ o I NT

-o

n

o

cv.

111

B>

mrt

m

ra

a

«—

n>

nt

— -

ro -

ni

m

o.

ro o

. ai

o-

iu

cu

ID

ni

u

.1

ni

CD

Ci

-i

O

ro

a

m

==:al l l : i :cn:

ti.i-eí

ascal

jcpCüp

JRE

subor

JDÍEH

errjax,2

atí.ah

ari.Oí-fh

¡solo SE admite SHQP.T en Jíi:

:; BDV an.=iaov él.Oebr-stcsv,in: cí

joien:

grrj ;

jnodst:

xcrjspsorjgp

Cffip

jneorjneEOV

ffiOV

inc .ffiDV

andorcap

jeor

Jop.

:n,chbisnpaso2ch,cnsrrp2

-dl.lrioreglidh.dherrjb!,al .al.Offr.

elBi.bl£1,7

al.OcOhchjOeaíiEijepragaljíOhshort íjd

or al,20nf jd! stosb

inc eljap shorí j

ncregUiEff ip dh, ije errjsub 5 i . 4

:rse?

;no dsbe haber restricciones de BYTE =TR, etc

¡aislar nieero del registra¡E-Du = 11

¡es Í2E;, short e= inadalsi

¡rasiaurar

-o

o.

•--

a

rt

ci

U

a,

ni

10

i-

•*-

-u-

Ul

L)

JI

Ul

LJ

Li

in

••"

LJ a

-+

EJ

• i

C'I

•.ti

-

t-t

• i

1

ni

vi

DJ

't>

nicu

-a

n>

-o

ni

DJ

e m

CJ

Ul

ir.

j & í ü*£ i4 ^a?»

C E [i £ 1 b i'"

j = ElESGOv

•Lo Eioulsnts 5= si DrcceEc3V:pUEf: 5Í

cali tipoj: er2fc- d i , d i

sncine; CÍÍDSE5EÍEIÍ

,-1 *

csirec; ts=t £jjnzcaliCE!p

shl bh. l —shl bh, lsíii bh , íBOV di ,al=nd al ,8sor a i , b h ;siz5= contradictorioi?jn: er2s jsi, errorffiDV Si,di

sacsíiy: snr a l j !shr si.Ishr al ,1or a=tosbinc ccal! sDQD 2

DDp

calije nocíjep acaso!

nocí: lods'canti al,í5 jvolvsr 2 obtener =3 rsg

n

j/i

o

in

un

ui

u)

rto

'-•• n

ri

E?

rt

ui

a"

ra

BI

ID

=>•

~l

O

ui«

Is

J O

- i-

-

rn

»

ri

PJ

¡i'

IU

ni

Cu

m

es,

r-t-

3S

ru

-a

1:1

•13

-a

ex

n

o tu

••—>

vo

-o -d

u

•*

-"

tu'U

tii

ru

LJ

iu

(M-c

: .e

; .(2 -u

íi

i,j

u

Ja O

tu

u tu

•ci

m .a

t_

i

i'J

u-

Cl

O

03

U

63

c:

a

o

a

u. .u

.»-.

US

»e

tfí

o

mu

~.

-y

oa

ni

tu

uO

. Ill

1J1

IM

LJ

u

••">

111

O

O

inc ex

c£jD exDCP dipop »iEtC

icp short íinp2

adc sp,6ck

•rinp2; DOC Dppou bKOQD bxDCD SU

rstrsn=pa=o2 enáp

pubiic assea

asESC roc nsar

;£=ts SB si Ensaabísdor, QUE lisas 3 los pesos 1 y 2 ds>íEntrada! DS:£I apunis al strina por coapilarse; ES;DI apunta al luaar dcndE 5= tiesEc E! código

í-.Salida: DS:5Í 55 sltsrado; ES:S! es aíteradü; CX lonDÍtud dsl cótíiocj CV 5=t si hay srror.

push espllsh di

push axcidEQV ax.dsfflDV 55.28

SDV di,of{set transitcali enspasoíje errorsov si,Dff=Bt transitpop 2X

pap diODp 53

calí enr=trt

a==es endperror: pop ax

pop di

Ul

o

t.

1.1

o oí

ni

ui

tu

n

o

ac;

••-

< c:

ra

ía

><

=J e

a

-o

o.

o

u

-ra

in

-o

uU

U

l -O

U

U

-d

u-

-a

u

-a

in

ul

a.

ci

o

o

ui

:£js:ator ce porcionsá as códice. Po^ !Wtf« GftlvítZ.

. c a t a

public Xls rAddr jPo in te rLs t .Vec torZr

publiccubil c

irChillaserüeííaise

PtrDKsLinEüjEcSeq

p^^e,CoaaLine

FÍle5ÍZ5

FiUFtrEseFlagFinNoraa!

nEOlp

R3DLS

RggSp

REsSpñ=q5E

P.scEs

ReqDiP.sgSíRsgDsResCxRsaBüReoAxílan=

R5GlplmcRegCsInicRsgSpInic

TacFin

ú¿dbde

GK

OH

dH

dd

do

dn

^dbdb

d*dri

OK

dwOfi

d>íOH

dsíÜM

dx3K

dwOK

QK

dsdi*OK

'Chile. ese' . O25= t íu Í O í

4 diip (?}

0,0,0

oooo

i3*. Hay :, í

Regépíni:físgL'sinicKBO"sV(ir

ResDilnicFiecSiInic

F.ecí-xlüií:RsgBxInicFiaoñsiríicrlacsinic

ParSpParSs

PSPParsntPSPChild

lenchtíiaseilBytesrakar

FHandlerviíiree

storaorv5Íars~prv2PrsrvfrcPrsrvPsDvectorvsctcr2PaintsrLsiPointsrMstíierAdcrXísrProvnadaPrCodíns

TipoCoapECRegCoapECValCoapEC

RetardoTF

FLoadExsTablaSrk

• cedeeúm

loatíREOB

dwdncud'ri ?Ov, ?

dn ?dw ?OK ?

3K ?

• f.

d. •?

CW ?

du ?

db ^Cir; ?

dti ?dfc 512 dup í?)

d* ?de 256 tíup í?* ficns ds preservación d= inst. aniEriprdb 32 üuc i?»db 255 tíup (?)do- ? ¡arsé d= sreservació1-! de vector=5 di ini,dtí ?dd ? ¡aountador a la últisa inst, t=n EXHASTftide ?dd 7 . jdirección de transferencia tras U =j=c.dd ?db 30 dup (?)

_db lo dup (?)

do ?db ?QW ?

db ? -ibandera indicadora de si se produce retardo en;la interrupciófi ds trap Hag.

db ?db 409ó dup (?)

desensíoroc j ssEEi; srocproc nsar

jEste proctfdiaiento carga los registros con los valores de RBcoria.

er

O d

O

u

o

u

(..i

O

na.

in

rti

fu

ID

ni

m

tr

t,-i

I u

m

r-i-

tu

tu

ci_

o

O

-'-

C

i-

pusntSus".

cuínr " v

c:v

?-?»Cv

rnovSOV

ÍBV

*3V

covadí93 v

a-vÍSOV

EOV

p-"'

£QV

andorBOY

reír,storeftegs

aubhcTestírap

CE

at:SJ f . f iCá tE

¿s.axc).

reofiü j a"reg«,b?regCs,cxresllü.d!;regBo.bprscSB.s:rBg5o,12 ¡cccacrisar e! CALI v los PUSHrecSi,siragfli.óirgnC= c:

recSs.ss

a« :ft)'=*iac5 nueve?cs.ílag; 55¿=ÍÍ33S anterioresbs.200h ¡dejar sclc U banders de interrupciónai;,bx ;d=jsr el =átado anterior de I en ílagsflaoá.as

endp

TestTrs: —prc: near

;Este procedimiento dstsrjsina coso sg coeporis h cosputadora en cuante a =:;hav o no retardo en l£ interrupción !, que debería oroducirse en cuanto sea Iila trap ílao, pero qus suele retardarse en una instrucción en cierto:uicroprocesadores. De ser e=te el case, RetardoTF es i, y de lo contrario O,!

DUSh 2X

pü=h bxpush dx

pu=h dspií=h e=aov £s.3501h :get vector 1int 21hBDV £X }S(jgrg

BDV d5,aí

SDV Kord ptr vectQr,bxSOY víord ptr vsctorr2,ea ¡preservar vector orioinel60V 3S,C=

EOV ds.asQOV cx.oHset ñíterlest«3V as,2501h }poner coao vector U direcciór, oe fiFTERTEET

XDr

D'.sr.r, f-, r -

ECV

ñor-

AíterTgst:¿éúEDVESCVEOV

CBF

i e

VaProfeadc:IdsCuV

int

popES c-

x.l

lac? *r. el stac*¡£CE Er: Ai

s oe vuEité ai =u:t

T.ras esta instrucción, aeoe sraoucirsE is int;-i hay retares, se 5jEcut¿ré s t? instrucción

¡restaurar staci;, alterado ai producirse is inT.aj;,5datads.axRetardoTF.O5S.O

YsPrcDadcByts ?^r SetardoTt

dx,vector

21 r.E5

GE

asSii

v=ctor !

rstn

TEátTrap endp

oublic EsüniqExUnlq proc

;-:5tE procEdiaientc1 coloca si cóáigí] d5 SETTRp.-LB inedia tasen te antes 02 iajinstruccián que SE dsssa ejecutar íprasarvando lo que eaiabd antes), Ejecutaídieiía instrücciorij y iueoo restaura eí código. Si la instrucción e= U R Eunterrupcióñ, =1 procedimiento ss diíersttts; se siaula dicha interrupción•,ds íoraa que se recupera =1 control un= ves ejecutada.

Entrad;

Retardo!?:

XFERñDDR:

ReolpReaCs:

DEben contener la dirección absoluta de Uinstrucción qus se quiere Ejecutor,DE'DE =er ! si hay que corisidsrar un retardoen IHT í tras h^csr T-l, O en caso contrario.Debe contener la dirección absoluta donde debetransferirse el control una VEZ íinelizado esttorocedisiento.

Contienen la dir=cciór- de la si

o

f*

C.'

«i

ci

a

u

o

o,

33

:rj

i"

uvac

rn

ID

LI

I -a

rp

m

ra

IGJ

-a

10

>o

-i n

•— 13

-a (/í

tnes

- ui

t3

ru

-a-o

ÍD

a-

tn

en en

en

o.

a.

a,

;ti

-*.

in

ui

-T3

-o

cu

ea

. u

» ti.

o,

K)

m

m•—

• lo

-a

a>

EU

ui

a^

ai

><

i<

•-

• :j

>e

ni

M

s-

-,-,.,,

M

-- -

--

=>' -

Ti

id

ro

5&

en

t/J

ra

- rt

f r*

- O

id

t.-

J fu

tr>

e/>

i"

in

<-t

r» ti'

ui 'o

-r

a ru

<^

-

[U

ni

o

in

o

d

10

in

r1»

r 'á

,is Sií'.SF.cC-E s i . E s r• H E NüHSrC

;r: EitPé??re ai.;.'Eib

cr.s si.t íoush E co: =rEC:'je Ei f íSrcDüsh C£

ds; side: si :anuniar a ^ oes DVISS ar,;E'io'-E5EDV Q K . = Í ;p r£5f i rvar sstsBDV di ' .ofíset ítorsprv ;ES:DÍ áiunia a tiende SE oreserva E: cooigoflOV5t ;pre=Ervsr lócicn ar.ienor a la instrucciónZOV3D

ftDV 3K,d;

f tcv es.BXir.-...- c l t ¿« :E5:D! eoiirta e íiorid= 5? colocara PE3PFCBV a K . 9 0 9 d n icóoioQ o? rOPr y HOfCP: ci . tjne AlterCcbseno a l . a h jsi no hav retardo, poner el HOP antes flsl POP,-

d:Etosb :coloc=r B; código alteradoBOY al i anstoáb£DV as. 3501 h ;aet vsctG" 1push. os

EOV aJDV u5,t tS

BOV «oro ptr vector, esaov word ptr Y5ctor*2,es ;Er=5Ervar vector originsiBOV 5SjC=

iDV dáiSX

S3V dX,OÍf=et BÍtETEX

BOV ax,2501h iporiEr coi: vector ia dirección ds AFTEREÍint 21hpop osDDO axsav word ptr cs :dir ip ,bxE3v word ptr csidircs.as ¡elección del saitotov as ,£aatatív os , aüBDV ParSp jSpsov ParS5,5=cali loadRegs ;poner lo; valores de ios reoisiros

ouEíir j í l ag i er =1 stackc^sh ax

cu

o.

tu

JO

tu

a.a-

tn

in

a.

in

ai

a

n

se

ai to -i •o

<<

*;

<•

<:

oa

ca

oa

ao

u

a,

se

tu

itt?

nj

s*

ci-

EI-

•-10

O

t.n -^

o

-fr-

eo

\n

rr

ru

rv •ci

ID

m

ra

-i

ui

r™t-

—.

*.

o

sa

ntn

•-

•<

o.

O

ID

o-

1U

C

L .-•

a

EJ

a

[u10

ui

K

n

cj-

o

>-

nim

*-

• ni

a

a

n n

o

n

-o

isj—

n

e=

nM

- n

j n

c:

o-

»-•

=a

=?

jji

o-

ni

ID

=<tu

<

a- -o

iu

»•-•

o ID

a.

ra.

s<

ex

<

ui

*:

-:

>s ií

tn

n

i--

[->•

Ej

10

Eli

5J

rii

x

ni

se

53-

IV

"O

IU

.>•

•: n>

lu

LI

I >

* •—

ri

~«i

ni

ui

ra,

m

rus fiaste vis E?

ftsalp

¡Sahtíe:X^ERADBR:RsqícfteoCs:

o=sa? ié cire:::; DÉ inicie in¡í-a :onc;:::,- nn=rr.inaüí..

í. 'i:¡:iu5ivé '

Deben contener la dirección absoluta ÜE 3ainstrucción oesos ia que se quiere ejecutar,0 si la condición =5 igualdad ae un registro

1 si la condición SE desicualcsd entre un

Ahí sxíífrsg Dará registres ñortales

61: váisr2 =1 la condición =i as fiags, sr est= case:

Dirscuión se tírairiacióri al -finalizar

::truccion ira= cmr.pl irssfipunisn 3 is prosii la condicidRífjQTÍí: Este rocEdiisisntD dsbe invocarse isedisnis 2^. v no Ca l i .

ÍSOV

asv

SDVeovEOV

d=,dí.rDXfXtsrAddr ;ereaervar el Xísrftsdrworc ptr Xí&r?rov,íis

ai,2 jcondicion de TÍao? —ReaConí

•t FlCcndRet ;si, -fijar terainacicr

¡oenerar código d= un Jconditionícaffibiar el códioo para que se proot^c-

8DV

SQV

iñd

or50V

jspRegCond:

soySDV

ffiQV

SDV

ffiQV

jepFlCondREt:

EOVsovcapjeoush

tís}otr5=: ^ICoailRsísord ptr XT5rñdc;r,íixah,Qíh3h,70hfayts ptr cs:cor¡dic,arIxüniíj

dx.o-frset ReqCondRstKord ptr Xterñaftír,dxTipoCaispECialRsoCospEC,ahV=lCogpEC,OxExliniq

ax.idatads.asFinríürealjiBoExitCond

fiaoseor

Condic:

III

fa

M-

-o t.) .o

-o

.-«

n;

.—

•<-• -o

-t

-t

ra

«4

u

13

•!

-*

K

13

-4

->

d

U

•-•,

•-

! 1_

J ••

".

«••»

a.

i_

i-1_

JJ

*J

ai

en.

a.x

-*

-rtf

x

-a *d

— « t

. i_

Ihl

»t

O

O

o

o

ni

o.

ni-u

-a

ra

ru

ja -a

10

111

-O

->-»

m

ai

d.

•a

HI

u

ai

ni

-iJ

->J

in

l=ul

iw

l :Eü dirección atsoiuts csi creai-tcirv

ESI =: ívjct erra--, 5>.ccCier,;-: sí

Borrst<- ! 1

Del&rkFt

eíBrsr.cií car c;re::iQ;. s

slisir*2r taeóiéri ios be noir<Dr=

cu=r axpU5P =1

pusr 55

fiCV

EEJV

PDV

ttOV

55, aic: tc-*5=i

e...

cité ctr S5:íc¿;,'!

01,!:

hrrAriSrjsp snort SrthFí

FinTab: stosbBDV ah,alBOV al.l51050

«JOSO VE fe

BOV

recCDV

sor»ov

c l , a hch.crax.b?.

&DV ax.dxstoswcíejap ' short FinñdBr

ErrñdBr:stcFinAüBrioop

ooppoppoprsín

ftddBrkPí

55

SI

ax

entío

uubii: OslSrkPiOelBrkPt croe near

;si s? líeoó a 256, erro11

jouarcar 2P. IB tabla E! núfssro del brbpt

j tarco activo al nuevo crsatccint

; poner eí noaorB an U tabUrc de retorno

;auardar dir°ccion sn tabla

US

•*•

m

--i

&:

TD

LU

t_>

.c:

i—i

• i

--

U

Ut—

l L.

Ul

OU1

t/1

tu

3K

JS i_iL_ tn

ti

ai

cu

ni11

1

U

U

ra. o

. a.

ti

UJ

1.1

c:

na

ni

u

ta

ui

m

u m

-c

I—

oc:

'u,

u

•-,O

¿

a u

»-

13.

tiC

l C

i 11

1--

. a

a

o fi

t ai

a-

m

a.

B.srinrin:nav

ioooFinEncIísE:

cc

CV:

ci

ah.a

m*. riL X i V

=1

ói.ltalian

i FinHsbBrt

adc3 as

FinTsbiaB:suJE?

EnconiradüB:xor byta ptr S5:[di-íl],l

FinHabBrí:;pop S5

DCD ai

pop esqcp a?retn

TogBrkPt endp

j togqls =1 breskpcint

oublic EsxTatal oroc- near

;tste procediiiento ejecuta dssde la dirección ÓB inicio indiceos (inclusive);hasta encontrar slguno de los brsafcDoinU listado en la tabla. Si no hay¡breakpoints, 5= sjecuia hasta el íin asi progresa,

;Eniradai ReglpRsoCs:

XFHRftBBñ:

Debsrt contener U dirección absoluta de Uinstrucción óesce U que 55 ciiiere Ejecutor.Debe contener U dirección steoluts donde dsbstranstsrirse si control una vss -finalizado -SÍoracedisienio.

. T S D Í S Q= b reaKpoin i s . Cada une =5 tir, registrode 1¿ b / i=5, y £"i í inai o» le tabla PS ur* 0.L£ est^ci'arú 3E cada r2gi=:r:; E S S

C-t=éi Longiiu: Ion '.en iceC: I Kuf&ero 1 1 a 2 t j )1 ! ES-LEDO i l = "¡as, í = 2s=h. !

• o r r s c G s >12 4 Sirec:ión ansciuta

IRPQRTAlíTE: £si? procsáisiisnic deoe invocarse aediants un JHP, y ND eetiiantsun CfiLL.

CS.SS

án ,=2h :£ríCGT!ir5r !s dirsccióp áe 's: PS?1

2 ir,PSPChilci.íJX ¡Preservarla, 3suKÍsndo que ssts E= un chiltí

2 X . É C 3 Í É

se» wcrci pir íísrPrDv,fasSG1. Kord ptr )!r2r?rov-r2,B5ác« word ptr H£rñddr,oH5st A--iPríi!n=tso» Kord ptr Xísrf tddr^,c=

" jeJEE^tar la Driaera instrucción por si haoia;un breakpoint aiíi,

!EÍ bx.UsrProva;-, «ors ptr Xí?rí!tJ{Sr(hi!s:. vicrd ptr XT9rAt íd rT2 ,a=ce: Fiiilíorcaljí

jrí NoAcafaojs: dKarc ptr X f B r ñ d d r

NoñcabosfiD' dx.orí=5Í AíterBoToiCE',! SetTsrÉ ;por si hay un E H T j tijo dirección d= tere.irv =i ,QTT5st TablaBrke:v di j0775Bt BtorePrv2

Prsrv! es: byte ptr E5Í3,0JE FinPrsrvCE? byte ptr [=1^13,0ji Nxt&rkPt ¡ignorarlo si esta deshabili tado&:. íis.ÍEÍ-í-123c;v' E=jtsÍTÍÍj ¡obtener dirección del BrkPtK* al,«5:íbxl ;pr25E.rvar lo que hay allí-:v Cdi3,alEV byte pir 5s :Cbs3jOcch ;colscar un breakpoirii ( ÍNT 3)

i*: iii

NxtBrkPt:

e:: =:. ¡tje; Hilar* Prsr \; 2!*

r.cv ax .EOS ' i sr:-v CE. ;?Civ hDrc D;r V ? C t c r ^ . t ^

POV Kcrtí pir vKtorS-i-ijSE ;Dr5=9rv6r vs:ior Dricinalt t D V 5 X . C E

a&k Gá.asr.^v ds.oífsst ftíterb^Tci2cv 2;*.25G3h ¡tener caso vector 3 is ¿ireccicn ti e AFTES50TG1int 21 nf f i O V S S , € c £ L á

csv c=,ax

SQV as. Recio ip reoerer sjecucioriBDV scrí otr Cá iCETci lp .aKso\s

POV t¡o-¡; utr cs;

catíb Oeah ;JHP FAR

ftíterSoTois ;aqui 52 pa=£ si contrc! luego del hrsaiíDointDu=h axniiah a

aov asédateaov os. avECV C0.50

SEJV si.íbpról ¡cntener la direccióri OE rstorrECEC sx ;ior¡or=r =1 brEákoaintBDV word ptr pDíritsrnííí.ixBCV aSjtbpí-3]sov KortJ ptr poirtternxt*2,ax ¡preservar esta direcciónpsc dspop bppop ascali =toreRetj=cidBDV 5S,Soat3

eov ds,axaov Ep.ParSpaov =£,ParSsBOV 2b,ó2hint 21h ¡obtEnoo dirección tis FSP actualcap bs,PSPChild tes sste un proceso hijo?je EsHijo2

IX.

LJ

"Q

11-

ai

m

oa

üT

i T-

Í"-M

.ti

•--

(n

o i-

- in

>-.

ai

tuia

in

ul

,n

»,„

...

tj

a o

Ul

-1

•-*

'ti

m

a.

•«-•

o

a^ ••--i >t as

ro -

o

-o

ra

-i

ai

«3

-^.

3

i- U

o-

o

i=o.

ai

X

CU

Q

J

in

ui

g.

S.

rescov

pop =1CDC C=

call 35:E£ ieriBascia-, .» t:ens U icnc. ce; tos.

ISDV ax.fiOV tJB.ó

les aíJEOV líc-á otr ):fer?rov,ar.EDV >:cr3 P- f" í-TsrPrDV-í-2.s=EDV v;:r¿ p^r Xts r f tddr .oHss t A r t E x l n s

fcntxlrs:DCE Ci

EOv aí.,Su£I£

fiOV ds,3S

ISE as.ílíerProvuov tinrd ptr X í = r f t d d r , a xBOV «:rd pír X Í E > r A d d r ~ 2 . E s

cap ajns rieátCndKQV s i .KDrd ptrlPrCocinsí-iC

ResíCodiiov E:,ofis9t PrCoálnsaov S3,*»ord ptrEPrCodlns-rl23

trEPrCodln5*103fflOV í'!1

rep c:vs«cíe

Fin£x!n;¡jai; :«=5rd ptr xteraddr

Exlns snop

near

1¡Este procBdiEisr.io TEGUCÉ la ssaoris legalizada para 2! procs=o padre a

•1¡I

O

í -O

-t-

1—

I U

ft

T—

M

01

V-

iB

C-l

m

x in

TD

ni

-a

3<:

"o

iti

le -a

na

el

a

a

el

o

ci

o

oex o

.oa. ti

K: él.Ot'Sr : función reservada11': I Í1C'"!SCS'"V

iret ¡51, tir

!E: iir. ranijcit 05 ÉÚSlSr'C

¡s;, cE:ir :¿e VE esis ir.s

pro: 053^

lEEte croc°ci(EÍenta prsssrva U Esgantia üitód d=3 P3P d°Í orocsso Chile,i *

511= h ax

DUS D5

2ü3t! es

E3V 5:,Bt'f

tcv 3i.DCwV 2í tdE

BCV ?5,£í¿

rep EOV5KPDD 55

DCO d=

pop dipop siDOp CS

pop sxretn

SavopEpCnilc endp

public R5=t?=oChiÍQRsstPspCniid proc nsar•

;Ests procsdiffiiefito restaura la ssounds sitad del P3P dsl Child,I

BOV BijOTÍBst PrsrvPspIEOV e5,PS?Chiltíaov di.SOheov cü)4Ührep E3V3V;rein

Estí crccsáiff

ra^ ' £^f Q! J c

::-EiDie :rrrs

eovRQV

EOV

ftOV

adtíEOV

ser2DV

SQV

rscECV

ffiDV

acvfiOV

SDV

BOV

KDV

intEOV

S3V

aovCíQV

rstnChüdProc:

scvSOY

BOV

SOY

BOV

£dd

QDV

BDV

xorsovrepSSOY

intSOY

FiñRedLsviSOY

BDV

r 1 r. ' i " p y fc

a:,.6:auás,3¡;5S.ES

as'.PSPChildas,10hcs.as51 , SI

ai.DTtset PrsrvPrccx . iOn ;oreEsrvar le cue tiabis antes d?5dsaovE« í?BrCr-ild^lO¡Of 32 ovíe=£V. . =5

dsfs>

tíx,oH=st ChildNsuebs.Dííset ParBlochSKjíbCOf'-ParB^ssParSc,=p ; preservo Stact21 R ' ¡EXE:'ax.édJTc ¡El controi nc se trensíiEre si nav error, yds, a* ¡viene acuij as: 2ue recuosro Staci y rétemess.ParSs ;Note5= oue O e= 1 =n este ounco, QDF =1 :sl

sp,Par3p ;ce la función deí DOS.

¿x.ldata

dsjaxssjParSs5p,FarSp ¡Rscuoerir Stactax.PSPChiltías',! Ohes,ax5Í,oííBst Prsrvfrgdi, diCSj lO ÍÉ

BOVSK jRsátaurar lo aiteradc debido al HXEC

ah,62h ¡encontrar la dirección de! P5F de! iñild2íh ;crocs=5PSBChiltí,bs ¡Preservarle

ss^eqlplnicñeaíOi3x

EOV P.eoDs.axflov as,R»3ts3fiov ñ=ots,5í'S3V asov Rfcov aEOV RscSi.a*EOV ax.P.egDslRiccov üeoDs-ñr¡aov ax.RscCí'lr:-:

QOV Regfix,£)!»cv ax.TiaosInicBOV íl5QS,3S

retnñsducsLsvel sndD

¡Uc SetTeríSeiTsra prac

oracBCiEiento fije is dirección de te reí nación oel proceso nijc.

tía: Di! = dirección o= ts

SOY aXjPSPChildaov =;,axEDV e s i Ü Ü l j d xÍDV E£lti2].C=

retnSstTerc ertop

public SsveFilsSavsFile roc ne£

¡hEte proceaifiiofito grsba en el archive se nosbre reorgsentsüa por un ftSCÍÍZ;en FilEiJase tíesdE la oosición indicada por FilePtr, e! misero de bytsssrssultar.te 05 íFüeSizBl-ÍFilsPtr). D£ tretarse dg un ooáulo ,ese i tssFlac=I),;se sraoó dEsde PsrBIocktí5ííf2:0, ds lo contrario, de5ci= RssCsIniciíOOh o Oh;=Eoun sea o no ur. irc'niVQ .coa. Ho se pu=í)e Q=nerér eobulos ,exe nuevos.

iccibanc

BtW G«. lJOt i

ÜEIOS: EDV o=,KeoC5¡r.i:

Dt

intje crr5aV=Fi:=

as.rsFirBaveje

ErrSavsFils:aov as, «sataesv os, asECV bx. -HandUC3v ari,3ehIPÍ 2!rsi::r;r =ri:rt F&8-.

r ir.;: 5 ve;

intFSsv: DDC

03 Ü

DOp

poppappcpretn

tíí

abs

jgratiado iodo 2xitQ52£Bnt&"

r ar^nivc, BX ya tenía el handls

public Lo=jEx5near

¡Este procsdisienta caraa el archive cuyo noibrs se pai¿ COBC píráaeirojs =5te proorsiss sn el PS? del aroceso padre, ai íinsl asi D5P ósl hijc.¡LUEGO calcula ío= valores iniciales de los seiinorEDistrcs, y cesé los¡siguientes psráa=trD= al PS? del hijo, CV es 1 ai 55 BESÓ un noaure 65¡archivo incorrec^n o 51 hubo probleE3= al cargar el archivo.jQbtiene la posición del Load floduls dentro del archivo que se carga.

¡ftdeoos BE rs torna la siguisnts iníorEíación en FLoadtxBi; O si es un archivo .exe; 1 si 55 un archivo .coai 2 E; es un archivo de datos; 3 =i no se =£ especiticó ur¡ nonhr= os archive; 4 E- si archivo especiticaoo no esiste¡ 5 =1 no 55 oudo caraar el archive .ese

Ifl

C3-

O.

13-

>-•

<

Ul

l/l

M

>•-

ci

<— -

n

in

n

rxTi

ci

nd

í x

f

r-l -

O

III

L-

o

-va

« ti 'ti

1.1

•i

m

ni

era

-H

ratí

m o

í j:

.u

».-.

o

j LL

"HJ

f--

li-

o

•»

--i

oa.

- .c

-O

t/3

en t-

(_

a •—

•i-

ro

-i-

' a.

—m

o

, tn

a

ü.

LL-

ni

(X.

•—

(a

-o

\j\

O

>"

— *

en

a.

ui

ra c

no

ro

ni

ni

ni

inuJ

t_

iC

" ai

ai

ai(K

ct

:

au

no

o

o

ci «

a

ei

tu a

ej

-o•

-t-

ÍU i-(

- .c

: tu

-t-

i o

o

•-*-

c:

u.

a

-o

a

-w

u

ru

u

»g

ni.

u

111

*l

C3

o

ra

1=

í;

ti1,1

•--,

—,

Hi

(Z

ia

-^H

-r-,

'--^

lll 1 :

lll

*.*

L lll

1

(11

ji u

4-

>

• 1

-ul

*U

II

7*

II

'«-4

' T

Í

.- .

• ; «

>.

i1 — i

r:

^f

-~

' *

- -i

m

>-»

Ql

11

:<-

m

r~»

1-3

.

lll

i; ni ** u '*.'.

" ¿-t CK ni

i— *

~£ • ~t

•-«

l-U

u

X.

0)

r—i

f-l

ai

x r¡

>c.-

, lll

11J '

), t.

t .1

lll

1 1

. 4 •-I

i: u.

-c.

o.

— •

rtj i'ii

L.

1.11

til

H,

ti.

L

L.

in

> i

ip

11

11

L..

t

Ji

TC

•.)

^1

U -*-' ai

• '"

¡u

ri-

i~U

I U

l ti li- -VJ cu • t- o .1.1

L-

I"J

«T

- -. .c:

ni

t*-i

-CJ rs

^-O

O

C 14-

m

•*-"

ni

ro 'O •tu 10

^-4 - ra

fO

Ll.

• -

oí-a

la

j

•« .e k,É

^ -•

•-*.J

í

Ot

ÍH

••*-

JM

"¿

.a i —

m

ti-, k,

t— i

.t-i

.£=

d -C

i

-—

a*

" -«

S

i— '

™ C

J

rn .a

xi

ce

M J3

r-

<-

J5

u

ai-•

-i»

— .

-^

LJ

l-J

o>

-ai

xi

ii -m

ai

-.

.0 n;

Cl

tu iS ro

"U -— *

-•" i

- IX

jXl

O_

Lt:

ni

ni -

UJ

-

1=

1

a:

X

íll

<!'

Cl

3C

Ql

n)

ra

ai

tu

ni

ÍJ

Cl

.í=

id

«s

uo

o

o>

5-

>

>

>•

ni

io

m

(-•J =r

es

.f-

i>i

M —

es

c*i

f\na

--

J —

i •»

-! ~~

J —

j cr

- ra

-

es

^~

^ es

c^

" es

es es

c>

oe

se

se

se

so

es

or »• :ir

u

- X

3-

=T-

=3-

=r-

e? o-

c? o

'o

e> o

O

O

-HJ

C?

<2;

e>

<?

O

O

e>

es

un

-i»O

e>

es

O

<

<^*

-O

•:-

"*'K

P

«U O

O

í -c

» i...

Jsr

»•

13"

ÍT »'

n

i

es

<=

• es

•o o-

í-

>J>

o

O

r:i

e» es

«^ '

rr

-sr

sr

¡3

^i^

> «•-

,-. e:

>

es o

o

e>

eso-

e?

es o

o

=r

3-

^i-

nr

rr<=

• c:

- es

es

o

^"

C5

ri

-i-

rr

es

e:'

es o

O O

o

es

es

e? o

o

«•

es

=1-

=3-

=1-

-r

=ye>

e>

<^ o-

o-

es

es O

o es o

o

o o o

o^r

Si'

n-

í?-

O

'

n

>-••

cu

>n

-o

ca

cu

a

—l

~fi

TI

ex.

trj

t-i

le-

ix>

o

o

•-

fa

ni

r-t-

ss

tO

'/.I

3

i-

(13

O

'I

.-—

"I

-

.11

m

tv-t

-o

-&

ra.

C3, a.

r-t

--

en tu

tri

a.

tn-

o,

a.

ex o

.a

es. a

n.

n.

a.

nú.

ni

fU

"O

U

Cl

ra

rs•-<

ti

O

o

ta

>ti

ni

-Jti

_ c:

=s

ai

ni

o

Ci

ni

O

ai

11

o ni

CJ

Cl.

Cl

-O

ili

iliiu

cj

u-

-u a.

3 -

u

—ai

ca

ro

•—

ra

ro

ura

ru

ra

>--

a>

oítn

u

o

ni

ra

-i-

\j.

u.

la.

..l•M

ui

ai

m

ni

o

=1

rd

c:

m

u.

u>

ai

-el

-o

_

tu

ai

ai

ai

Hi

ui

n*

ru

ai

ni

m

m

ru

111•C

) T

J

CJ

1J

LJ

Q

o-

(-•

r^-

«i LJ i.< r*i

. *

-i LJ

r -.

(-- ir:

•tu o a • i- £ : X]

•> l.T U.,

1.1 O C-

Cl

« t> iz: >

L.

O

i-.•"• II

0 tí

O

ti

L-

i.ci

-i

u•c

iL. O

1

n E

!u

i.:

*•'

LJ

f : i

;-

ra

O.

íT>

•=>

;->

—•

ir>

•=>

•se <n ta

llj

IJ.1

-J

^ ;

~'

~i

C3

I'L:

-_J

_J

CJ

IJ.

-l.i

T.í

TZI

1O

',

^

*~4

e

e

13

a"

»H

O

U-

.•-

— i

LJ

ra.

:-•

>

>

5-

c:i

i '-

ia •^^4 a i— a

en a:

i — en en

tu n:

"a cu ru L.

í^ ^£ en Cl.

-a ^e in a.

>

<U> - O

na ,

L73

ixC

.J

t_3

ti-

<cuí

tn

TU

C

J

LJ". .it

1)1

Ifl

> >

—<

C-l

a-n

a:

a:

ij.i

i-u u

íK

n

X.T

at1

CJ

(._

) —

i.o-

a.

ur

C3

Cl

T

-CJ

-13

"IJ

-— *

C

"'l

69

U!

ri .

u

LJO

LJ

t.>

>

>

-J

-C

-^>

CI) IL

.3,

: '

- - U

í uu

IU

Cf)

C

.

V .

• - i'

1 t-'l

i. . i-

i lU

. rj

.

Ci, C

utu

i_

í rr

i cj

o

c3<:i

(_1 !„! tj

(..5

O

•^j

-ca

"in 'ij

x)

til

Otj

l..

••-

t"t

O-I

C

-l

(U

l~l

1.3

1.1

U

LJ

' IX

0

en o-

o.

<^

- -^

LJJ iii

- -•

•;_>

-

• C

íC

-.J.

CH

| X

C

_J

-

3E l-

-

C.)

u.

ü.

MI

un

ci)

< uí

Í.M ar

en

ra

nt: «a: i.u

cu

«a: ai

ncí

ca

ra

ca

Q: d

.x.

LJI

r_j

iu-x

j"c

i"u

j"C

J"e

i^c

j'O

''3

i t=

1JL

: -ib

ni

cc-i

-J=

"J

'''i

c:

oL

J L.I ti

T.5

V

- -E

J (T

III

LJ

> >

>

>

>

>

>

•» >

íi

<r i» LJ

^3 ur >u .a u •>•

.1^

ce:

ca

•—

•a:

1=3

Ü.

U.

— i m

ü-

ii:

•Vi

TJ

i~o

•••<

c:

-ul- U

> >

— vi*

(K.

._!

O

---i:

»:

=»S

K

O)

i—.

UJ

u-

o:

Jín

JT

J-d

-w

tt L_

Ü d >

l*-

U

^>•

>

O

-S'

*i

-

-•

- .e

n<£

X

— .

1>

~1

ffi

Lll

•—

*-'

S3

t.J

U

J

1.1

LJ-

ni

to tn

sa

i35

«r «i:

tu:

•a

-a

*o

-o

— .

£--

JLJ

LJ

t3.

o-

m

S3M

- ni

m

u.

5-

5-

>

?•

.•Sí

n;

ii- t J

«r

o;

«.«

3E

--

*

C J

LU i'i.

SÍT.

_l

m j;j

..J

C_J

11-

13

-Cl

JJI

-ci

-o

-ci

Itl

rt

LJ

n.

e_

o »

^'

U

>-!-

> >

>

•O

-O

Cl,

<l.

>-

;>-

<x

<c

jj

_

D

T;I

-o

t.i. .il

>••

i-

ni

m> >

•O C)

*ir JÉ

X3 -o .">

•'III

>

o-

UJ

s^ •ar. .tí

•ta ni

>~ ra -*

x:

<c

.t3

"t3 t* -K

*m ^-

O

O

(U

(U

TO

tO

O

,

o

o

o

o

ou

t

i a

-a

ot?

w

o

"

o"

et

o

ra

ci

is

»tn.

iu

ui

cv d

.

o

o

a

ci

ci

o

u

ci.

ci.

ra

r. -j

cr

CT

3>0.1

m

iv

t~i

•J-

-'.

rti

•••

cu

rn-

ci. ti

e>

a-

iu

o

O

(n

ci

i—:K

rn

—i

ci.

n [

i--

-

a

iv

o

o

'T

a

--

O

Cl

(

C-

a

'c*

ctn

ca

03 «i

t-it

i—i

i/>•i-

-(.

.(-

,|.

i.-

.iK3

t3

en

rj

j

3-

m

tu-

(u

ru-

-di

O O

n

O

Cft

Cvl

a.

-i

en

tu

tU

i-

IO

a

t.ci

- O

- ->

-•L.

u

1.1

ra

L.

r:

i:. LJ

U

L3l

1-

1l_

] lil

1.1

LJ

"Cl

LJ

íu

..i

ui

.-1

L.I

i~t

IB

i.u'

IH

L~

-M*a

••ni

a

i—

-

-i

- -

ni

o

t--

ra

01

LJm

ni

(3

ro iij

>ii

c

m u-

" U

J

OL..

o

ci

O

»"•-

k-

t.J

ni

tft

x -i-'

-O ü

u,

«

13-

•«

£>

•"

tj:i

ni

tu i n

-"

j

ci

i_i

«

-i

ci

m

.cu

c:

ai

ai

si

ai

es

íl

-• •

-. i

.u-

ui

-a

ni

ii

t-~

lll

k,

•-«

p,-

L.J

a

'o

irt

U lil

ni

m

in

í)

¡a

ni

ni

1.1

U

O

L.

-Cl

LJ

11.1

_J ti)

<X

U

l L

.I

LU

I.U

U

l C

"

LJJ

3C

Ul

™ II- L

l.

VI

13

"C

S

13

"C

J "X

3

T.J

-u

-u

-UP

-l

£1

O

ili t,

;*:

LIÍÍ

l.l

Ut

I/I

lll

e,

n

*•:

c:

ni

;»:

ni

uj

EJ

«i

¿>.

.r.]

o

™*!

o.

ii)

c:

ai

oj

aU

l U

l U

l •>

•(-

cu

aiKI

ni

ni

aio,

a.

á., á

. el

a

i—ye

'i

li-O

03

DI

ni

in

o

a

a

o o

ai

e

uj

mac

oa

oo

ai

ii

&

si a

e

•o

LIJ

a

h—ro

J

o u,

iu a.

iu

o.

DI

ci-

o.

c;

ut.

tu

ra

a.

ai

in.

ai»

« «

c

U

-—i

M

•«-!

vr t eilCSl" ^ j t r£»'Sr6

ilC-í i f ¡ -¿ ,r.CT3-

r r *-(-.;*•^c ^b. i-cii

es!! p:eii¡5;cp sálica

raír! Jí^D rdíiin

¡ayuda &snii depuradorO ;EílTER, pasar

je rdsícae aopaux,0jne rdxfcep E0pauxl,60 ;F2?jns rdxíECV bíjCttset vsvtjvút ' a 'l i s í n 2¿rev?r=

cnnt i, 23tlecCont, reveráoatcnarcali

rdxíi jap rsfun jotras funciones

rpeí: jóyutía asnu ensaablstio:csp otroaiiXjO jENTERj pj= rdsíícsp sopaus,0ins rdeíícsp ftQpau?.í,&0 ;F2?jne rdef?IQV bSjQÍTsat vsys

vnt '= 'íiffipln 23,rsverslispln 2^}

print ÍQEtcharcaH pdebugjfip sa l ida

rdsíí: jsc rd-fun ¡otras íuncioriss

rtísí: ¡ayudi ssnu isaariccip otroauSjG ¡EtJTERj pasarje rd t t f ícap aopauXjOjne rdatfCBD ED05USl,í)0

jne rd&fíEDV bSjOTÍset vsys

f . cncav . te/ 1, 195: Pac= 203

vm aiifisir: 2 j , ri it-'lr 24 i^

cei: poebuJ£p Sáiiíñ

rccfí; jcp rdfun

jayudi E=nu ruptura :csp o t roóux.O ¡EKTER, oasarje rdrííccp (EQaaux,0jns r d r f ícap 800311x1,60

rdrífbíjoíísst vsyr

hspín 2iispln 5priiít ígetcñarcái i pdECucjap Balicís

r c r f f : jop rdíun jotras íuncionss

r n o :Isopnt :!icpÍQ panta l laBOV diníoí-ZjOaOhBBV d infor7 jOa2hBOV dif j fo- í -SjOtí íhCDV bx , offset v info ¡auestro ayudóf i D Y S X . C 5

aov s i jOÍfse t diníovrit 'a'liBDlr. 23,rEversliapin 2í,nomalprint lj23,T2cCont}revEr=getcharcaU pdebuoBDV sijofíset lOini j preparo y suestro linea Ocal! ffilinOfaov bs (of-fset vlinlSOY ax,á5iov ai, offset Üinivnt 'a 1

j ap sa l ida

cnackl : push axpush diODV d i j o f f s e t preseriíSOY c u ? ?

hcncay, hgy !. 1955

BDV al.Ochd: adc al,ttíi3

inc diiocp chki

je cfeííPUS?' SE

pü=h 05

cov ci.CTÍEei tabbu-i

C3V C

retí ¿tosopop 55

oop dipop asrein

ran: ;r=:ib2 eí ncBbrs dsl Objetiveca l í cfiEd:!haalr 23,r5V£¡r5bacín 24,ncrcal

BOV DQr£55Í,i

rrní: oetline l,24,3rchivo

CSD

jectpjf!2

cap

jeBOY

push

occcd¡flrrnícccodjlrrn!archivD-rírrní5Í,OTÍEst

B5

;E3C?

¡validcí?

,0 ~~ ¡V5CÍD?

archivaí-1jpaso a i

¡valejpaso a PSP dsl padrE y = FilelísitE

oov eSjPSPparsntHOY di,90hBOY ex,30rep soY=baov 2x,SdataBOY ES.asBDV dijOÍísEt FilsNaasaov si,offset archivo??SDV cs,BOrep Eovsbpop es

rrní: j&p salida

ral: ¡Recibo tasano del archivocali rrtOjsp 55lida

rríO: liapln 233reversluspln 24,noraal

i"

a

m

o c

10

-o

*ci

<

in<—

• n

EJ

•—•

=n

n

o n

i-—

m

in

o

o.

o 3

o u

CíJ

c/

J (n

-i

-

i— n

n

to

t.

SK

^3

[TI

^

ra>

o.

o-i

-•-.

o-i

)ti

i-t-

ID

Itl

¡a

ru

i-,

o

-i -

t-i-

i

111

É3

U.

—•

CJi

C-

-J

Cl>

¿u .o

nt

V

- L

J,1(

1 tn

III

-O

iT3

Ul

-

I.J

C

J.

CJ

. i-\

T~l

U

U

'«-I

U• -i

t-

ni

ui

ci

o

ci.—

. o

. u

•<

-] ea

ff

l s

11

o

o

ta

ni

111 o

ni

-.-t

in

•—

111

ti

V

-. U

..O

í -

-

111

V_

C-l

Q

X

"C3

-J-

Uni

ti.

o

u

[fl

ti)

u [2

B3

•a

ai

mra

m

-a

es

u

ara

si

m

in

>O

O

«I

xcr¡c £¡.5-s:hg faí.trrrv suí1 • 3"

C5V SUÍ-^ .Dí ,

PD: diaov di.i : ¡13-DL=i- ds lit&a ¡0-121K3V dh .OHñ ;? hnsa a r£ = 2 l t £ r= =

r:atíO: cal! chEúi2sov sx.ssgcoijc a l i pcrOCSE cK,reces ¡chinela? el CS9;re p:odGl:cp íi.regic reincide E! I??jns pccdO!ccv dh, I3 ¡si aEDo= coi r ic idEn, iir¡=£ dshesufa dh.tí!

pcodOl: GOV a^ ,auK jesiricc seosentc=to suaov ax ,aux^2S105K

acv ds.SBa:occal: d=5=nad=t ideáensasbio linea

f l O V Q E t O X

ad¿ EÍ.CS

acc di,29CBp bviE ptr ídi-n,1jrsB pcod3 ¡Si 1= íinea no == cuy larasCÍD =1,0 jpongo al tipo de instrucciónjne pcoéí ;AL = O --> byte ptrsav byte otr tdi-13,'3'jisp pcod3

pcodíí cap al,l ;AL = 1 --> nord ptrjne pcod2sov byte ptr ídi-H/W'jip pcod3

pcod2: cmp alj2 ;AL - 2 --> dword ptrjne pccdS jAL = 255 --> nadaaov byt= ptr ídi-11,'0'

pcod3: ose dijni pcodOpop 55pap 05BOV oroxin5,5Í jouardo dir. ds prox. paginssov axjds iventana Código,sov bXjoHset vcodJ10Y = Í , Q Í Í 5 S t COdíOtJ

vnt 'a'cap d h , 0 f f hjs pcod5 ¡no hay !in=a que resaltaradd dh,3f i O V í i i , Í O

Dpstí ir d l . d rf fov oi .ccciri r. i c ir-üv c^2á ¡resalte hne= C£:1Fc:v 31,70!-

p:cd4: stosüIRC diIccp p:oá4

pcod5¡ cal i pcrOO jrE=á!to bl;pt=rsin

checkí: pusn axoush diÍEOV a l . d i n f oxor a!,44hcap si,chi;2!jns ck2saov eS.dinfoiUxor alj¿7ñCED a l ,chk22je ck24

ck2=: ousri BE

DUSÍI ospop esffiov d i .o t í sBt tabbuíEOV £ S , 5

sav EX,2000rep stosbpop °E

ck2f: pop ""dipop 5Xretn

pcrO: ¡veo si fi!£:Sl perteneceri a TABLñBRK y si es asi.jponoo un í en la entrada respectiva de TftBRUP sijes punto activo o 2 sí es inactivos todoaov d i jDi ' t se t TabUBr):fov ch,0 jCH^I ds! bfcpt buscado

pcrOÍ: sov b!,chIEDV b h j Oaov c 1 ,4shi fax,el ;multiplico por locap byte ptrídÍTbx3,0 ¡veo si tersine U tablaje pcrQSCEP Edi+bxíl23,si jof- fse t ioual?jne pcr02 ¡nocep [dÍTbx*M],£x ;si, segaento igual?jns pcr02 jnoSOY a l , Ocap ídi - i -bxi lDj t í l ¡si, hay un fakpt. Dssactivado?jne ocrOl l

fíor.cay, Hay i, líSS F e & 210

p.rCl!;

ocr02:

pcr03¡

ocrÜO:

pc.-OOI:

p:r003;

pcr002:

prelin;

prlí:

prlll:

pr!2;

novin:ccvsu i[SOY

?Ctf

63V

jspiritÍK2

rtcdoretn; buscoBQV

HOV

ftOV

SOV

capjeEOV

CCD

jneSDY

fifOV

aodposdir•ovincaovcal!inccapjneretn

BOY

Í5QV

pushpu=hpopÍ30V

oovrspEDY

BOY

lodsbCEp

JB

scosbloopBOY

aov

al,laiDi,!:cí.clCÍ.CÍ-55Í

bn^Ocyts :-tr[p:rC3cripcrOí

BR 7ABHÜPnlinEa,0EljCfíSfit

bljnlineahn l>

byte otrípcr002ól. 1Dyte ptríper 003oi.70hch.blch,3Cjchdijpdtíirdial,d]rdcdOlnlinssníinéa1!3pcrOOl

b«. didijorfsetesdses_ 1 * '«íj

es, 44stosbcx,44dijoílset

aljOprI2

prllles. IBsi.oífset

:si!P.L=í activos, 2 inactivos

Tsb*i.'p|3XrDI apuna a ensaca sn TfiBRÜ^'

c^bsl.al¡salce¡preparo si-guiEFtte Dusouedé

U= lineas que tienen bfepts y U= resalto,

TabRup¡pera CSGB linEa veo si deba resaltar

bx+5iJ,0;no resalto¡resalte

3KT5i],l ;es activo?

;si, vi3£o reverso) no, subrayado.

-

¡resalto ~ casillas.

¡preparo LlNEflOlineaO ..

iprisero borro

íescribo LiNEftOlinead

¡salgo al encontrar un 0

jo escribir 44 byíes¡escribo noabres

díinO

ti,offset liEQVEC

di,cHE2t rssistes : ou-íter BES!ST

pop

xchg51D5B

S3V

xchg5tQ=K

60V

StQSW

BOY

xcrg

acv

tovxcho

SOY

seno

ss.tegBpi!. sh

ax.RegÜsal j sh

al,ah

as.SsgEssi .an

;LEC ur¡ rsgist-c del usuario;ponoo H5B anies de LSB;y gusríJD er; el buíísr.:E1 orden de los registros es eljadecuicio sra la ventana REGISTRO,

SOYxcho

alahBOYxchu o í jStOSH

BOY 3X,

xcho =1.5ÍQ5K

aiov as,xchg a l } ahStQSH

cov ax,RegSpxchg al,ah

SOY

xcho

popfiOV

flOV

BOY

al,ah

esas.tís jventans Registrobs,offset vreg

i iT

cu

o

ni.,

-. o

ni

ni

u

-o-C

J o.

"I

nt

.a

-ra

o-

ro

ui

in

tiO

til

(J

Cl

O

LJ

O

4-<

O

l_l

O

-t-*

O

U

V

J

¡B38 IBSUQ'TS

5UE1U3A

AOS

AüS

£03533 lí

£?!GOA lí

O'XE

qtisAG8

AQ3Aoa

AQ3

AOB

AQS

a'od

5Uf

23UI{ti DUÍ

{5333

-1554.0 O S Í Í

x ' x eHSAOfi

f X Q ] ! T =

A03

ÓÜ3X

tíajADB

DUDX

AQS

AC9

AOS 13533

GpBnsn ap saisp gp -óss s íiunds 33!

5J5 ínG QJSG3JQ

SP

í p ' x p

A03

AOS

KSAQ3 d=J

X p ' S B AQS)

xp'se nq^sJ T p ' X B AC3

53 GDQ

gsnd.\03

A03

A£33

AG3 !S35üi:

KSÓA Is

S'JSiUcA.!

VJA

ACÓ

AO'J

A05J

:;: *"j 6361 ' I

toncsy. «¿v ¡. i95= ?ao= 2Í4

pstkh

ViiL

EOV

r.cvtOV

vr.i

B'jsn¡ECV

BOV

ÍÜCV

SQV

ÍOV

ffiOV

SiOV

SCE5G

fiOV

subaddí ü ú p

SOV

SOV

KCfiC

fiOV

sufcaddlooppopaovSDV

ffiOV

Vílt

rstfi

aovpushsenoffiQV

«ovCU 5 ti

XCííG

-aovEOV

ffiDV

ÍEOV

poppopQOV

repBOV

aov

TIéx .d ; ¡ventaría ASCEEIÍÓ X . O Í f s S Í V2Í3_ ; ,''--! _ - _ t51 , O T T 5 S t B!5Í2I

' a '

£S

c S j í ; preparo buí- far STCKEl. Í4 ;;2Cüfíria ccluiana.D S j ü í f s s t stckd i ,Cbp,r525p& E , r e G = saa,s5:[bpidi3al , ahEbx- í -= i3 j ax51,4

di , 2ps tk les,: jpriffisra coluisne

51';:_.,ai ,ahíbs-;-5Í3,asE Í , 4

di. 2pstk2ES-U -"- . 'J~r, }---!- C^-af-lrttSjUS ¡ V^ntsUe ÍJL3CK

b X j Q Í T S s t vstks i .Q t ÍEs t sfcci:'h '

ax , rBQC5 ¡pcr.go en EXPCOD ios valores deax ;C5 5 IP del usuario.3 1 } ñh

tiord ptr expcodjaxax , r sDÍpass l .ahword ptr s>;pcod-í-2,iKas,e(!sta ;paso 10 bytsí de código a EíPC1

B5.esd i j o f f s e t pKpcod-T-4=iosex, 10iovibsx.^tiatads.ax

c-edirordl:

ardí!;

prd!2:

prcí3:

p^dH:

prdlS:

prdíó;

prd!7:

prdlS;

prd!9;

prdla;

prdlb;

prdíc:prdlf:

prri2;

flDV

EOV

C.CV

fiOV

Víit

retr.

¡EOV

ravEOV

(SOV

aóddenactuar3H

OH

dwCQV

ja?soyJRD

ecvJC2

aovjapfilOV

jr.cB3V

jfspfiOV~

JfflC

fflOV

japEOV

jspfflOV

ífruffiOV

JKp

ÜOV

addaddBOV

BOV

BOV

decaddacvcíe5hractuar

=5,vi0ecs.egcr, offset vear.fls£i. of fset s"'h '

nhnaa,übl.nhnesbh,0sljOpcseoEbsbx.faxai

of sst prdlloí sel prtíl5cf 5ct prd!9as,RegD=prdlfaü,RecEspriílf"es jfÍEüEs

prílícXfResCsprdlí5K,tieQAxprdlfax.ñegBsprdlf"ex.R=gCxprdlí"3x,RsoDxprdíf"5s,REg3iprdlfaxjReaDiprdlísXjReoBpprdlísx jxxüxsec íbbx,bxbx,2áir2ÍLb3tl,axbl,nlineaal,Qpcoíf[bsalGK,bX

óx,0

al,l

sp: ¡presento verttans

CüíC

ísars cada iinss...¡calcule si secasrito!

] ; }BO cpcion de segraerito

;ía. oacion BS la cero;EÍI base a AL salto a una rutina

, of fset prdi2.afíssl ordl3¡ofÍ55t prdlí, of fset prtíííijDfíaet pr¿!7, offset prdíB, offset ordl2,cff5=t prd¿b;sííEet prdk

:DS

;ES

:S5

;C3

¡AX

¡BU

;CX '

;DX

¡SI

jDI

jBP

si ¡nn

jouardc =! valor del segmento

jcalculo E! Oíísst:3 j leo opción de offset.

;sl despl. sera sutado luego porjío que calculo sin desplaiáffiiento.

;en base 3 AL salto a subrutinaoffset prd2!, offset prd22soíf5&t prd23

dw offset nrd24,offset prd25,oíís5t prd2¿dv. offset prd27,Qíí==t prd2B,offset prd29

pr¿2s: iscv ds,Rsp3Í ;Bí^3!

prc¿7: EDV dx.RegBi ¡EP-i-Sinrr!1?1?! sf;ri rs .nsf í in < 5 D

prd23: aov dZ jRscS i ¡51

jiap prd2aprd24: S3V ds.RegDi ;D1

;sp prd2=prd26: acv ás.RsoDi ;5X-

adtíJSjj

prd23i cov dXjRegDi jBPí-Dl=dd dx.ftsgSpjep prd2s

prd29: aov dx,xxxxofT[bx] jXXXXDrd2s; sov ci.nlinea ;veo si d=bo suasr dsspi.

ÍEDV sí lODCcft íbs3ODV ahjsicncfftbx] ¡leo &1 sigp.D U o -)ado bíijOj;tíec alt°5t al,l ;si es par no necesita dsspi.jz prdStcap 5!í,'-t-Jjne prd¿c

prd2b: add ds,!;£xsoíf[bx3 jáigno T, =USD dsspi.jtp prd2f

prd2c: sub dx.sxxsoffíbs] Asigno -, r=5tD dsspl.prd2f; sdd bx,bx

lov dirSUbxljdx jqu^rdo él offset.prc3: inc nlinsa ¡fin óel lazo

cap nlin=5,5 jíin?je prdíjap prd! jno.

prdí: retn -

preopc: aov ex,75 jpreparo buíísr rtEHQ! en base 5 ÜIRíEQV dijoffssl ffisao2 ¡y «EHG2 en bass a DPC5EB, QPCOFF,fsov al/ ' ¡XXXX5EG y HXXOFF.

es

pop B5

rsp stosb jpriasro borro HEii02HOY di,offset BESO! ¡escriba fíEKQtaov bx,dirH2 jseoasntosoy QXjdirl jofísstoov cXjB .(scv bp.bx ¡guardo Bí!.

popcí: aov bs,bp ¡escribo direccian°5

-O

ÍU

M

f—»

iil

ra

O

ra

i o

oe*

t a.

i —

e>i

10

— •

LI

->i-

o

u

ij

xi

o.

ra

id

-c?

-a

ci,

i-u

n.

tura

. ra

-r

a

-ra

ci-

C-.

ttü

X

W

l»<

m

ti

-e

r•a

u

a

s -c

i u

ui

• u

10

n» •-

-cr

j^

.-•

_ O

ra

ui

ni

.—.

JC

ni

u

ti

.1:

iJ

HJ

O

tD

Ü

TTJ

>

>•

13ca

ci

u

>•

j=

O > o

ai

o

u

-o

n

o

*s

O 3

n

ci

nj

a

O19

K

W

V

I E

SI

-

-^

c:

a-

o

o

o

o- -a

o

O

O-

-O

o

ri

o

o

o

O

ra

O

es.

a.

ni

••

-i-

Ul

in

ID

in

in•—

id

di

?:

n«C

L

CJ

»•<•

o

o

cr

-ci

w-i

n cr

je

LO,

ta

iti

1 ••

• U

l !•

«•

O

n

ttonaav, tey i, ;9S9

usrorc• - ? ;céli pdsbíic

:Corre nasta i a ocurrencia Cs un evento

EOV «ore ptr x irr&ccr.o; '==i ^sEjh==i^ov worü ptr fcTsradrir-^.csctr.£ íoocccrre.C ¡Ha=:a cirecnon?;s rdcdjcp rdcc

rtíco: icv a>;,R2gC£ ¡Ccrridi hiEta cierto puntoeov word ptr dh?xl*&,a¡isciig aljah ;Haga ous CS usuario 553 seq. prsdei.push as ;para lo que sisulo condicionesr.sxascpop axSCtlQ üljbil

flov woro ptr dhssi-r2.bíBDV ciitcorr,b?EOV a t ,=hnexascxchg bljbhBOV Kortí ptr dhsxí-fíjbxaov bnícorr^2,bseov byts ptr dhexi+1,4

rdcdl: s.ov bx.oííset VÍIEE jVEntana para recibir datosSOY as,ds

~ sov sijDÍíEet buícorrvnt 'a'printaovcep byté ptr buícorr,'_'je rdcdlisov ax,' 'EOV

BOY

jsp rdcd2rdcdll: cali rdcdO

geidata !0,20,dhejfl,'h'resalto caapo de ssgaentorecibo ssoaento

BOV al,atrprev jquito resaltadoaov di,dirprevcali rdcdOIaov gdresEt,0cap occodjO jdato valido?je rdcd2cap gccodj? ;ESC para abortarjiie rdcdí2jap rticf

rdcd!2: cae gccodjS jTA3 para pa=srjnE rdcdü

Koncay, *=v 1, Í^ Pace 22!

rc:¿2l: c»li

ftOV

C 2 l í

BOV

CE¡¡J

jecmpjnejaocao

gdreset,!rdcd&O jresélto caapo dé 0-15=1S7,2G,driE¡;2,'h' ¡rscis: oííssta":,=trerev ¡cuno r==3'.ífiocdifflircrsvrocdOi

rricc22:

rdcd3:

ICctO

;E3C pare abortar

;TA3 para pasar

JESusrorcffOV

60 V

2DV

gccotítOrdcd3gccod,7rdcd22rdcfsecad,5rdcd2írdcdl

¡Pantalla ÍÍE usuario<—>PñCóx.HDrti ptr dhBx2í-¿wcrd otr pointerUtjbxas,«aro ptr dhsxH6ward ptr oointEri=ir2,2x

rdccl:

rdf:cí2:

rtícci3:

rdcc2:

jfiD

BOY

vníprintBOV

calicercharftOV

aovcalíCÍO

J2

cepjnejapcipjneCEO

jnedsccapjneffiGY

jspCfip

jneinccapjneBOY

jspcali

=sna=ta•DX, offset vcond'a'Íj23,123ccjrev9fniinea,0rdccO

al,atrorgv_di,dirprevrdccOÍocccdjírdcc2occod,4rdcc!2rdcígccod,5rdcclgcascii,72rdcci3nlifieanlifiEa,Oífhrdcclnlins£,2rdcciQcascii.SOrdccln lineanlin£a,3rdcclíjlinsájOrdcciBSSDC

¡ventana con iss conniciones

-=¡para cad= linea,, .¡resalto Unes actual

¡quito e! resaltado

¡EKTER?

;ESC?

¡abortar¡especial?

¡sij arriba?

¡si

¡ abe jo?-

jsi

¡restauro pantalla

PfiO.ftif hondsy. fey I. !?£9

cali issucap n H n s a , 2 ¡conciciori de bandera?jre rccc2lje? rscc5

rdc:21: CDV b*, oírse! vrv ¡ventara aira condiciónvnt ' 5 'l iapln 23,rfiver5 ; reg i=zrü = c O X S X Kcrint I , r3 ,123rcf i r sv5r=

eco r,hn83,0 j igua ldad?35 rócc22sov iouaH3,0(i8h J R D , ae=igualdad

rílcc22: print 10,20, igüal,norsalDOV gdreset ,!

rdcc223:gBtlin= 10,20,noQrsosov gdrssst jücsp gccod,4 ;ESC?JRE rc¡:c23ja c rdcí

rdcc¿3: cap gccod,! jrecibi un r£g?jne rdcc221IDV si.ofísst ncaregr? ¡si recibij ES TEQ, noraa!?aov el, O ¡en CL enviare una banderacali EncRsgjnc rdcc25sov cl,lcali EncSreo jnc, s= os 529105010?jnc - rtícc25liísplfi 23,rever5 ;no, errorprint 1.23,noé5reg,réVBrs ~

SOY tíctp al ,27

jsp rdcc2irdcc2í: jsp rdcfrdcc25: jaqui.ya tengo el registro, ahora recibo e! valor

aov a u j S j a xlispln 23,reversprint l,23,123capr,rever£soy gdrsset,!

rdcc2¿: cal! rdcc260 ¡resalto el campoc»p el, O ;rsgistro norasl?jne rdcc261test bylE ptr aux,8 jsij 8 o Í& bits?jnz rdcc2Mcetdata 17,2t l J dbyt& ) 'h I ¡3 bitsjap rQCc2ó2

rdcc2£>i¡Q5tdat3 15,20, dliexl/h* ji¿ bitsrdcc2¿2:aov górssetjO

cap cccod,? ;ESC?jns rdcc27

JT

L~-

l C

¿>U

«I J

-i:

.—

-o

co

O,

cu

ii

ni

LJ t

, .a

i.

u

u O

a

M O

i_i

u

-.

LJ

LJ

Cl

TI

—i

K

,—i

>Cu.

L.

.-a

cu

-u

UI

-i-' .«

iir

> 13

^a

ra

-o

LJ o

u

~

«

LJ

LJ

U—

J

-rf

-d

U

ID

••-<

-U

- 11

1-o

u-

j u

IT

J ai

O

LJ

in

u

LJ

u

ro

u

i ui

10

u

in

iuc

u

c

LJ

ni

u

t=-«

U

•—

« U

01 U

•-!

n.

L-I.

ni

1-;

í£

t,

*~i

CJ

*i

rn

ti ti

o

o

ai

oC

L

>.

-*J

>LJ

ra

. tu

i—

ui

£9e»

m

ra

o.

nx. n

n

O-

n n n

n -i

"-

~-

~~

Jt3

13

c.n

•=• -i -i

=?-

i— a.

-J

'fu

m

--

—~

C3.

O_

O

í !-

-•^—

< S

J-

i_J

o.

CL -=>

10

n

-

n,

o.

i--.

o,

»—n

•-

n

raC

-'l

ID

O

=1 n

PR3.A5ÍÍ ÍÍDiiday, «ay I, !95? Paos 225

Jff lprdcc2-iO:pc?stíir

fflDV

in:IÍOV

rdccJG215.20rii,pdtíirdiaí,70hrdcdOl

jaqui ya £E hace el RüTN¡resalto caaoo de dirección

tatfui va se race ?! RETÍJ

¡ejecuta n£5i£ ruptura o -fina!

rdj ! :

rora:

rdrc:

T-drb:rarbl;

rafalla:rdblí:

rdbÍ2;

rdb!3¡

eovaovaovjspeov«oveov

calijep

2Cv

EOV

1 f

ffiovjfipAOV

BOY

liaplnlisplnoriniSOY

flQV

fflOV

vntaovcaliüetlineBDV

ccpjnejapCQD

jneC60

jnejopccpjnecspjecap

as.QÍfset rdjl«ord pir )¡T2rAadr,3sworfl ptr Xrsrfidtír^jCSExl o tal5K,^dstari=,ax55,VÍQe05ED

pdebugsalida

;=:tivD/GE5a:iivo bkptdhnü,4iihorno,! ¡bandera BRÜP=1 para activar/dessctivarrdrblbrup,2 ¡crear brspt, BRUP=2rdrbíbrupj3 ;borro brkp.t, 8RU?=3rupactjO írselos nosbre del irkpt23.revers ;RÜPACT=ruptura aciusl-124jnoraall,23,123bkp. reverábXjOtíset vrnoíi ¡ventana para nos-brsax,dssijoííset iiline'a'gdresetjlrdrO ¡Biiestra ventana de bfepts12,19,noabrk ;recibo nosbre del brkpígdresetjOgccod,4 ;ESC?rdb!2rdrbf2gccodjí ¡vals?rdb!5byie ptr nosbrtElljO ;si, pero esta vacio?rdb!4ríirbí2 ¡sijtersinoüccodjS ¡especial?rdbí!ocascii^S ;PGÜP?rdbí32DC55CÍÍ,81 ¡PSDH?

-cj

=i

,—.

-.

U,

CJl

>t

o --•

•o

u

iu

o

-a

oi.

•-

!•

.4J

-» -

u -^

--%

in

x

a. .c

>.

>

.3

ai

ci

u

Q

o

ni

u

o

a

o

o

h a - ; a > . Hay 1, 1939 P5o= Til

C'DV

C B D bvte ptr burcoT.1 '

rsicll:

rup!2:

n¡p2:rcp2i:

ruo22:

rtipS:

rdrb4:

rdrbfl:

rdrbí;rdrbf2:

BOV

rcv

_ . 1 *

getáataOOV

acvcaliBOV

CDp

CCp

JI3B

jspcaejriEÉCV

cal:ceiddtaEOV

SOY

caliBOV

CSC

jeCED

jnsjspcapjnejepaovffiOV

EOV

cal!J6p

calijnclíflplnprifítJfiO

calical)lÍEplfl

printgetcharcalijap

ai,,'

¿u'r^rr!:"5

rup&29,2l,dhsxlal.atrprevdi,dirarsvrdcdOlgdrasetjOgccotí,0rup2cccod.7rup!2rdrbt'2x í

rupllgdrsset,!rupOÜ3É,21,dhex2ái.atrprevdijdirprsvrdcdOÍQiÍrS55t,0

cccotíjOrup3gccod,?rup22rdrbf2gcLcd,5rup21rupl

v

;rE=5lío caspo de seoasr.tc, 'h' ¡reClDO SSOEBntD

¡cuito rEsaltadc

¡esto vslido?

;ESC pora abortar

:TAB para pasar

jresakc cespo tís cfrsst. 'tí' ¡recibe offset

;ouito resaltado

;datc? valido?

;ESC pars abortar

;TñS para pasar

si, offset noabrk+2 ;ÍDDQ listo para crsar bkptdüjMord ptrOxford ptrftddBrkPtrdrbí íDelBrkPtrdrbí!23, reveráí,23,noesbrrdrbírdrOscod23,revsrsÍj25,li5t0j

pdebugsalida

dhexHidh=x2f6

j borro brkpt

k rpv3rc

jactualho Ventana de rupturas

¡salida QK con esperarsvsr=

jsalida con esperajsaliíjá. Actualiza pantalla

q q ' i q óipx35SX5U

oiuasáas oj^sansí ESi-rdq-rl^'.SQ'iE A0°

X * f [ Í K T P ] A0t

p'H ACÓ-rjpj AOK

' X c AC5

AOS

AOB

[ap saiAq oí oido^í [2itíq^íS]:sp[X5 AOS :i20JPJ

,t,'[2-i-TPij:í^ °^q A0í125-Jp-J af

O'í? ds sa is i UOD ODJS«Í

3S2X51J

}d;(jq ap j cóuooí [ac^isiisp1' js AQS5ST]¡n a¡ anj' tsí

siisp _n ae e .undE ¿grisí XE'OQ ACS

ÍP í"39{(I5 AQ8

=uT¡ ?pe3 ejedí o'Hauuu AQSdn'J¿ng ^asifo'íp AQUÍ

Vg5[q5| 13SJÍQ'I5 ACB

sa dc¿q=D}5 dsj

sa dodsp qsnd55 qsr.d

I)' 12 ACB

891 'H3 Aflí

3=^ejasaa e j- -onj ep 1=15;

acsp ano ja spsan (¡-; ejruanj sp s {a !JG3 ijtfcílíj sást í 335!•taj [3 ooinpuT inos: [i)dnj dnf

ygi'if^ Jicsodiaj 13 e:=s Tr.csí I'-P-pj C'-"

l|E'Aajdj'+9 ACÓ

T i ' s a ' s AOÍ

'Tp ACÓsp adas: c:[3=5JÍ 4SÍ '4Pí -ítpsaá

fiisf, hay I, 3989

£¡DV

KCÍIQ bljbh

-criC cl.bf1

cov ídi^njjbsEOV 2! ,d£í Í5Í-:-&pT!23

xchs D i . D f ;¡tcv íoii í?3,bxinc nhnea ;veo =1 terain» la ventanainc d!add di,2!cep nl inea.S juego a ultisa linea?JE rdr03ccü t i l .O jultiss ruptura?JE rdr03jiEp rdrOi

rdr03: EOV b x , o f f s e t vrup jeuestro la VEr¡t3fi3EOV 3X,tí5

EOV á i j ü f t s s t oiítriipvnt 'e'rstn

rdrü feusstrc vEntane de bkptsaov rupsctjOiispín 23.reverélispln 2í,ipriíít í,

rdrslla:calí rdrO jeuestra ventana QE bbptErdrfiih getchér ¡recibo orden dsl teclado

jns rdrs!2jsp rdríií

jn= rcrellrdr(6!3: cap gcasciij73 ;PBUP?

csp gcdScii.Bi jPBDH?jns rdrfill :no valecep rupact,2í7 jFSDKja rcretíadci rupactfSf f iDV 5 Í j !6

aov dj rupactsul eladd ax,oHset TabíaBri:ffiov si,axcap byte ptr EsiljOjne rdrElia

Pso= 2 -

rucact .EJQQ

c*"" * ¿2 ¡ cf'í'j*SUS

JEC

rcrr.:: calíC£lí

CHll

jffiC

riioact.Brorül ía

}restauro panto i lasre

rtíi:

rdi-i:

rdi3:

rüií:

rdee¡

liSDÍr:

lieplnprintflOV

getünecovecojneT O S

Cff iD

ED'v

DOV

ÍOV

fflOV

ROV

iaov

aovEOV

soyjncluplnprifiíjfipcaílHaplnprintQEtcharjsp

calisoyl ieplnluplnaovaovxchgQUEÍÍ

hexasc

I,24,in5bufodre=at,í!

rtí2ráiíaccoc.lrdii

¡rscibo neaotecnico

| ESC

| ESTER, dato val ico

bytsworé ptr SíEríddr¡Dff55t rdi3 ¡dirección ds retornoKcrd ptr XfgrAddrr2,cstxlnsix,§d05.3S

rdi423, reverá

róiípoehiiq

salida

check2

nesotecnco incorrecto

| todo bien

24, normalEXjP.egCsword ptral,ah

¡ensaffibla una instrucción

¡pongo banderajiifipio lineas 23 y 2í

jensaabU En cierto punto>j3X

jHaao oue CS usuario sea ssq, predeijpara lo que sinulo condiciones

ni

er.

mi_t

ni

iiiru

••+

- ni

U

*•!-

U

l

—•

-d

o

in

u

--i

-O

a

u

ni

ui

ni

ui

-—

o

-1

o

a ci

m

-o

-a

tilui

a

fuu

ui

ai

u"C

I U

"O

«•-•

131

ai

u i-u

-a

o.

ex

ut

o

— i_

i_

ui

<r>

<=>

-4-1

•.-<C

U

"O

l>

í ni

X3

L-l

-O

"O

"C

í I —

.

ni

a iii

o

ni

o

uj

ai

x

LJu

u

u)

i_i

m

u

tu

tu

—c

uin

u

-O

u

"o

"o

u

"o

"a

,ie

ai

U

U

Cl

u

e

e

tso

ta

tu o

o

a is

ta

cu

o

oo

ei

mts

ís

e;

ocu

o

o

.ti

o

aaa,

ai

o.

cu

ui

F?:e

BOV a ? , H D r c ctr d n = í 2 ? 6aov cf.fccü.ó; '

o r in t í,23,!23sn5,rEver5 ¡incicaiüov gírese!,!cal! ffiespccal i estel iEsln 24,norc.£lcali rceEíj ¡actual izoce t l ine l , 2 4 , i f í s b i j f f ¡reciEio n=sov cdresEi.OCE; accod.í ;ES:?je rdesíCDD c:codI ¡Vals?

cov b l , i n = b i ! f f í l 3 ;BX = í da carscter5=:ÍD B l . Ojs rdseísor bhjb í if iOV 5Í .QÍÍ55L ÍnSBl lTf í -2

SDV byi= ptr tsi^bx],0OZV b K j = £

aov =5.KQrd ptr dhsxHóSOY di .word ptr dh=>:2+¿cal í £5=ea j=n=aiiblojnc reas*aov ps.bs ¡neaotscnico incorreEtoliipln 25(rever=prini l,2¿5srren5,revBr5getcñarliapln 23,rev5rsjsp rdssSiadd Norti ptr dhBx2^&,cx jpreparo prox.üov ssjbxcal! scüdcsll pósbugaov gdreset,!jsp rde=isov banen5,0 jouito banderac f i l l pdebug jac tual izo panta l lajap 5fi!iu3

dseOi posdir 12,23BDV d i jpdd i rBOV as,ííDrd ptr dhesH¿ jpone en UHES 23 U direccióncal i rdeeQQadd d i j i dCDV sx,«ord ptrcali rd5=00retn

: xctig a l ,ahDUSh 2X

hexasc

•ñl.A:" f isr iá ' . , '".£>' i, Í T D ?

DDC

CCv

BSV S i . é rfiexasc

rüEb: ¡ensasbla y busüá =n E! segiaentc 22 códicehispir. O.revsrsJ i f t p l n !,reversprint 10.0,en£hl,rpver=print 10,l,ensH2,reversl icpln 23jreverEÜBipln 24,noraalprint í ,23,en5ÍJü5c,rsv2rs ¡indicacionescov gdrcáet. i

rd=bE; l inpln 24.noraalrdscal: getlins !,24,insí3iiTrf ;TBCÍDD n?sD

BDV ccreset.O

jne rcsDS-JÜD

rdüba2! capjnssovcapjnejcp

rdebaS; xorffiOV

sovBOV

fiDV

aovfflOV

caliBDV

jnc

ra°[)ToccQdjl ¡Vale?rd=baibl,in=burf[13 ;EX = i ds c=racter95bl',0rdsbaSrrisbr ~"bhjbhsi, o f fse t insbuíB2byte ptr Csirbxl jO ¡iensino buffsr con 0DS,E=

ssjdses,axd i jo f fse t ínstns.2558IÍÍ

25, bu

rdebxliepln 23,reversprint 1,23,erreos,rsvErsgstchsrjsp rdabf

rdebx: push Rcalpnoy "bx,cx :busco en =1 código

rdsbst: aov ssjRegCs jlnicio ds busquedsaov dijRsglp ;en CS:!P del usuario.

ÍIDV cs,OfíHhcali s=archccp es,O jCX=0 si no encontró

jr:e rües!psp Rec io ;nc encanto:&cv es,v:oec=e-ci:c::r 2Z.reverstrir.t í , 23 ,N3EnEB, r sv5r5etchar

iisDb 23,r=vsr5 ;si encarare,EOV offcod.dipuEh bxpush dicali ecodpop cipop bxorint í,23j5ÍGD?,r=ver5 ¡busco prcsiaa?

rdabih c?tch2r

cep a i . í b hjns rdéb2J2D rdsb3

rdpij2: cifp s í .Odnjne rcESÍ iinc di jEUTEíl, 5Ígo buscandoEOVjsp

rdebS: pop RaglprtíEbí: IEDV si, o f f se t lOini j preparo y suestro l inss O

cali fi l inOSDV bs,üT-fs£t vlinlSOY ax,descv sí.oííset líinivnt 'a'cali pdsbug ; actualiza pantallajip Ealida

rdal: , j lleno un arEa de iseaorialiapln 23,rsver5liapln 24, norialüov bXjoffíeí vil ¡ventana para pedir datoseov sXjdirlxcng =ij2hoov 'bufaH2,axEQV ax,dirH2üchg al,ahaov buíel,axsov as , dsaov si, offset bufe!vnt 'h'print !j23,byte=?,rever5aov gíirBsstjí jrecíbo i de bytss

rdell: cali rdslO ;rs5a!to caspo de íbytes

-

rtl

L.

I,,

.-.

u

«3

(i~'

ci

— .

LU

-t-

—•

l-,

61

-

>

CJI

--

ai

ai

.e

C3«

i—

cu

i-

ai

ai -a

u

—É

o.

ai

o.

a.

rS

c;

-.-<

O

ci

o

n)

O-

Ul

CJi

••-•

Uia

13

es

"" " - J *". -

'daiCv!

rzárt ¡

rriEh' '

rdsbí2:

rtísbij;rdib2:

rdab2f;

rdfib22:

rdsb23:

rdflb4i

rdüb4i:

rdeM2:

C!?»

6DV

r:v: *v v

•r «nJ B. k

lic.Dlniiffloinpnntoeich5r2UV

esojnejipCfiip

:Ljecep

copj^E

jfiD

fiDV

prinígstiineS3Y

cepjneJBD

c&pjnsaovc&pjnejftpSDV

jooliaplnpriniDDV

fiOV

iOV

(Slll

incBOY

aovcaligetdaU

R^csv, fíav í, !9S9 p¿

atrprev.ó)dirprev.cial.^vrex , Irüci'}2 ¡este incluye el retr¡

;-u5C£ ur, strinc 5r 5555 ento a:iuci23,rever524,r)oriacl1,23, buscase?, revsrs

j55ssrc r=5DU55t3 H, A ' O ESC

al, Ibh

rdab!2rd»bí2 ;ESCa i f 'ñ -

al , 'a 'rcsbS31 , -H '

ai • li

rdabl jrsspuesta incorrectardab4gQr==Etjl jSEcuBncié sn ftSCII

Íi23^u=c2?.reversÍ,24,in5buíf ;lso sscu^ciagdrEBst.O

gccod,4

rd&b22rdabf2 ¡ESCgccodjlrdnb2!h!,insbuífrl jvale, pero si ssta vacio salgobljOrdab23rdsbí2bhjO ¡preparo BX para llaaar a rutina dE fausoueda

rdab¿23jTEver5 ¡Secuencia »n HEX

l i23Jbu5ca?Jrsvsrs

fax,0cl,blal,3el=1cl,algdresstjírdsbO jresalto EÍÜO actualcl^dbyts.'h1

ÍÍGr¡Cs)p'| "¿V

BCVc;-.-

rflsoCÍ

;q'jií

rdabS:

rüab51¡rcübó:

rdsfo?:

rdeb72:

rosbf:rdabi2:rdsbO:

cnpjsftCV

1DV

inc

jnecepjne

aoveovsov(DOY

aovS3V

sovcalisoyEOV

aovCfip

jnsüaplnprintinc

calicalilittplnprintgetcharaov

cepjecapjneincJBpgstcharjapcjosdir

rdofc42

dbyt?-i-!,0rdcbS

blbi,24rdab41bl,0rdcbSl

bhtOsi,offset ir=5JdirU2dijdirl

tíirH2,5Sdirl .éi ,

¡Ú datos?¡si, pasar a b'jsc;

¡pr=paro ilssada

;CX=0 si no encontró

¡no encontró

ex,Ordfib?23jr5vers

dirirdsbfprsopc ¡Encontró, cuestro en ventana9S26

23,reversÍj23,5igoi)jrevsrs ¡busco prosisa?

¡ESC, salgo

¡enter, busco otra vez

¡resalto caspo para bytE actual

rdfibf2al,0dh

dirlrdsb¿

salidael ,24

r sv i 13^:; 1(0 Y « l 1 I *.

rcveov

a i r p r e v . a l¿i 'prev.d:a l , 7C ih

reir,rose: ¡copie desde la ventana oriricical = otra área

licpla 23,revers ¡lispio lineas 23 y 24iispir 24,ñoras!

xcnceovaov ax,dirH2üchc 5l,2raov btifis^asCDV E" Rení)=

eov «ord ptr isene 3Í,3hpush axBOV bu fcHí j é :hesascpop axxchg bi,bhfiOV

RDV

ffiov a 11=fihesascxchg b l , b hEOV

eiov

jHsgo OUB 05 usuario sea SBG. pred;jpara lo que sieulo condicienes

ptr dnexU5,bxbuícorr ,bx

aov

«ord ptr dnesl+4,bs

byte ptr dher . l r l ,4rdacl: EOV bx,oH=et vcopia ; ven tan a pars recibir dirección

jsov 3S,tísEOV s i .offse t buíf i ívnt 'h 'print i,23,123cc,revsrsCDV cdresei,!cap byt° ptr buícorr,'Jje rdecíO

BDV buícorr,3;HOY buícorr^2,QQV as,Oaov biiteH4,a!jsp rdisc2

rdsdQ: print 15,Í8rdicü: cal! rdacíl ¡resalto csiapo á° segsanto

gettíáta 15,18,dhsxl , 'h ' ¡recibo =£0ffisnto

ai.aírs'-ev ¡cuno Desaliadodi.oirprevrtíKOl

"2v gerese t jO:nr gc:cd,C! ;d5tc vaii t ío?je rdisc2es" cccsd,? ¡ESC para abortarjne rdü;cl2jsp rdf f i t f

r o P C i k i L£Ü G C C 3 E , D ¡ i f i ? pa^s pasarjne rdfsci !

r2!i:2¡ ccv ccresst,!TS"iü21: ca l i rdecOC1 ¡resalte caspo de O T T & S Í

g=tdats 2 0 , ! B , d n e x 2 , 1 h ' ¡recibo orfseícav a Í , a t r D r E v ;Quito resaltadoB D V d i . d i r p r e v

EOV gdrEsst.Ocsp QEcod .O ¡date valido?

cep gccod,7 ;ESC para abortarjne rdEi:22J5p rdffiC'f

ráü-22i ccp occodj5 ¡TAP OSTE B5.=s.rjr¡2 rdnc2ijf f ip rdscl

rdac3¡ print l f23 f byt5a? , rsvEr5 ¡recibo el E de sytesscv bp,vJord ptr dnssHó j l ibero dhsxíaov gdrssst,!cal! rdfflcSO ¡resalto csspo de rbytes

rde¡c3!: getdsta 20,Í9;dhex!,'h'aov gtirsáétjOCfiü gccod,/js rdfficr ¡ESCctp occod jOjne rdac3! ;no vale

rdec4i aov ss,bp ;aquí tengo todo listo, copiosov di,Kord ptr dhes2^6 jES;DÍ—>ds5tinoftDv cx^ord pir dhsxl*6 jíbytesaov 5Í,dir!

cali copy

EOV d5,axfeOV =5jVidBD5SQ

l i f f ip ln 23jre\'Ersprint 1,25,listo,reversc¿H pri&buggetcftsrjsp r d f t c í t

rdscf: cali pdebugrdíscrh jsp 5al id=

fíoricay, hay í, Í T S T

caico d& se

c;

aírprev.aitíirprsvjdiai,70h

rdc,:0!

dirpreVjdisl,70h

rdsc30:

al.ss¡[di33írprsv,aldirprsv,dial70h

rotun:

rtJíunl

rdíI2:

rtíüí:

fiCV

S3V

15 2 V

IftOV

£OY

iíicoovacvcovSOY

posdir 20,19ÍOV Qljpü1

inc dieovgDV

aovÍEDV

JSD rdslOl

SDVctpjnejspcgpjejaipcapjnecalijf ipcap)R5

japcapjnecalíjspesojneUErprooetcharBOVC£p

jneusrcro

oiroaus,0rdíun!

rdíi

rdí!2rd_rcí-fffiopaurdíi3rdH

rdfíírdí3RrdrfsopaurdííS

= 1,27rdu!

;Esto incluye si F.ETK'05 OtÍ

:Estc incluye el RcTK;re=aito cs^po de Ibytes

¡Esto incluye el RETN

j=i se dígito EKTEñ, stístrar funciones

jASCII norsal si AL=0

;F3?

jedi tor en pantal la

jF2?

•F4?

jHue=iro pan ta l la os usuario¡espero ESC para regresar

j ESC?

jvuelvo a pantalla de PRO

O

rrr

ti

*+-

-i-

a.

O

CJ

-a

ri

til

Ul

r—•

3K

10

a

a

u

m

ni

i—>

O

"O

Cl

M-

••-<

"

-

*4-

•O

JE

X

-^<

1O

"X3

-o

o

ra

ui

rd

-o

m

ta

(a

ei

gj

es

tsla

o

o

=i

o>•

-o

>

s*.

a

a

o

o

a

ñnqapd

031^0X3

aun

sus* üs A o^sansí SURJA ^ssíio'xq AGB¿ j suf

o j =a is; BJCJ afxnsdos din

jjpJ díf

5nqspd

¿DSEA 135l¿OfXq AQB

AQSA03

¡si sjaAaj'cg ü]daií

ases

ACB

coACB

Q B| L'5¡

ojisan»: -45^5 5ij2x

3S3JOC A -I '

aapaux.U

rd_: ¡edición en panielia.Order en cue se atenderá a ias ventanas: 1 Registros, 2 Banderas7 COCIDO, 4 dirección pernal, 5 cire:nc-es rj=;.üri£2, 6 es&3ris:irx. 7 aeaorial ascii, £ eeoDri52 nen, $ esEcriaü! escí:.SE usa para ¡eer estos dos rutinas: SETCÍWR y EEIDATA, que 3! salirO3.ii cadioos sobre la íorea en que se produjo la sallds. £n esta,parte de¡ proorsee el usuario teñera apcionss generales coso:

TfiB pasa E proxina ventana.SHIFT TAS .pasa a ventana anterior.ESC sale del editor a! isenu,

Existen opciones aplicables de foroe diferente en cad= rutina,rdj: ;Ca!3t;i?s er ventana que muestra registros.

¡Usar Fleches aara coverse o para no alterar ur¡ registra.eov dJ,0 :reg. actual = 9PBOVraovCEU

rfla:

r d !

23 v 24

si.oííset l&r=Q ¡LltíEAOalir.O

liEpu" ijrst'srs !liri=55iicpin 23,reversliapln 24,ncr¡jalprint 15,1.llrég,reverápnni 3,23,123d_,r9vsr=print 3,24,124d_,r;Drfialsov bx,c?Tset vr ¡ventana paraBOV ax.dssov 5i¡0íí=et uiinevnt 'a'cali rdJO jresalts reo. actualgetdata ífh,6,dhexlj 'h'aov al,atrprev

rdJ2:

rdJ2I:

rd 122 ¡rdJ3:

fiQV

ÍDY

cal-1c:pjbcupjae

capjneinccapjneaovjitpcapjnedec

dijdirpígdresetrdJ02occod,5rdj 2gcco¡í,8

rdj!

QCCOd,3

rdj 3didi, 13rd 122di.,0rdj ígccod,4

rd 14dí

¡siguiente registro

jreüistro anterior

jne rdJS!ccv fll.12

rc_13l: ;n: rd_i!rs_!i¡ CE& occüd,

jr.s rc_í5cap d!,4je rd 14:

;nb rd_¡42add di,4

rtíJ42¡ jap rd_l!r¿_15: ce? flecad," ¡abejo?

jne rri_!6Cffip di,O

jne rdJSÍir.c el

rd_:5í: atíc di,3cao di.12;-- r¿ <~H.luí rC__;j¿

Slib di ,3

rdJ52: jcp rd_Hr¿_iá: oov cdrsset,!

KDV büjKord pir dhsxl+ó ¡dsío valido,BOV él,diactuar

drí OTÍ52t rd_bpjC-ÍT5Bt rtíj35,OTÍ52t rtí_SÍ,off5SÍ rtí_2íl

ds críset rfl_ss,oí*55t rdjüjoHset rd_bxdw oHset rd_cs,D:í5Bt rd_ipfoíT5et rd_cxdh oíí55t rd_E5,of75=t rd_=p,offáEt rd_dx

rtí_bp: SDV rsgbpjbxjsp ré_ÍAl

rd_ds; KDV rBcdSjbxjap rd_í¿l

rd_si: nov rsgsijbxjsp rdJ.M

rd_2Xi sov regsSjbxjaip rdjü

rd_eE¡ BOY reges,bxjap rtí_ló!

rd_di¡ iaov regdi,b);iap rdjóí

rd_bx; isov regbXjbxjfip rd_ÍM

rd__cs! cov fepcejbsjap rd_l¿3

rd_ip: aov rsoipjb)!jap f"d_íM

rd_cx: EQV r5Qcs,bxjap rd_íél

rd_5£¡ ftov rsg55,bs

r:_£L¡

rtí_dí¡:nfui;

rtí_H;

rd_!íl;

rdjf2:

rd_ÍO:

rdJOÍ:

rdJ02:

J - i*

E:-V* * r~

dcvSUSh

C^l

nrtr

jfip

aovffiüV

¡SOY

covcaliffiDV

vntCííi

CBB

jnejo¡p

CEPJI15

JBP

jfflD

ÍDV

ffiDV

(SQV

CE3

jbinc=ubC5p

•jbincsufaCffiD

jfc"

incsubfflDV

2U 1

atídposdiroovincaovaovEOV

ffiDV

5ÍQ=b

incstosb

i j_ic;

r=5E;D,D>;rd_lcl.r£CCS,Cs

d^pdebücdxrc_aax,reoc5seocodjsí;3s,reQipct fcoc.ar :ísccdbX.DTt'ES". Vp^lj

' s :

EPSW

occüd.5 ¡TAS?rtíjílrd_2occod.ó íSHIFT TAB?

rdJÍ2rfijrri i .rcr.

bl,dl icuEstro registro en reversocl,33h :CL,CH tendrá la posición d=ien, 3 ;r=E3Ístro oue debs resaltersedi, 4rdJOÍ jpnsera íiUCfl

blj3ril 7U ! j /

rd ÍOÍ jssounda íil=chbl,3di, 10rdj.01 _ jtsrcera filach jcuaría filabl,3al ,9bld.al ¡CLjCH listos.cl,ch¿ijpddir .dis!j70h ¡video revarso.ah;e5;[di] ¡atributo eus había sntssstrprev,ahdirprev,di

ju=o ssto coso otra subrutinEdi

ispcay, f.ay i, 19e? Paa= 24s

IfiC

st:sbincSlOStrein

en bentíerás d=I iü— > y <— paré ir s otra O2fid=r5,

d!,0 ¡banderg sctíiai OF

rd 2a:

rd 2!,

ca!¡liaplnrint

Vil I

cal!ggtdai:EOVÍSQVffiDV

caliCED

jne

calipasacaliDQD

=i,DK5SÍ lOban ¡linsa O

Í6¡1, l i ban , rsversb S j O f f = E t ve jV3íitansa x , o =sijOfÍ5=t uline

csabios

rd_20 ¡resalta sarcoera scius!2 3 h f í 2 , d b i f i , ' f a 'a l jS t rprev

rdJOlGCCDQjO

rdjílgdrssst.írd_2iíldxEDBtf

dx

jquito rcsaltau

¡dato valido.j e l t e ra variable Flag;

jac tua l i í a pan ta l l a

rd j í i i

rá 22:

rd_22i:rd 23;

rd_23i •rd 24:

jbCEp

jneinc

jnsffiDV

capjneQ5C

jne

jepcepjbjfipffiOY

gccod.3rd_21gccoa¡3rci_23d!d l ,8ro_22Ío 3.0

gccod,4

di"d l j O r í hrd_23í

rdJ2igccod,8rtí_24lrd 21

E bandera

bandera anterior

FÍCE 2

re 25;

rd_26i

ríJO:

rdJOl!

rd_2IQ¡

rd_210í

rd_2I2:

*-V

P:V"5Ü

Mil

Ce i ir * r-

J P E

JÍTD

capjnej f f i pJ2P

se ysdá¿adeovpíisdir

BOV

incE3V

EOV

BSV

S'OV

5 tDSÍ)

addsto=bretnsoy500

•ovcapjéinccapjbSQV

SÜQ

a rifíaLJU

.•so ycíercrcspjneücrandreincrretn

a t , T5G 1 p

C T T C D O i 5X

ISCD:EÍEB!;

ap5Artrrnf^ "J L L Lí u i ij

re 25rdj ;TÍ!Bcccod,¿rd_2érd_! iSHIFT TABrd_í ;ESC

ci}33 jrssalio Dsndsrs sciuale l , dic l f d !ch,5cl.chui t cudircial ,70h :vid=o reverso5h.5=¡£t í i} {atributo previosírprsv.atídirprsvjtii

joane atr ibuto (f tLJ en banderadi ,159

-

d h j d l jen CL obtengo la posiciónohj í jdel bit a alterarsec l .dh jEspszsrido por el íin.d i , 3rd_2íGlc!dl,5rd_2!01 'd ,dic l , 3rl rhU¿ j l r f i l

sSjSOOOn jun uno y quince ceros;CF=0

3X,cl ;roto CL vecesdb i r iT i j 'O ' j a l tero Flapsrd_2í23X,Oí fHh ;5aco si coopl. a 1ílsgs-.sx

ílaG=,ax

rdJ3: ¡Recibir ur¡a dirección y dsssrisaiablar desde sí!a.

n

-o

E9 C

T

rs

o.

o

"—•

rim

t?

ra. n

i >~

ioí

oU

i o.

-o

CL.

sa

i—.

:«a

u o

-c

-a

-i

a.

a.

-—-i i -

m 'o

í —

ni

«—ID r-

l-

—-

d.

3

s>

ri

am

-a

~u

-i

c.-u

n

cu

•--

1 n

|

-01

O

01

•—

Jv.

O-

*-*

• • J3-

10

._.

n

> —ID

-V

I

o.

n ra.

1 n

¡oí

ra.

.—V

- O'

CU

'SU n

•— •

-tT

3

~H3

"t

na

" 1

O

Cl.

11

1

*~ tjl

y n

-u

n

ra

"— .

n3

w

es

a

a

=>

M3

-—

ui_

-<

<

m -o

í m

. M

la

- a.

ra.

noí

*3

* m

• or

o

«—

ui

•—•

ca.

O

Ul

t— -

i~i'

!íi

**• f—

n

ai

i»1U

o

o

0,

Cl,

h-

01 iii

o.

•O-

IM

1—•—

ID

-1

rH-

Til

•—

"

•O ti -e

1 „—•

ni

•-i-

~1 •xa ™** m

• o

n

<

F»rn

ni

13

tíO

- H

-(n I u

ti

CX lli

•"

••

•-"

C,J

O

M*-

<^^

-f-

.O

í -1

.3"

Cl

--

mC

3-

r-i-

ia.

CL

oJ oí

PJ

turo

«—

E*

'CJ

•— .

fl-

S<

K

T

CU

d

o

•— oí

in

-<-

•.•

tu-í*

*—

• IO

in

>— •

in

ri

i-l- Oo.

n.

'0!

OJ

-13

i—,

o

(—-i

u.

- s

i—

=j

a

-•- il>

^i

l'd'l

h-*

Itl

t— *

|Xí

^? ^

»—

'— •

1 11

n

-iO

in

CL

n

E3

U'

13

C

J

>-•

!•

•'•

CX

f-.

•-

'1=i

o

m-

>•

IOLII

|->H3

»

r<-

-—

l.T

I,Í

(0

Jt

ta

-o

-iO

1.1

•1-

M[O

I--

-,1

iíl

tjl

(J

O

di

-Ka'

•«

O

•'

« ii

Ul

cu

in

a.

3C2 Cí^

:r; cjr,9 ¡A i= pagina í se regresa desee

ir:: Cr. ;jio deja cus 0H 05=5 oe ÍC.rd_34]: r:v al,2

"• u 1 ¿ *C-C'L-' =' 3^* c B^ r £ D r C "

SDC: si,ax ;£! stunta e i: "h-SEisa P2£. er: TABCGIe¡ov aK.proxinsEOV ísiiíi2]Ias

rd_35¡ cap gccod.Bjris rd_3¿CEP drijO ;PGÜP. No bajo ds la pagina 0.jriE rd_35íjip rd__3a

rd_35í; ose dh joonoa pagina ds arribial

rd__3¿:

rd_37:

rd_38¡

rdJO:

mu Y

BU!SDV

acc

aovBíiS.h

calipopjfflS

fiOV

ÍOY

SOY

subvntcaliSOY

ECV

SCV

aovcaliCEO

jrte

CÉp

JRE

jfip

jap

sovaddcepjbfiiC'V

a:j¿dnsi.oftset t2Dcodsi . 3 y.

oHco^ssdxacod

dxrd_3aax.dE - jventana QpcinBis2DXjOf fse i Yops2EÍjDÍfS5t BEttQ"2

si, 8'a 'estk jYerjtana Stackax, reces5egcod,a¡:

3x,regipO Í T C O d j a K -

acod jYEntana CódigoCCCüdj5

rtí_37rrij jTAB

rd_3Srd_2 :SH!FT TABrd_í j ESC

al.dn jresalto área ds ssgasrito o de oíf=slal,'0' ipriü=ro muestro 1 os paoinadh,!0rd_302a í j ' X ' ¡pagina 10 o superior

rd 302¡ sev

tu

10

n

<

»r«

- p

=1

Ül

ni

sn

M1-1

- o

a

U

o

-T

n

a-

a,

>-•

•*—

-~

jri i

"i - -

=r |

o

a.

orti

n

o

ra—

i &

at

~i

11*

-Td

, 1U

O

tp

i•a

cu n

n

t>

J n

cu

ru

d.

o.

•a

-13

rn

o.

tti

-a

ni

ivi

e:

e

ni

tu

e;

m

ni

••*-

c;

e

o.

n

ai

ci

1.1

a -i- 01

ti

e;

o

EJI

o

m

o.

tu.

ni

o

ai

O-

.4.'

—4 O

¡rt

-~

-, i

ra•m

r—

.M

-o

i_

m

-u

v.

ru

o

o

a.

o

o

o

a

•u

tu

ai

mL

- l_

Cl_

Q.

L_

k_

.—

OJ

"O

.—

a.

a.

•-«

L_

t_

Ot-

j •-

< -o

na

-CJ

•—•

.u o-

QJ

—ni

"a

o

u"i

—.

ilt

TJ

'-

'-

r-i

ci -•

--« iii

u

u~i

-CT

Ll

TL

Í1

1

L.

CI- I

a

—•

u in u

U

TJ

U! j i t.

ra>

T.3

i —

-xa

r-.

m m

-ir)

u

-cj

.c;

J= -o

ai

u.

Ti

~\y

l—

™ m

-

u~j

- UT

u

1:1

-e

: j=

: -o

JT

: -r

aai

v.

-o

T=I

v.

ns

k,

u

u-a

-i-

*i-

in

o-

—'

(o

10

- in

U

"O

í—

• »-•

T

3tfl

L,

T3

-O

1-

01

W

-a

-a

ru

ui

n

a

<a

od.

u

--•<

LJ

d.

aiex

o.

aia

na

o.

a.

iii

u

en,

ni

Paos :?£

rrt=fV-«

rs5;¿:

rd5í7;

rd5!2:

rc*519ird52s:

rd52i:

rtí52ai:

50 v

T*

:sc.' =CÍE

JKD

eovEOY

«11

covEQV

caí:cal;calicalicalicspjneJE3

CEp

jnsjipjapaavaovcalifiDV

vntecvvntiOV

ttOV

Cíp

jneKOV

japcalicalioetcharaovBDV

caliaovUOV

calicepjecspjnecal!

til/;rdSlíg"a=rn,91 ;P3Ü!- o fSuf?, casa ¿ 'griEi!1 2**55*rd52agH5Cii,73

rdSíl jno es tscla validaal,3trprsv ;quitc rssaltaoos de linsa y ooriondi,airpr5vrd51tiel,atrprevloi.cirprevlrdSIOÜl

R-odEQ5CI

eexp:esti:gccc3d}2 ;TAB?rdslB,-dJQLCOtÍ,3 ;SHIFT TAB^rd519rdjrtí_í :ESCdh,0 ¡opción actúa!si, offset 10cp22 jiinea 0alinObxfofí5eí vc2 ¡recepción de offset' = ' "~bx.oífsst vc2o'abl,dl jsi la opción de segissnta íue XXXJÍ solobhiO JSÉ peralta Is opción lll'f, para el offsetopc=Egtfas3,12ro52ídhjiá-rd52alrdslO ¡resalta iinsa actualrd5206 iresalta opción actual de segnenlo

ahatrprev ¡quito resaltados de Unes y opcióndijdirprevrd510!-eljatrprev!dijdirprevlrd 52001gccodjOrd521Gccodjl jENTER?rd522rd530 ¡altera variables, recibe desoí., actual!

r--

TJ

r- ti r

r.i

-•

o u

T:J

-o

t-i

r>-

evi

i_i

l-J

«

CM O

C

M

1/1

1.1

- in

in

«o-T

-3 -c

: ,c

r -a

j=

-o

LJ

i- -o

-a

u

-ra

i-

cu

•a

í-

"a-a

—«

—*

e-i

- n

i"C

J

o

CM

•"•

í"-¡

in »

i

en

k_ -a

-a

U

'O

LJ -

O

—m

i>

i ni

CM

CM j<

ro

Ul

ni

in

li-J

-|J

LJ

u

LI

-o -o

M

IT)

tu -a

o

L.

LJ

ci

at•z

: m

t;

c

••-, -

o

u

«-i

LJ

ca.

ui

C3

.C1

.UI

U

-—.-

—»

u

u19

n

i o.

o

a

ra ci

u>

ni

o

a

a.

oo

ri

a

-<O

J O

J 13

o.

ci_

r:a.

ia.

•—ra

tu

•"

«. in

*j

- i?

et

.ei.

nr

iw

o"

nri

- iu

tu

m

. o.

en

t»r~

m -i

O

i3

ei

o -í." II1

sí cu-

ín

o,

Ul

l>l

¿Jl

EI

>».

ffii

nO

M

O

0"

-e

-ci

•-=

— -

cr -i

tu

-i

3t

C\

>— ' 0,

-

Uf "

C

.Ho

o>

i o-

oj

-h O

O

-

m 'O r-f-

< n tvi

i3-

>.« =a Ci

ID ln •o p.'

-1 ni

i*i'

10 i Cl

-< l/l 111 iCl

Cl

n o a

cu o-

-TV

,_,.

,.,

|_n ro

M

in i-f-

-1

0.

0. ID

-

C-J

o-

_.

•C3 Rl

-1 rp Ln =3 ID n ID U1

!-*• r+'

1" =3 Cl-

ip ln •o h~m

H

i-..

EI

•-•

nff*

ID

O

J K

Í•o

-;

'a

-1

111

"1

Jo,

K~ o,

nt,n

-

oo-j

ro

o>i

oes

o-

co.

-.-,

NJ

••- ^

i

>->« Wl

DI

,_.

ra-

ru 111 ™i en m ~(

e? ~~l

u>*

3> r*"' ti K3

1_.

Cf

-1 o.

C/J o I-J

-4.H Ul

C!

I.H*

Cl

[U ri reí

•o it'

O —I

•x*

txf

U7 :c -n — i

-~4

ce*

-<

o,

Ul

t« <^ C--

I

n B 'O • O n n o £1.

-^ t_n .. ü a m ri m •a rl-

o o •a n >-•• o rj rn in M.

ID •G n- »-••

o.

0.' ni

•u-

El

CP

-o

•<

"1

til

CIl_

*—

'C

,'l •

-"e*

1-!

ü-"

O -+••

*t.~ ia

.O

.'rt

1O [i> >^

—*-

*»C

l.O to i/i

t= —i

& r-l'

=)

1X1

n ni

H— »— *

n o..

CJl

c--j

o-

d*

^ • 1/1 1-*'

u to *— *

rv ro —1

P.I

< W ~1 *--

(U a-

rn 1/1 • O.I n rf

c:

w

•_.,

n=1

T3

ro

"o

-T in

a.

'~\i n

0«J

O*

> rn

-0*

1 '• c

^

-..' Cl,

r-l- a •í

HJ

*— •

!-•

a.

o •o

o.

i_n

o rr1i» i

o

E*

-<

e>

™O

i[i

o

n «

ci

<

i~t-

-e

r-i-

-;

<en

.u- rl-

PJ

vo

t— >

a -

ui

nia,

tu

ea-

m

M-

xi

rjv

~i

- —

m

ni

o

ra.

Ul

G-

Ul

-(-•

lnrn

iij

ni

-i-.

r*

i i~

r U

l-

...

rp•

O

. >-

1'

rr m

c;a<

i—

-*~

i_

«-=1 1P

rs- -

*. H

-T fD 11

I--

cr

Cl

>•=

X >-¡

d.

O-

"

¡B

-Cl

P— •

a

-i

•—•

<

i— »

n

-oft-

1—

J

15

W-

O^

—•

3<

»•

-**

•—•*

»*

* hT

a >—

iu

-i, .,

<*+

• i—

• 111

m

>— • *i

O

MI

!-)• 'Ots

S•<

o

n —

10 -1

íj- i n

"i

IU -^

•»«

111

tO •— ni

n« •j

t-"

[3-

n.'

"tn u -i ra - r. i

IU rn rn -H 1=1

it"

3>

i— .

E?

T3 -1 Cl.

C.M

O1

<i

tfln

t- • *—

**- U

l [11 M1'

tn.

O'

XI o "i o -i o.

£J ai tn m — *4

ITi

O;

?*

i.

11IP

r» '13

-i

ii.

Ci. i-r

O^

^-h

o

r<-

»-*

•—

-.*.

rn a

S3

"O n3>

H

-.i —

o =>

Ul

nj x

i— • x;

III X X

«p

-o

o 1 1 a.

PJ i-i- a Ul -í cu »" EnJ

n

11&•

ru

h_^'

V**

w—

• *-'

-1

-1ex o.

i:.n IL

It~

*j »-—

<^<

<T'

*^

.^* -i m ni ai

>—

t-i- a M*-

*,_

*.

_,

Ul

ru •-e oT

ln I-*

Ho r^

Ci-

01 <f\>

*• u rí Ul

rr ÍH-

^

>4>

'

"I

1(1 ri

>-••

[3-

ro i-cX s-

t9-í

*«• IU t—

•rt

-Itl

•1 O"

-1 m 'a i--

m !->•

'1 CJ til

-1 IU rl

£.1

-i

*-.

M-

m

iaO

33

rl-

C

lo

n

o

-s(u

u

O o

n -i

o.

st

0^

i-—

c_

rt --

•—

I-J

J>-

cu

—i -o

o

-izy

- ni

•cr ^L.

13

C.)

tu i—•

1LJ

•-*

u

u•ti

iii

ii~a

tti

ira13

1

ti-

k

.

1-

Lt

.&

-«-I

Ul

m

ai

-o

ni

o

i» ta

LJ

10

- a.

u.

in j^

-

-•d

C

l-

-M

—«

u

•*-•

-o

m

ti <

r>

oca ro

po

u ti

-q

a-a

u

-o

u

-o

ir—

r~-

->

''1

3 e>

do

fi

i>i

ro- i

nl_

IU

a.

cu —

. o

fu

-o

—i

¡o

-o..

., (n

.,

^•—

• —

i -a

r~

* •••

^va

-c

i i-,

ni

13

ai

o

aC

L

O-

111

o ti

ira

ci,

c:

-ti

j:u

3:

x:

o

->•

(O

Ul

-CJ

III

><

ai

ni

-a

ce

o

in

»-•

ni

ni

ni

ni

O.|J

L.

-O

TU

fc

_tt

D

I O

í11

1 'C

l (M

*

U*l

<1

.C

O

C1>

ai

u a

ni

u>

us

-.

ni-4

J

l/l

ai

-4-

-13

C

TI .

O

111

111

Ul

O

-Hm

ai

ai 3

-a

a.

o.

v.ni

»-.-

o

-aO

<r

> •=

• -

11 ta

ai

— -

-

i -o

-c

« t-

-rf

ra

-el

"a

•=>

•—'

-M -o

1(1

- L

. tt

- £*

•{

111

-CI

•ti

u

LJ u

u

;•-

m

m

O.

3-

a.d

ca

n

d

a

tn

aii3

J M

C

X

Q.

CL

fc

S

1_

-—

ca.

c:

«-.

o.

isLJ

u

cr

- e

rd i í l :

rdál í !rtíá!2:

rd¿í2írd613í

rdó!3írdá i4 ;

-

r d M 4 Jrdá!5:

rdilá:

roM7í

ÍDV

C 3 l l

»r

Jü!incCPC.

J bce:MV

JITiD

cap

dscCEQ

jnesov

; jr.aCEC

jnsiniCííDjneEDV

; japCñp

jneinc

~ccpjneecv

: jispcapjnsd=cCffip

jnesov

; jf tpcapjecapjnecal ijepSiOV

sov50V

pushpushpop

gtíresst,! :sir d a l O ¡altero ^ona, a c t u a l i z o o s n i a l l

dh ,S ¡nastí ¡ÍBcer si f i n t is i= vsntsnsrdóñ

dio i . 5rcitsdid h . Treasg:ccd,¡ jsrnba?

di ¡síd l . O H hrd&lüd 3 , í 2rd6!gccod.2 ubajc?rd¿13di ;sidl,!3rdéí2íd l . Ortíalgcccd,3 ;— >?rd614dh jsidh.8rd6!31dh,0rdiigccod j4 ;.<— ?rd6í5dh j sidh,0ífhrdísl41dh,7rd¿!gccod,8 ¡PBUP?rdilíigccod,9 jo ?£DN?rd¿17roblfeO ¡sirdoitíijQfísst dir21 ¡Eslids de esta rutiria, restaurosijoííset dir2ír idirecciones fie ventanasex, 1055

dses

, nev !) !9ñ?

reo ftovshP, P E?

"oí! scod ¡restauro panisibC a l i ÍSit

r;11 n r = m

iTAB?

jep rc_7 ;= ir:^2: en;. cccotíji ;3HIFT TAB7

j f f l p rd_5 ;sirtíé.3¡ JEP ra_í ;ESCrd60; ÍQV c l ,dh ;rss33ic byis actual . Friciero

aov c h j d i icclcuk- po5ÍcioííPOV al,3E'JÍ CÍ

oov e l , a iadtí cfi(Doasdir cl.chsoy di,oddirinc disov antes:EdilEOV =trprev,ah

sov aíj7Uf)rdáOl: stosb ¡caabio el atributo

inc di5ÍC5b

rsínrdóOO; aov nlins5,0 jpara cada linee...rdóOO!; *ov si.offsEt dir21 ¡veo si csincids D¡R2s con Díñ2sR

BQV dijOfrsat áir2irSE5V

soraddsddadd

push ESpüsh dsDQp SE

SDV elj2bh jairinuto que pondré si coincideCfipSH

pop 55

je rdó002SOY aí,3trpreví ¡atributo previo

rdó002¡ sov cl.írh ¡posición E resaltarse c norisalizarse

e —

uL

ll

--«

I-

-

ITJ

d.

(••••

—•

•=>

o-

•=>

o-O

-O

"O

-O

. .

,X

l_

í> O

..i

to ...

,_«

-ci

- -

o -

osr

. —

i -o

-t

y

.-í

•a

"o

í-

L,

ou

u

u

o

;»•

13

ui

ci

in

o

-i-J

c:

.je

o.

-iJ

u

i ra

. na

>

»-

s-

-<ej

DJ

=1

es

.ra

ks

o

a o

=>•-

-.

i_

ra

LJ

•—,•

—!

ei

K

ffi

-Mo

-o

a

-* in

ia

o-

o

d.

•a

>

> o

-i~

ai

m

inl_

i -O

U

l rt

f

ni

«í

TI

ai

LJ .a

m

-u

c>

ni

'--i

K

rP

-*1

^J

L..

ID

r-«

-O

ni

«c

re oí .o

na

ru

"o

Ul

O

ra.—

< LJ

ul

-t-

J e:ai

ai

o

ai

c

u

u¡ti

_i

nr

.ra

es

ca

ti

-CJ

-'

65

(..

ei

-o

-O• i

-•-

()'i-

-ii-

o

»o-n

-

- -o

tj

.»i

M '

aí.

Ul

I.J

W

OJ

¿S

m

LJ

LJ

U

LJ

U

111

M

o

~•

i.j

-ti

u

-cu

tu

•*!-

>-:

U O

Ll

• -i

rsa

i -Q

ra -ai^

- -o

o-

o

a •»H

m

m•o

ui

-a

Kl

tu

ai

a

e iii

- o

m

LJ

u

tu

m

IB

ni

.11

m

ij

uui

••—,

m a.

u

u

ci-

i-t^

) T

ti

l•

> o

-£i

-O

-<i

ra

a

o

aui

a.

>

ci- a.

>a

o

o

ni

a

a—

. o,

ra >

Race 2¿¿

rd?!: cali rd7C irssalío ascii actusl

rd7U¡

rc?!l;

rd?Hxi

r d 7 Í l l írd7!2;

rd7!2hrd7í3;

rd7Í3i¡rd714í

C o l ;CrTChár

ÍF™ »

r.cvStdr t

capj n =COY

JEDV

CSp

;necal 3incüspjnsCSJV

inccspJÉd=cjBOV

jSp

C6pjejapcaejnsdacc&pjn=íaovjapcepjnsíncCfiQ

jr¡=eovjfjpCED

jneinccapjnsffiOV

japCSp

jnedecCEPjne

rd --.',• j i - B s a i t c si v, r e l a t ivas en pagins 0recibo eritradé de teclabo

o ¿ , 3 ; r p ' É s v cuite resakadctíi,cirpr?v

Qccod . l ¡EN7ER?rc7!sgccod jO ¡si, sisulo ECCOD=CgcESciijl3 :EntBr="figccoo,0 ¡dato valido?rd7Hr¿7!0 ¡si, a l t , sesoria, act. panta l la , -->dn ¡peso al prosiiso bvisdr:,S ¡fíasta l legér =í t in tis la ventanaro?íár¡,0Ci

d i , 3rd/1tiltíh,7rd71Gcrod,5 :=5p2cíals5?rd71!xrd717gca5cii,72 ¡arribe?rd7Í2di ¡SÍ

d l ,OHhrr i7Í ÍSdl , !2rci7!cca5cii,80 ¡abajo?rd713di ¡Ei

di, 13rd7I2!d l , 0rd?ígcc5cü377 ¡— >?rd7 i4dh ¡sid h j Srri7í3idh,0rd7ígcascii,75 j < — ?rá71ooh ;sid h j O í f hrd714í

dr - ,7rd7!

:?D ccsrtii .S! ¡D PEDíi^js rc71¿jfp 'á7í ;tec!a ir

rc7!&: :all rc?:á6 :?BÜP O Pjai; rd7!

rd7!7: ccv di,offset dir2í ¡salida d= ssts rutina, restaureeov si.ofíast dir2!r jairecciones d= vsntsnasf i O V C X , l í i

ptlafl 55

o!i=h ds

c B l l pdebug ¡restauro parí t a l lacap gccod.2 ;TftB?

jíi£ rd72iínn rrf 1 * - iJ lUl» J Lr d ^ " ~

r(Í77« rfT'P nrT.ri 'í . C U T r T Tfilr1?í U « j- i 1_1IJU Ul_!_ iJU ( J i -J^L i j, i E >^1|_'.

jsp rd_5 ;s:rd73; JEC rd_í ;ESCrd?0: BDV :lfdh ¡resalto byte actúa!. Prissro

eov ch.d! ;c3Ícülo posición8QS Ci i T ' HaHrf rn CautJ w n j /

posdir c l .cheov c i jinc diSOV 2ÍÍ,

fiOV

eov d i rp reVjd isoy a!j70tistosb jcaabio el atributoratn

rd700¡ ficv nlifiEájO jpars cada linea,,.rd7001: acv si,orÍ5Et dir2í jveo si coincide D!fí2s COR DIR2xR

sov QÍ,aH=3t dir21r£QV al j f í l i f l = 5

xor aíi,ahsdd 5X,assdd as^xadd s i j S Xadtí d i 3 ax

push espush dspop BEaov a l ,2bh jEtributo que pondré si colíicideCEpSK

n.

--o

<z?

O

. ta

n

VC

:L 5?

in

oo

ta

ra

-n

..

.n

o

-i

ri

ES-:

-c

o

o-

r-i

n

o ri

o

tu

a.(

u

in

ca.

o.

in,

i -

[a.

e»,

n

n

-M a

.=3

:*-< ta

o -a

co

c>

u

u

u

u

i..i

ni

uȒ

u

•« u

n

rtí

ti.

ni

.---

LII

es

la-

..na

nj

m

iii

ira

ni

lU

O

O

O

CZ

III

1--

S>

'd Ki

"1»J O

.

1

O.l

IU

1H>

-1 l/l

w-

o

i-*' I

D

O.

>-

•—

Ul

Si

m

ni

ci

txJ

n'

D*

**••

a-

cr

e Ul

Cv ?

21"

ro u- ni

n

ó tu Ul

III M-

*3

O Itl

III cn-

a-

El

=t

a

ui

IU Ul

n

ÍD I" en.

o-

cu-

0 P.1 o.

i" Ul •I- cr

K3 ct-

'O -t m i"

b ni

i—'

ex

CI-

o-

1 — '

O

rti

tu iri

ni Ul

d-

nt'

!3

SJ

E

S

ra

cj

u

ni

a> ¡m r~\u

11.1

iu

«~ '

U

' U

l

Ul

Cl.

lt.

in

(,T -

ct-

o-

0

FJ1

rj

a

i"

U'

ra.

ct1

V '

si1

ni -h

IU

O.i

J=(

T)

ÍBa

u

u

r*

. ra

a-

CT ü

ci, a-

13-

ti

<:•

K—

'e

n n..

-i

Cl

tn n.

ti.j

>-•

in

13

3

u

'-u

i.-i

ci-

ni

u

rz

'u

no

u

a.

=3

ei

u

ex.

ra -

a

L1T

O

01

a

aa

-oui

tg

tsO

o

e:

ao

«

c:

=1

a

o

o-I-J

T3

"U

í 3 i 3

unidadcríir-str

crono:

T --T. 1 .JoZOl!

fifi!

pant:

Pí¡

p2:

«Btr:

C u

cbdr

.coo;EOV

1SOV

BOV

EOV

(SOV

intcaliSQV

EOV

ÍOOD

dec

inccailC2u

;nzscvaovintsovint

EOV

eovaovcapjasffiQV

japinc=iib

addadcEOV

KOV

intretnend

^

0-:n

"'

ax.édatads.afcont.Odi,/ah,22inpantai .8

U:o2""ai

cor.tpañíccntjivlazodl,7ah,221hsh,4ch2ih

CljCDflt

decena ,6unidad,0el, 10p2unidad, eleostrdscénacljíO

decena, 30hunidad. 30hahj9dsjóííset decena21 h

crcno

íSeguntíos¡Pass a crc;;:cÉ i¡n=? .¡Fin da! sfmc

¡preparo contadorfhaco un B£EP

{auesírn inicie de cusr-ta

;rBi.ardo oarc i£n5r la¡cuenta sn 5eoQr;do=

;incr52=nto CQri£HDr-;fiuestro cuenta a:iual

íhscsr este trabajo ¿0 vecesisaígo con BEEP

íteru iñ8

¡rutina que auestra numero en p

¡si CL < 10

iguardar CL en la= unidadesjy pa=ar a mostrar el nuseroj=l CL > 1Ü, incresento decsn==jy resto 10 a CL

; convierto En ASCI!

; función 9 dsl DOS: sortrar¡un string terainado en 'i'

El

El

ffil

5?

*-•

a

o-

a

o

C"

o

m!-

*•<

•<

o-

-eEI

B>

tu

u

no

o

o

o

i— •

E3

t9o

o u

El

=1*

•-••

Pl

OL,

O.

O..

o

n

cr

.u tr

E

CX.

U

Im

rr

i•

— iC

l

ui

cu

ru

rrtoDJ

O

L-

IO

CL.

Ul

a'

X

cr

PJ

riJ

•»>e

«i

»'

n

[3Itl

'>

-a

in

rt-

IPcu

r"

n r-l-

DJ

*O

(O

er

ei.

m

tu iti_

r<i

a-

n

:3'

r'-

iu

ni

En-

HI

! ,-

ifn

a

s- Q -h

UI

Itl

[11

=T

-*,

hO

rj"

ai

•••-

~*

OJ

d.

PJ it

u.i

ra.

o o -i

-in ni

r1**1

S-

ci

w

ci

10 '

~"l

ta

d. tu

UI

ÍT1

hO

O_

C3 • »-.

iri

iti

r'f

pJ

C

TL

IVJ3

- U

I S<

O

O.'

iB.t

-C)

CX

rr

IT n-

n>

m

-tu

ii"

m

in

ai

irjO

1 r«

* O

in -< i-t

-•a

mr>

- u

i

• 'SC5 -'

ranois

D O Q l ¡ =

00==5C

.andel

.datadedb

Ü?

SDi!

OC

.COSE

ÍÍ3V

EDV

5DV

aovintfflDV

eovsoyintGDV

EOV

25V

3Cd

1DV

BDV

KOV

SGtf

intjeftnvrflU I

ffiDV

BOV

aov

intEOV

ÍOV

intSOY

EOV

SC3Y

aovaddsovSOYintinccrapjneEOV

intend

56311

dO dup (?)Brici¡r«bre del arcnivo aí

12&tasado dupíOi

sx,&¿ataÓ S , 3 ü

ar.,£l9hdx,ot f5Et pregunte21h3h.0ahos. of fset buííerbuífsr,7321 h=Í.OTr£°t bufr=r

bljúüffsr-Mbh,0bs,2byte ptrtsi-í-b)í3,ú2ti,3dndXjOfT5=t bufísr^al.O21híin

aMfhíS"ds,ofísEt bloquecí;,taiancj

2ih3h,3shbx.hsfidls21 hcuentíjObXjOÍrset bloqueal, cuentashjObSjaxdl.dsitbslah,221 hcuentecuentajtasanodispah,4ch21 hinicio

¡puntero d= 3 data;jpreguníi el nofsorr!=1 nombre del archivo

fingrese s buffsr =1^E del archivo

pongo un O luego fl=;íriüffibrs pars oue =sa¡un AS^ÍIi

jabrs un archivo con ?ijnGSDre que esta en buf-fer,¡solo para Iscturj

;CF=! 55 srror

j!=s 'taieano' bytss;dsl archivo

jcierra si archivo

¡contador de bytes leidos¡desplisca los "tasano";byts5 leídos

j = i cuenta *, tasano siguejdesplegarido

DIAGRAMA DE BLOQUES DEL CONTROLADOR DE FLUJOHodulo Flujo. Ast*

I n i c i o

Rutina inicialde

Inicialización devariables, X=@

Nivel

Subnivel

Construcción debuffers y cálculode nimeros clave

MenuIineaCHclave)

Statusf y Statusy

Opoicfrí

Diagrama A.1

275

Opc i ón ©Opción?

Actuar-

O s~^ /H™X .•—% /^~^. /^~~^(O f ? ) ( 8 ) ( 9 ) (i¿)-^— 'v — X V_x ^ — / s, _ s

1 B ©el cursor de opciones a lacRiieráa o la dereclu.

©Si Bopc=i H la opción es tipo rana,

er- el cur-sor hacia arriba o abaje'en la ventana de subopciones

Prepara buffer deopción actual y X

©

c 882

K-

Prepara buffer deopcio'n elegida y

X y i

Diagrama A1 - ( c o n t . . . )

276

c 082

Hclave<—Buffer

RutinaíNclave)

Actuar

Inversaf ^u

©

Ranaf -*+

U!

Recupera lasvariables

Recupera lasvariables

1Si no se entrocon EHIER, 1¿-1

©

Cambia Bopc de O a i y viceversa!

©Presenta una

pantalla de ayuda

Diagrama' A1 ( cont. . . )

277

©Ingreso a las opciones de hacros

del pr

D_Superniuet

Reconstruye el[ büfí'er- de opciof i

"padre"

E IPrepara paso a

a n iue i

ííutina f inal

del usuario

Fin

Prepara paso a

«enú padre

©

Diagrama A1 ( con t . . . )

278

DIAGRAMA DE BLOQUES DEL MODULO DESENSAMBLADOR

Líe: pr-dslQ5 f

wer byteC O ü J ? 0

laquina

/De te minar la\ rutina, apropia-

I ,N^da ¡¿ s a l d a r /

( F in ;

Cuerpo principal del nodulo

Diagrama A . 2

279

DIAGRAMA DE BLOQUES DEL MODULO ENSAMBLADOR

ñsseh

Asigna r paratté™ir-os üs entrad*para 5! paso i y

ejecutarlo.

Pasar e! r-síulia-üo ai paso 2 yasi^narU una zo-na de sal ida,Ejecutar le ,

Cuerpo principa.1 del «odulo

Diagrama A. 3

280

DIAGRAMA DE BLOQUES DEL EJEGTTTOR...DE ÚNICA INSTRUCCIÓN

I1 arle u.n tra-tan i en to ¿i-

ferente

Insertar Coditode ?OPF antes dela instrucción

interceptar-

la I N I í

Cciocsr ios vale-res deí usuarioen ios registros

Poner el PSU enel Stack u caroiar T a í enword alnacenaen e i Stacl;

T~

el¡n

Sil taral

^

Servícic\e la )

1HI i /

Cuerpo principal deí prxjceáímento Exllni?

Diagrama A.

281

DIAGRAMA DE BLOQUES DEL MODULO PRINCIPAL DEL PRO'GRAMA

í ' Modulo Pro.Ash

Hivel de procesopadre

Nivel de procesohijo

In i c io

fiveraguo eltipo denonitor

í n i c i a l i z ovaris))! es.

/ Hay \oC archiyo Jí——

Si

Acorto Mi espaciode Metwr'ia

Instalo' Handler-de la

interrupciíín 2F

Desciendo alnivel de

proceso hijo

Diagrama A.5

Mensaje de error

Kensaje de error

Hubo X HoChíld.Exe Mensaje de error

Fin

282

Mensaje de error

Subo al n ive l

padr-e

LftZOPEIHCIPftL

BEL

Vuelvo a bajara nivel de

proceso lujo.

Se ordenoteminar a

Pr-o

Regreso a nivelde

proceso padre

Diagrama A5 ( c o n t . . . )

DIAGRAMA DE BLOQUES DEL PROGRAMA CRONO

i n i c i o

Inicializa

Contador

BEEP

Contaáor+i

Kuestra en

pantalla

Diagrama A.6

' • 284-"' "

DIAGRAMA D£ BLOQUES DEL PROGRAMA TEST

mi DIO

Pregunta

Recibe

nowhre

Abre archivo

Sierror

Ho

Lee Í28 hyte<

Cierra archivo

Cuenta = 8

Nuestra byte

(cuenta)

cuenta*i.

FinDiagrama A . 7

285

Tabla A. 1

GABEC£EÁ_J35.LOS ARCHIVOS . K

'' Onset

i ÜU

02

04

06

08

OA

OC

OE

10

.12

14!

i 15t

, 18

I 1A

??

Long

2r/¿.

^_¿-

2

2

2

r,¿

O

9

2

2

2

2

7

Descripción ¡

Marca de Link para archivos .EXE (4DH,5AH)

Longitud del módulo imagen en páginasf bloques de 512 byi.es)

Tamaño del archi vo en páginas

Número de ítemes de relocaiisaciór;I

Tamaño de la cabecera en párrafos(incrementos de 16 bvt.es)

IMiniífíc número de párrafos requeridosobre el final del programa cargado ¡

Maxim'- número de párrafos reaiaeridcsobre el final del programa cargado

DesplasarnienT-o en párrafos del segmento .de St,ack en el módulo cargado !

fValor que se colocaré en el registro Sr1cuando se entregue control al programa

Sumatoria negativa de todos los words enel archivo , ignorando sobreí lujo

Valor que se colocará eri el registro IPcuando se entregue control al programa

Desplazamiento en párrafos del segmentode código en el módulo cargado

Desplazamiento en bytes del primer iterade relocalisación en el archivo

Número de overlay

Tabla de i temes de relocalisación,

286

-a a

310

O

DU

RA

CIÓ

NY

5.

l'T

"71

UN

A

PR

UE

BA

tr

>*•

«L

1 t.

'*-

--*

. T

%

L

ff-m

ft Jk

-j*

A-

JV.

- !••

-

V

r>f-

20

Te

st

-ÍO

fiO

T"

80

IDO

Manual

Adaptación al tirio de monitor.-

PRO.EXE puede manejar tanto monitores monocromáticos

corno RGB; para ello requiere dos archivos de ventanas

diferentes. El primero, PROBK.VNT, es apropiado para

monitores monocromáticos y el segundo, PROCOLOK, VNT, es el

más apropiado para monitores RGB. El programa se encarga

de determinar el tipo de monitor.

Ingreso al -programa, -

Se invocará al depurador mediante la siguiente

sintaxis:

PEO [Nombre de archivo] [Parami] . . . ""[Param N]

(Los ítemes entre corchetes son opcionales)

SI nombre de archivo se refiere al programa que se

desea depurar (sea . COM o .EXE) o a un. archivo de datos.

Parami. . PararoN son parámetros que se desee pasar al

programa por depurar. Puede ingresarse sin necesidad de

especificar un archivo, y luego leerlo desde el interior

del programa.

Manual

Entonces el programa escogerá el tipo de monitor. De

inmediato aparecerá un logotipo de introducción que

además informará sobre el estado en que se ingresó (con o

sin programa objetivo); si se ha producido un error fatal

al ingreso (como la especificación de un nombre de archivo

errada o la ausencia de uno de los archivos indispensables

para que corra el programa) , se informará al respect-o y se

abortará al pulsar una tecla. De no haber problemas, se

presentará la pantalla del depurador con el menú

principal.

Pantalla del Depurador.-

Incluimos un diagrama explicativo de la pantalla del

depurador al final de este apéndice. Dicha pantalla consta

de las siguientes ventanas: ~

a) Ventana de código, -

Contiene el código desensamblado de una parte de la

memoria, normalmente aquel desde el cual apunta CS:IP.

Para aprovechar mejor el espacioj no hemos colocado

indicadores de tamaño de .operador (como Byte Ptr), y los

hemos remplazado por una letra al final de cada línea.

Esta letra será una B para operadores de byte, una W para

Manual

f) Ventana de linea actual,-

Muestra el código de máquina de la instrucción a la

que apunta CS:1P.

g) Ventana de Stack.-

Muestra los 9 words más superficiales er¡ el Stack.

O-PC iones en los menúes. -

Varias de las opciones en los menúes tienen

subopciones; estas se pueden ver mediante " 0. En cada menú

hay siempre una opción resaltada, que se puede escoger

mediante la tecla EHTER; se puede cambiar la opción

resaltada mediante las flechas isquierda y derecha.

También se puede escoger una opción simplemente oprimiendo

la letra mayúscula de su nombre (por ejemplo, la J para

ejecutar). Para ascender a un nivel superior se utilisará

la tecla ESC. A continuación detallaremos las opciones del

menú principal,, con excepción de la opción "Funciones",

que está en todos los menúes, y que lo único aue hace es

presentar un menú explicativo de lo que hace cada una de

Manua l

b) Información. -

Muestra información sobre los autores y el lugar de

origen del programa PRO.EXE.

c) Depurador. -

Contiene las subopciones de depuración de programas y

de manipulación de datos que exponemos a continuación.

- Paso: Ejecuta la linea de código actual (aquella a la

que apuntan CS:IP). Dependiendo de lo que se haya

escogido mediante F8, se ingresará o no en

subru.tinss 3 repeticiones o interrupciones.

- Corre: Ejecuta el código del usuario desde la linea

actual hasta que se cumpla un evento determinado;

este evento será, según lo que se haya escogido con

F7¡ el alcansar una dirección determinada o el

cumplir una cierta condición, que puede ser igualdad

o desigualdad de un registro con un valor o una

situación determinada del PSW. Si el programa del

usuario finalisa sin haberse cumplido el evento dado,

retornará el contro'l al depurador.

7

Manual

Ins: Permite ejecutar una instrucción fuera del

código. Para ello, se debe proporcionar el

mnemotécnico de dicha instrucción, y ésta se

ejecutará de inmediato.

Ens: Tiene las siguientes subopciones:

Ensambla: Permite alterar el código del usuario.

Se proporcionaré la dirección de memoria desde

la cual se desea ensamblar, y luego una

secuencia de mneraotécnicos.

Busca: Explora el segmento de código del usuario

para tratar de encontrar el código de máquina de

~un rnnemotécnico específico.

Memoria'. Permite operar sobre, la memoria. Tiene las

siguientes subopciones:

Llena: Coloca un valor de byte determinado en un

bloque de memoria que empieza en el sitio

apuntado por la ventana principal de memoria. Es

necesario especificar la longitud del bloque y

el byte que va a llenar el área.

Manua I

Son accesibles desde cualquier nivel, y realizan los

siguientes trabajos .

Fl: Activa el editor interactivo. Este permite alterar

cualquiera de las ventanas del depurador , sea el

código ¡ la dirección de desensamblado; el contenido

de los registros , la dirección de la ventana de

memoria absoluta, los apuntadores de la ventana

relativa, o el contenido de la memoria (en hexadecimal

o en ASCII) . Para cambiar de ventana se utiliza TAB o

Shift-Tab.

F2: Presenta una ventana de ayuda según el nivel en que

se esté.

F3: Muestra las direcciones efectivas de los apuntadores

de la ventana relativa de memoria.

F4: Muestra la pantalla del usuario. Esta es la pantalla

que se asigna al programa del usuario cuando ejecuta.

Para regresar al depurador, se debe oprimir ESC.

Manual

Se invoca las opciones de macros mediante 'K, lo que

lleva al usuario a un menú en que se le presenta los

nombres de los macros existentes en el archivo, y se le

pide que proporcione el nombre de un macro. Si el usuario

proporciona un nombre nuevo, el programa asume que el

usuario desea grabar un nuevo rosero, 7 se procederá en

consecuencia. Entonces, se retornará al menú principal, y

todo lo que haga entonces el usuario quedará entonces

registrado en el macro, hasta el momento en que el

usuario oprime "K nuevamente, lo que indica fin de raacro.

Si el usuario proporciona el nombre de un macro que

ya existe, se le presentan 3 posibilidades: probarlo,

correrlo o borrarlo. Probar un macro implica ejecutarlo

paso a paso, oprimiendo la tecla ENTER cada ves. Correrlo

implica ejecutarlo de una sola ves sin interrupciones,

hasta su finalisación. Y borrarlo implica eliminarlo del

archivo.

Conjuntamente con el resto del paquete, entregamos un.

macro de ejemplo al que llamamos "SHELL". Lo que hace este

macro es proporcionar el nombre C: \COMMAND.COM en

Archivos, y luego leer dicho programa, que es el

13

intérprete de comandos del DOS. Luego, ingresa a Depurador

y ejecuta. Entonces, aparecerá el mensaje del DOS y se

podrá ejecutar cualquier comando de este tpor ejemplo

DIR). Para retornar a PRO tipearemos SXIT, lo que

continuará la ejecución del macro. ya que el depurador

habrá recuperado el control; se ascenderá al menú

principal y el macro terminará.

Limitaciones de PRO.EXE. -

Hemos encontrado algunos problemas con nuestro

paquete de depuración, que escaparon a nuestra

investigación durante el tiempo de desarrollo, Los

exponemos a continuación a fin de prevenir al usuario, y

consideraremos su corrección en una versión futura del

programa.

- No es posible cargar en memoria un archivo completo

que tenga más de 64 KBytes de extensión; si se

intenta hacerlo, el programa no reportará ningún

error, pero solo habrá cargado los primeros 64K.

14

P A N T A L L A D E L P R O G R A M A

Ventana de

código

Ven^ana de

banderas ( P S W )

Ventana de

registros

' vi ' i

-• • .• • • - -

:--:.; .v

>C:'.0

!-:4l!Í'¿•'-=5

-;;

- _ . , . . .

-- •"1

- ._

'. •_ 1 ""

^

-"-

1"l_- ""r • _

. - - •:

- AJÍ,- :i -?

£/ - . «. *.*..— < • > - " -

::

• ;

-

-==-.£, ÍET.:-

. . . . . .

: .--.,

- • .- -.<-r."

ÁJ.r_ E; -"TL..;1. -

"•iirii. i .'---¡v.

^ ' ».! " ,

> .1 ' : • -

\- • -,"V-

foi—üV.- ;ii tr; ;-f : =r:\:-'?' ." r-'r:;

\

/' .^" := :=; :::;:?:; 7;.. :":!

"— 7"'-""1':-.-= •-• "=-;- "-J .-' - •'•

::_-:- -.J. -...

, • • 1 Ir-7^! :; - --1 • .

, . . _ . .

: " - :,. . :' " - l: -•

'- .: -.. . . ' ' - i - . - - . - r - ' -•:

r - fc,lj í,^. ¿,» /} , »*> 1 ?l ' C1^~ E™ t-V .1» Id. bl. b*ta bV brb ' V ^i. ^*W.I ta. J

~ -i -~ 2' "•'• ~í 'H' 4* •- fs- *-i ; 1

;~ .1 _r ." i.~ '; "- -• " — , ^ i

:• :i :- -.'. C. '-'. - .':".'"....... -2 t • - - - • " • - -

-:.:-. i : .-.*:-.= = (¡:^;.^

Ve

Vn-n

'^—~ s

"^MenúVentana

de código

de máquina

de línea

actual

Ventana

de stack

Funciones

Ventana principal

de memoria

Ventanas relativas

de memoria

Status

Ayuda sobre

la oü ci ón a ctual

17

C. ESPECIFICACIONES )OR 8085

En este apéndice presentamos la estructura lógica que

presenta este raicroprocesador. No pretendernos dar a

conocer su set de instrucciones ni las técnicas de

programación que se le aplican, sino hablar brevemente

sobre sus registros y sus loodos de direccionamiento.

Registros. El 8085 es un microprocesador de 16 bits,

es decir que su mínima unidad lógica es el "word"; sin

embargo, es posible tener acceso a bytes individuales, e

incluso a bits aislados. Consta de 18 registros, a los que

podemos clasiiicar en cuatro grupos:

Gráfico C.1: Registros de segmento

Registros de datosRegistros de índice y

apuntadores

AH

BH

CH

DH

AL

EL

CL

DL

AX

BX

CX

DX

Registros de segmento

CS

DS

SS

ES

SP

BF

•SI

DI

Apuntador de instrucciones yregistro de banderas

X X X X 0 D I T S Z X A X P X C

IPPSW

, J.

Especificaciones

Los registros de datos tienen la característica de

que pueden ser tratados corno registros normales de 16

bits, o como registros dobles, compuestos por registros de

8 bits.. a los que se puede tener acceso corno si se tratara

de registros independientes. Son de uso general, pero cada

uno tiene características específicas. El registro AX es

el acumulador (también lo es el AL en operaciones de 8

bits), y las operaciones que lo involucran suelen tener un

tiempo de respuesta bastante pequeño, BX (base Índex) es

un registro bastante especial, pues puede funcionar

también como apuntador. CX es un contador que suele

contener el número de iteraciones que se harán en procesos

repetitivos, DX es un alinacenador general de datos.

Los .registros de índice pueden también ser utilizados

corno almacenadores de uso general, pero tienen los

siguientes usos específicos. SP (Stadk -pointer) es un

apuntador a una pila tipo FILO (first in - last out), y

está implícitamente involucrado en operaciones como PÜSH y

POP, BP (Base pointer) es un apuntador normalmente

asociado con la pila. SI (Source Índex) y DI (Destination

Index) se involucran con operaciones de tiras de datos

corno MOVS.

Especificaciones

Todos los apuntadores representan únicamente offsets,

es decir, direcciones relativas respecto de otras

absolutas. Tales direcciones absolutas se determinan

mediante los llamados "registros de segmento", los cuales

direccionan párrafos. Cada párrafo es un grupo de 16

bytes; así, si uno de los registros de segmento tiene un

valor de 3, estará direccionando la memoria fisica 48. El

registro CS (code segrnent) direcciona código; DS (data

segrnent) direcciona datos, SS (stack segment) direcciona

la pila, y ES (extra segment) suele también asociarse a

datos.

Por último, IP (instruction poÍnter), apunta a la

próxima instrucción que ejecutará •el microprocesador

dentro del segmento de código; ésto quiere decir que la

dirección física de dicha instrucción será 16*CS-f-IP. PSW

(prograra status word) es un registro en que cada bit es

una "bandera", un indicador de estado de lo que viene

ocurriendo en cada momento, de la ejecución del código. Las

banderas son las siguientes:

0: Overflow. Es 1 si una operación aritmética

produjo un sobreflujo.

Especificaciones

El contenido del P3W es el elemento de decisión en

los saltos condicionales.

Modos de direccionarniento: El programador puede

referirse a un lugar de la memoria mediante

direccíonaioiento por índice proporcionando un registro de

segmento y un offset (por ejemplo 55:[BX+DI+17]); los

modos de direccionamiento posible son los mismos que se

exponen en una -cabla previa, en la explicación del módulo

As seto. Asm. Sin embargo, es posible proporcionar únicamen/te

el offset, y el rnicroprocesaaor asumirá un registro de

segmento por defecto, de la siguiente manera:

Tabla C.2- Registro de segmento predefinido

SI+BX (+DesT>) DSDI+BX (-í-Desp) DSSI-t-BP (+Desp) SSDI+BP (+Desp) SSSI (+Desp) DSDI (-HJesp) DSDesp. DSBX (-f-Desp) DSBP C+Desp) SS

Finalmente, las operaciones de tiras de datos no

aceptan parámetros , y siempre tornan a DS: SI como fuente y

a ES:DI como destino.

D. LLAMADAS A FUNCIONES DEL DOS Y DEL BTOS

En est.e apéndice lisT.aroo? algunas funciones

disponibles del BIOS y del DOS sin explicarlas en detalle.

Todos los valores numéricos están en nexadecimal.

Tabla D. 1

Funciones del B10S.-

Servicio

Impresión de

pantalla

Video

Video

Video

Video

Video

Video

Video

5

10

10

10

10

10

10

10

Video

Video

Envía el contenido de la

pantalla a la impresora

0 Fija el modo de video

1 Ajusta el tamaño del cursor

2 Posiciona el cursor

3 Lee la posición del cursor

4 Lee la posición del lápis

óptico

5 Elige la página activa

5 (AL=80) Obtiene los registros de la

página de video

10 5 (AL=81) Da valores al registro de la

página de video de la CPU

10 5 (AL-82) Da valores al registro de la

página de video de la CRT

E. EL GKNRRADQR_INTER ACTIVO T)K

Vent. Exe es un programa cuya misión es facilitar la

creación de áreas de pantalla con un formato predefinido.

Utiiisa un controlador de flujo para evitar el tener que

manejar esta labor.

Una ventana tan solo es un rectángulo de la pantalla.

Puede contener información cuyo contenido varía a lo largo

de la ejecución del programa o es constante. En el

generador interactivo de ventanas cada posición de la

pantalla se define por dos bytes: el carácter que la ocupa

y el atribulo que posee.

El programa se corre dando corno parámetro el nombre

del archivo que contiene las ventanas o se quiere_crear .

Si el archivo es nuevo y el usuario confirma su creación,

se inicia la corrida con un índice inicialiaado con

valores que indican cero ventanas y cero grupos ocupados.

Expliquemos aquí qué es un grupo. Entre los métodos usados

para manejar informaciones que son creadas, editadas ,

borradas continuamente y con acceso aleatorio, uno muy

práctico, y que lo emplean incluso los sistemas operativos

es tener un índice en que se describe la ubicación de la

información. Lo ideal sería tener todo el espacio

ocupado , sin áreas desperdiciadas . Esto , sin embargo , no

1

Ventanas

es aplicable en la práctica. La cantidad de información

necesaria para saber la ubicación de cada unidad elemental

de raemoria seria más grande que la información almacenada.

Por éso se tiene que trabajar con áreas de memoria

relativamente grandes, que se convierten en los elementos

de la memoria. El área no debe ser muy pequeña por el

problema descrito hace poco. Sin embargo, no debe ser muy

grande porque el espacio no ocupado dentro pasa a ser

inutilisable. El índice del programa de ventanas se

inspira en el formato del directorio del CP/M, que es lo

bastante sencillo como para adaptarse a nuestras

necesidades sin dejar de ser efectivo. El tamaño del área

es de 256 bytes, y es llamado un grupo en Vent.Exe.

Una ventana solo puede almacenarse ~en un número

entero de grupos (en Vent.Exe el límite es cuatro grupos).

La información de la ventana se almacena secuencialmente,

y por cada ventana se mantiene un Índice con datos

importantes.

Las ventanas se crean dando un nombre, marcando dos

esquinas suyas opuestas y grabando lo creado. Luego se

define su contenido. En la opción "Caracteres" se definen

los datos e informaciones que la ventana presentará. Si

Ventanas

alguna posición va a ser de valor variable, se la marca

como "Variable", Luego se definen loe. "Atributos" de la

ventana. Cada punto puede tener un diferente atributo.

Aquí se define la presentación de la ventana.

Asi se siguen creando las ventanas que algún programa

necesit-a. Es conveniente que antes de empezar se tenga una

planificaciórj de la pantalla, al menos aproximada. En todo

caso el programa permite eliminar ventanas, mostrar las

existentes, alterar algunos de sus parámetros, etc. .

Cuando una ventana es creada ocupa los primeros

grupos vacíos que encuentre, aunque no sean consecutivos.

Cuando una ventana es borrada deja sus grupos libres para

que la próxima ventana creada los ocupe. Al cabo de cierto

tiempo de creación y borrado de ventanas, es lo más normal

encontrar un archivo completamente desordenado, con

espacios vacíos y que solo es manejable por el buen uso

del índice, Esto se puede ver con las opciones Informa e

íNdice del menú principal. Cada ves que el usuario

necesite, y siempre que ya quiera usar el archivo de

ventanas para su aplicación, deberá ordenar el archivo con

la opción respectiva, SI método de ordenación es este: No

dejar grupos vacíos en el archivo, colocar primero las

3

Ventanas

ventanas principales, y luego las secundarias. El archivo

se trunca siempre al final del último grupo válido.

En este momento hemos topado otro tópico interesante:

Cuando el usuario planifica su programa sabe que existen

ventanas que deben aparecer continuamente, pero otras que

solo lo hacen de manera ocasional. Las ventanas que más

aparezcan (principales), debieran ser instaladas en

memoria y no retiradas, para que su lectura sea rápida.

Las otras serían leídas de disco, a menos que hayan sido

leídas recientemente y aún estén en memoria (concepto de

residencia). Al crear una ventana, el usuario será

interrogado por su categoría, que puede ser principal o

secundaria. Podríamos pensar que lo óptimo es que todas

las ventanas de un archivo sean principales, pero ésto

lleva a tener que dejar muy extensas sonas de memoria

dedicadas a contener las ventanas. Por éso Vent limita el

número de grupos principales a 40, ésto es, unos 10 kB,

que, bien utiliaados podrían tener la definición de unas

dos pantallas completas. Al referirnos a una buena

utilización hablamos de que no haya demasiado desperdicio

del espacio de los grupos. Este caso ocurre, por ejemplo,

cuando se definen muchas ventanas de rouy poca área.

Ventanas

Hasta este momento solo hemos hablado de la creación

oe ventanas. Cómo utilizarlas? Al final cié este apéndice

cronr-ta el es quero» del índice y deü archivo de ventanas. El

usuario podría dar el uso que estime conveniente a esta

información y crear sus rutinas de manejo de las ventanas

creadas. Sin embargo, al escribir el programa Pro, hemos

creado un archivo llamado Macvnt.Asm que podría ser

incluido en cualquier programa en Assembler, para usar sus

macroí (Puede leerse el listado de Pro. Asió para observar

la manera oe incluir Macvnt. y utilizar los macros del

archivo:

Como se detalle en el listado de Macvnt, los macros

principales son tres: El primero (IDVNT) sirve -para

indicar dónde el programa ha dejado un área para ventanas,

cuál es el nombre del archivo de ventanas que se va a

leer, y el tamaño del área de ventanas. Existe la

necesidad de que las ventanas principales y el índice sean

residentes (el índice ocupa 6 grupos), de que haya un

área común de, al menos, 4 grupos para residencia temporal

de las ventanas secundarias, y un grupo para uso del

macro. Entonces el área debe ser de, al menos, el número

de grupos principales más 11. Ese número de grupos

principales es una de las informaciones dadas por Vent.

£ .¿ - c •.. j e ;n h n e i are í i1 v i ••

Archivo de Ventanas

Cada entrada cel indi?-:- tiene ¿4 rytírí .

I na i ce: ¡ EntradaGrupos ) Entrada

1 (i &¡ 5 i Entrada.' j Entrada; !

í i Entradai

0. -1.-F;

fj,,! . —

63.-

Par ame tros GeneraierMapas- de ventanas yMapas de ventanas yParámetros ventana 5;

Parámetros ventana

gruposf.rupoí,

63

Área der-

Tabla E. 2:: rarénjttror- generales

Parámetros Generales .

Offset

¿ \

Parámetro

v ventanas val 3 das# grupos válidosUltima ventana válida

C- Ultimo grupo válido4 la. ventana libre5678910-111213-1415

16-24

Ir. grupo libreVentana actualGrupo actual# ventanas principales

Valor en índice:nuevo y (rango)

0 (0-61)0 (0-244?2 (2-63)5 (5-245 -3 ( 3 -63'6' (6-249;3 (3-63 i6 Í6-249"'0

tf grupos principales j 0 (0-40)Dirección de residentesTamaño área residentesHandle archivo ventanasPróx. grupo de área de

• *. ^res i a en tes a s er usaaoLibres

Tatúe. H . '. ?arárneTr.:.3 particulares

ven" hrjai

Parámetros de una ventana.

'..'ri ser. ;Valorea•! Muevo y f r¿iiFo )

(! (ó byx.es^ Vi -i •*- f iV L'JL v "

f l'-Í -f 1G «-i-I t' Jo10-1JJ í - l r14- lí

Ir- D >í

I Nombre ¡CaT-egori& fi (d , :",he.-iderjci;-i O t f ; / : -tí grupos en ventana j O í u - 4 •í- v?.r3 abi e?- ventaría i ; ? : ít- f. 1Ti', r-q u T n'-* .c--x:r. i z 'i ' O fri^r;T.a " 7 9 , 2 2 -^ c i 3 í"1 *' V i £ 1 iiT Q&r • !"1 ! íl *-". c'. T"?! 7 £í , 22 '

grupores j.

F. EMPLEO T)EL CONTROLADO]? DE FLUJO

En este apéndice presentarnos un listado del esqueleto

del programa controlado. Constan todas las declaraciones

necesarias, se indica el sitio donde deben colocarse los

buf f ers, la información de la?- opciones, las

explicaciones, y los menúes y el rosero Petorno.

ir.'Uspíünsable para que el controlador funcione. Asi mis roe.,

se indios la ubicación de los datos y rutinas del

usuario. Base. Asín podria copiarse a otro archivo que se

ut i usaría corno punto de partida.

Base.Asm

. modei s ros 11

. da "o apublic tabbuf , tabini, nraaxbufextrn dirret; near,mraux2:«oro,rarauxS: worcextrn videoseg:word,valptr:wordextrn mopaux: byte , raopauxl: byte, tiprut: byt.eextrn areamac: near, bgmac: byte, braac: by^e , bver:

nmaxbuf equtabbux db

db

dwdbdwdb

db

db

;« de buffersOlh,OOh,OOh,00h,00h.OOh,00h,00h 4 principal

expO

menú O

offset expOjoffset menuO,offse TV rutO3

'a b c d' ,0,4 , "ABC!1' - Odatos del programa #*# *****.**-##*

. codepublic rinic,rfinal