17
Digital II Departamento de Sistemas e Informática Escuela de Electrónica Facultad de Ciencias Exactas Ingeniería y Agrimensura Universidad Nacional de Rosario Documentación de las instrucciones “INdg2”, “OUTdg2” y de los dispositivos mapeados en el espacio de E/S

Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Digital II

Esteban AlmirónAndrés CapalboJosé Luis Pepe

Versión 2004

Departamento de Sistemas e Informática

Escuela de Electrónica

Facultad de Ciencias Exactas Ingeniería y Agrimensura

Universidad Nacional de Rosario

Documentación de las instrucciones “INdg2”, “OUTdg2”

y de los dispositivos mapeados en el espacio de E/S

Page 2: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 2-2

Tabla de Contenidos

1 Introducción ...........................................................................3 2 Dispositivos Virtuales .................................................................3

2.1 Dispositivos de Entrada de Datos ..............................................3 2.1.1 Teclado Hexadecimal (Tecl_HEX) ........................................3 2.1.2 Key_press ....................................................................4

2.2 Dispositivos de Salida de Datos ................................................5 2.2.1 Display ASCII (Disp_ASCII) .................................................5 2.2.2 Display de 7 segmentos (Disp_7SEG) .....................................6 2.2.3 Display binario/decimal (Disp_BIN) ......................................8 2.2.4 Display BCD (Disp_BCD)....................................................8

2.3 Dispositivos de Entrada/Salida de Datos......................................9 2.3.1 MotorX .......................................................................9

2.4 Mapa del espacio de Entrada/Salida ........................................ 11 3 Biblioteca de Datos de Digital 2 (BDDg2)......................................... 12 4 Instrucciones “INdg2” y “OUTdg2” ............................................... 12

4.1 Instrucción “INdg2”............................................................ 12 4.2 Instrucción “OUTdg2” ......................................................... 13

5 Ejemplo............................................................................... 13 6 Bibliografía........................................................................... 17

Page 3: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 3-3

1 Introducción La cátedra de Digital II ha adoptado al Entorno de Desarrollo Integrado1 Microsoft MASM Versión 6.11 para la enseñanza del lenguaje de programación Assembler. Dicho entorno integra un ensamblador, administrador de proyectos, editor, depurador y demás herramientas dentro de una única aplicación, de modo que no sea necesario contar con alguna herramienta externa al mismo para desarrollar programas en Assembler. Por otra parte, al estar orientado a la generación de programas bajo los sistemas operativos de DOS y Windows en computadoras personales, cuenta con la desventaja de no permitir visualizar el espacio de Entrada/Salida de la misma manera que representa el espacio de memoria. En el espacio de Entrada/Salida, en este caso se encuentran mapeados los distintos dispositivos físicos de la PC, y en consecuencia, no es posible simular o depurar las instrucciones IN y OUT. Ante estas limitaciones, se ha desarrollado un módulo de software que mapea una serie de dispositivos completamente funcionales en el espacio de I/O2. Además agrega al conjunto de instrucciones del microprocesador dos nuevas instrucciones denominadas “INdg2” y “OUTdg2” que permiten intercambiar datos entre el microprocesador y los diferentes dispositivos emulados. Además se incluye en dicho módulo, la definición de un conjunto de datos (tablas y variables) que nos permitirán realizar los problemas de laboratorio en una forma fluida e integral. En lo siguiente, nos referiremos a esta Biblioteca de Datos de Digital 2, en forma abreviada como “BDDg2”. 2 Dispositivos Virtuales Llamamos dispositivos virtuales de Entrada/Salida, a los elementos emulados por el módulo de software realizado por la Cátedra, a los que abreviadamente nos referiremos como “DVIO”. Los mismos se encuentran mapeados en el espacio de Entrada/Salida y responden de igual manera que un dispositivo real. Es importante remarcar que estos nuevos dispositivos han sido denominados “virtuales” porque no existen realmente, sino que están implementados en una biblioteca de software (IO.ASM, IO.INC) que debe ser incluida en el proyecto donde se encuentra el programa que accede a ella. Dichos dispositivos pueden dividirse en dispositivos de entrada, de salida o de entrada/salida según el sentido de la transferencia de datos, desde el punto de vista del microprocesador. Entre los dispositivos virtuales se encuentran teclados y displays de diferentes tipos que podrán accederse como se comentó anteriormente a través de las instrucciones propuestas, “INdg2” y “OUTdg2”.

2.1 Dispositivos de Entrada de Datos

2.1.1 Teclado Hexadecimal (Tecl_HEX) Este dispositivo de entrada emula un teclado hexadecimal, restringiendo las teclas válidas del teclado de la computadora. Este dispositivo ocupa un espacio de 2 bytes y se encuentra mapeado a partir de la dirección 2000h del espacio de Entrada/Salida. Para explicar su funcionamiento, consideremos el siguiente fragmento de código:

1 IDE : Integrated Development Environment 2 Nótese que el espacio de entrada salida al que se hace referencia aquí, no es el que accede el microprocesador en sus operaciones de I/O en un ambiente real, sino que es creó artificialmente para que el programador pueda acceder al mismo, con mecanismo idéntico al verdadero.

Page 4: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 4-4

MOV DX,2000h INdg2 AX,DX La primera de ambas líneas de código carga la dirección del Teclado Hexadecimal en el registro DX, la segunda provoca que aparezca el siguiente recuadro en la pantalla:

D I G I T A L II

Teclado Hexadecimal

Ingrese un número:

A partir de allí el usuario podrá presionar cualquier tecla alfanumérica correspondiente a un dígito hexadecimal. La cantidad de dígitos que se pueden ingresar está limitada a dos, en el caso de emplear a AL como parámetro de “INdg2” y a cuatro en el caso de emplear a AX; finalmente el valor ingresado estará disponible en el acumulador. Como es de esperar, el dispositivo responde indistintamente a las letras mayúsculas y minúsculas. En caso de presionar una tecla que no corresponde a un dígito hexadecimal, se presenta un mensaje de error, permitiendo posteriormente ingresar el dato correcto. Al igual de lo que ocurre con un circuito físico, en caso de que se lea un dato desde una dirección en la cual no se encuentre ninguno de dispositivos mapeados, el dato que se obtendrá carecerá de sentido.

2.1.2 Key_press Este dispositivo de entrada emula un pulsador utilizando el teclado de la computadora. Se encuentra mapeado a partir de la dirección 200Ah del espacio de Entrada/Salida y ocupa un espacio de 2 bytes. Este dispositivo setea el bit menos significativo del byte ubicado en la dirección base de este DVIO, cuando se ha presionado cualquier tecla, simulando de esta manera a un pulsador.

Valor leído Evento 00 01 Se presionó una tecla 00 00 No se presionó una tecla

Consideremos el siguiente fragmento de código para ejemplificar su uso:

MOV DX,200Ah TESTEAR_TECLA:

INDg2 AX,DX TEST AX,1

JZ TESTEAR_TECLA CONTINUAR: ......

Page 5: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 5-5

La primera instrucción carga en el registro DX, la dirección base del dispositivo Key_press. Luego la sentencia INDg2 AX,DX, lee la salida del dispositivo y guarda el resultado en AX. Posteriormente comprueba si en AX, hay un 1h (Se presionó alguna tecla) o un 0h (No se presionó ninguna tecla), afectando los flags, particularmente el de Cero. En caso de haberse presionado una tecla ZF= 0 y se ejecuta la siguiente instrucción a la etiqueta CONTINUAR, en caso contrario, volverá a ejecutarse a partir de la etiqueta TESTEAR_TECLA, por lo que el programa permanecerá en este lazo hasta que se presione cualquier tecla.

2.2 Dispositivos de Salida de Datos

2.2.1 Display ASCII (Disp_ASCII) Este dispositivo de salida emula un display, haciendo uso del monitor de la computadora. Este dispositivo ocupa un espacio de 2 bytes y se encuentra mapeado a partir de la dirección 2002h del espacio de Entrada/Salida. Para hacer un correcto uso del mismo, deberá introducirse en el registro AX o AL, el dato a mostrar codificado en ASCII y posteriormente emplear la instrucción “OUTdg2”. Para detallar su funcionamiento, consideremos el siguiente fragmento de código: MOV AX,5369h MOV DX,2002h OUTdg2 DX,AX En la primer línea se carga el registro AX con los valores en código ASCII correspondientes a las letras ‘S’ e ‘i’, que según muestra la tabla ASCII, ellos son 53h y 69h, respectivamente. Luego se carga en el registro DX, con la dirección del Display ASCII, y la instrucción “OUTdg2” provoca que aparezca el siguiente recuadro en la pantalla:

D I G I T A L II

Display ASCII

Contenido del Acumulador:Si

Como es de esperar, en caso de que se intente escribir un dato en una dirección en la cual no se encuentre ninguno dispositivo mapeado, no se percibirá ningún efecto.

Page 6: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 6-6

Juego de caracteres ASCII extendido

2.2.2 Display de 7 segmentos (Disp_7SEG) Este dispositivo de salida emula un display de 7 segmentos de dos dígitos, haciendo uso del monitor de la computadora. Este dispositivo ocupa un espacio de 2 bytes y se encuentra mapeado a partir de la dirección 2004h del espacio de Entrada/Salida. Para hacer un correcto uso de este dispositivo, deberá introducirse en el registro AX o AL, el dato a mostrar teniendo en cuenta la disposición que se detalla a continuación, y posteriormente emplear la instrucción “OUTdg2”. La siguiente figura muestra un display de 7 segmentos de dos dígitos, en la cual se han indicado las denominaciones de cada uno de los segmentos. Además se muestra la correspondencia existente entre cada segmento y cada uno de los bits del acumulador.

Page 7: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 7-7

Display de 7 segmentos de dos dígitos.

0 G2 F2 E2 D2 C2 B2 A2 0 G1 F1 E1 D1 C1 B1 A1

AH

AL

En consecuencia, para lograr que se active un determinado segmento, deberá colocarse en “1” el bit correspondiente. Por ejemplo, si se desea que se active únicamente el segmento A2, deberá ingresarse en el registro AX el valor 0100h y luego enviarlo a la dirección correcta del espacio de Entrada/Salida haciendo uso de la instrucción “OUTdg2”.

Valor a Representar

Códificación de 7 segmentos

0 3Fh 1 06h 2 5Bh 3 4Fh 4 66h 5 6Dh 6 7Dh 7 07h 8 7Fh 9 6Fh A 77h B 7Ch C 58h D 5Eh E 79h F 71h

Tabla de código de 7 segmentos empleada.

Para clarificar su funcionamiento, consideremos el siguiente fragmento de código: MOV AX,6D07h MOV DX,2004h OUTdg2 DX,AX En la primer línea se carga el registro AX con los valores en código de 7 segmentos correspondientes a los números ‘5’ e ‘7’, según lo indica la tabla previa. Luego se carga en el registro DX, con la dirección del Display de 7 segmentos, y la instrucción “OUTdg2” provoca que aparezca el siguiente recuadro en la pantalla:

Page 8: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 8-8

D I G I T A L II

Display 7 Segmentos

Contenido del Acumulador:

_ _ |_ | _| |

Queda aclarar solamente que “OUTdg2” puede llamarse mediante el registro AL si sólo se desea utilizar el display correspondiente a las unidades.

2.2.3 Display binario/decimal (Disp_BIN) Este dispositivo de salida emula un display, haciendo uso del monitor de la computadora. Este dispositivo ocupa un espacio de 2 bytes y se encuentra mapeado a partir de la dirección 2006h del espacio de Entrada/Salida. Para hacer un correcto uso de este dispositivo, deberá introducirse en el registro AX o AL, el dato a mostrar en código binario y posteriormente hacer uso de la instrucción “OUTdg2”, con lo que el dispositivo mostrará en la pantalla el dato en base decimal. Para detallar su funcionamiento, consideremos el siguiente fragmento de código: MOV AX,3039h MOV DX,2006h OUTdg2 DX,AX En la primer línea se carga el registro AX con el valor 2710h, lo que equivale a 12345d. Luego se carga en el registro DX, con la dirección del Display Binario, y la instrucción “OUTdg2” provoca que aparezca el siguiente recuadro en la pantalla:

D I G I T A L II

Display Binario

Contenido del Acumulador:12345

2.2.4 Display BCD (Disp_BCD) Este dispositivo de salida emula un display BCD, haciendo uso del monitor de la computadora. Este dispositivo ocupa un espacio de 2 bytes y se encuentra mapeado a partir de la dirección 2008h del espacio de Entrada/Salida. Para hacer un correcto uso de este dispositivo, deberá introducirse en el registro AX o AL, el dato a mostrar codificado en BCD empaquetado (en un byte, los cuatro bits más significativos y los 4 bits menos significativos corresponden al dígito decimal más significativo y menos

Page 9: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 9-9

significativo respectivamente) y posteriormente hacer uso de la instrucción “OUTdg2”, con lo que el dispositivo mostrará en la pantalla el dato en base decimal. Para detallar su funcionamiento, consideremos el siguiente fragmento de código: MOV AX,1234h MOV DX,2008h OUTdg2 DX,AX En la primer línea se carga el registro AX con el valor 1234h, lo que equivale en código BCD al número 1234d. Luego se carga en el registro DX, con la dirección del Display BCD, y la instrucción “OUTdg2” provoca que aparezca el siguiente recuadro en la pantalla:

D I G I T A L II

Display BCD

Contenido del Acumulador:1234

2.3 Dispositivos de Entrada/Salida de Datos

2.3.1 MotorX Este periférico cuenta con 4 dispositivos idénticos, cada uno de ellos representa a un “elemento” , visualizado a través de un carácter en la pantalla, que puede moverse vertical u horizontalmente entre posiciones predefinidas, con una velocidad dada y con comportamientos especiales. Cada elemento cuenta con dos registros de configuración “MxCONF” y “MxXYINI” dónde x=1,2,3,4.

2.3.1.1 Registros de Configuración

2.3.1.1.1 MxCONF

Estos registros permiten configurar el comportamiento de cada uno de los elementos en forma independiente. Este registro es de solo Escritura.

V/H DESP INI VEL R/P ENA REC 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Page 10: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 10-10

Detalle:

V/H Define la dirección de desplazamiento

1: Vertical 0: Horizontal

DESP(*)

Define el sentido de desplazamiento

Bit 14 Bit 13 Desplazamiento 0 0 Nulo 0 1 hacia la derecha/arriba 1 0 hacia la izquierda/abajo 1 1 no definido

INI Define la posición desde la que se comienza el movimiento

0: posición inicial 1: posición final del recorrido

VEL

Define la velocidad de desplazamiento

Bit 11 Bit 10 Velocidad 0 0 VMAX (**) (la mas rápida) 0 1 VMAX/2 1 0 VMAX/4 1 1 VMAX/8 (la mas lenta)

R/P Define el comportamiento al momento de alcanzar el final del recorrido.

0: se invierte el sentido (rebota) 1: se detiene el movimiento

ENA(***) Habilita el funcionamiento del elemento

0: Deshabilitado 1: Habilitado

REC Número de 8 bits que define el recorrido del elemento. Es la distancia (medida en caracteres) que se desplazará comenzando del punto inicial.

Notas: (*) El campo DESP cambia su significado según el campo V/H. (**) VMAX depende de la velocidad de la máquina. (***) Si ENA = 0, el MotorX estará inactivo y tampoco se dibujará en pantalla.

2.3.1.1.2 MxXYINI

Estos registros definen la posición inicial y brindan información sobre la posición actual de los diferentes elementos en forma independiente. Este registro a diferencia del anterior es de Lectura/Escritura.

F I X Y 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Detalle:

Page 11: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 11-11

I Indica si el elemento está en el inicio del recorrido

0: no está en el inicio 1: alcanzó el inicio

F Indica si el elemento está en el final del recorrido

0: no está en el final 1: alcanzó el final

X Posición inicial en el eje X Y Posición inicial en el eje Y

Notas: Los campos F e I son mutuamente excluyentes, es decir si F = 1 permanecerá en ese estado hasta que I = 1 cuando automáticamente se hace F = 0. Notar que esta característica permite detectar el sentido de desplazamiento del MotorX. Además, el programador puede cambiar el valor de estos campos via software. Las posiciones X y Y están expresadas en caracteres desde el extremo superior izquierdo de la pantalla. Inicialmente F = I = 0.

NOTA DE IMPLEMENTACION

Este periférico (MOTORX) utiliza a la pantalla de la PC para mostrar las posiciones de cada uno de los elementos. Para que se actualicen los gráficos correspondientes a los mismos, es necesario que se efectúe una operación de lectura sobre cualquiera de los registros MxXYINI, haciendo uso de la instrucción INDg2.

2.4 Mapa del espacio de Entrada/Salida A continuación se presenta el Mapa del espacio de Entrada/Salida, donde puede verse claramente las distintas posiciones ocupadas por cada uno de los DVIO.

Espacio de Entrada Salida Dirección Registros de Dispositivos

0000h /1FFFh ?

2000h Tecl_HEX 2002h Disp_ASCII 2004h Disp_7SEG 2006h Disp_BIN 2008h Disp_BCD 200Ah Key_press 200Ch M1CONF 200Eh M1XYINI 2010h M2CONF 2012h M2XYINI 2014h M3CONF 2016h M3XYINI 2018h M4CONF 201Ah M4XYINI

201Ch / FFFFh ?

Page 12: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 12-12

3 Biblioteca de Datos de Digital 2 (BDDg2) Como se anticipó en la Introducción, la BDDg2 es un conjunto de datos (tablas y variables) y macros que nos permitirán realizar los problemas de laboratorio en una forma fluida e integral. Las variables y tablas que se plantean como disponibles en la práctica de laboratorio de Assembler (Versión 2004) son precisamente las que se definen en la BDDg2 (la cual es necesario incluir en el proyecto). Ejemplos de utilización:

mov cl, P2_LONGITUD ; copia la variable P2_LONGITUD ; a el registro cl

mov bx, OFFSET P2_TABLAX ; copia a bx el offset de P2_TABLAX ; dentro del segmento de datos Por otra parte se definen en la misma biblioteca las macros que nos permiten imprimir en pantalla las plantillas necesarias para la resolución de problemas con MOTORx. Ejemplo: PLOT_PLANTILLA1 ; plotea la plantilla nº1 4 Instrucciones “INdg2” y “OUTdg2” Si bien los comentarios y ejemplos previos hacen suponer que el comportamiento de las nuevas instrucciones “INdg2” y “OUTdg2”, se aproxima al de las instrucciones IN y OUT que son provistas en el set de instrucciones, existen ciertas diferencias, como ser la imposibilidad de aceptar una dirección de puerto a través de un inmediato o constante. Los detalles de funcionamiento de las mismas se describen a continuación.

4.1 Instrucción “INdg2”

INdg2 INdg2 entrada Byte o Word: INdg2 accumulador, puerto

Transfiere un byte o un word desde un puerto de entrada al registro AL o AX, respectivamente. El número del puerto debe ubicarse previamente en el registro DX permitiendo acceder a los puertos numerados de 0 a 65535. Operandos de la Instrucción: INdg2 AL, DX INdg2 AX, DX

Cuando el operando de origen es un Byte: (AL) ← (puerto) Cuando el operando de origen es un Word: (AX) ← (puerto)

AF – CF – DF – IF – OF – PF – SF – TF – ZF –

Page 13: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 13-13

4.2 Instrucción “OUTdg2”

OUTdg2 OUTdg2 entrada Byte o Word: OUTdg2 puerto, accumulador

Transfiere un byte o un word desde el registro AL o AX , respectivamente, a un puerto de salida. El número del puerto debe ubicarse previamente en el registro DX permitiendo acceder a los puertos numerados de 0 a 65535. Operandos de la Instrucción: OUTdg2 DX, AL OUTdg2 DX, AX

Cuando el operando de origen es un Byte: (puerto) ← (AL) Cuando el operando de origen es un Word: (puerto) ← (AX)

AF – CF – DF – IF – OF – PF – SF – TF – ZF –

5 Ejemplo A continuación se describe el código fuente de un programa (demo.exe) que hace uso de los dispositivos virtuales de I/O (DVIO) y de la biblioteca BDDg2.

Para poder hacer uso de las funcionalidades antes descriptas en el entorno Microsoft MASM, se deberá crear un proyecto que incluya los archivos io.obj y demo.asm (programa principal). Además, para que estén disponibles las funciones definidas en la librería io.obj será necesario agregar la siguiente línea al inicio del código fuente del programa principal: “include io.inc”.

Notar que este ejemplo es sólo ilustrativo y pretende mostrar brevemente el uso de las nuevas instrucciones y datos definidos en DVIO y BDDg2. Para esto nos valemos de gran variedad de funciones adicionales como ser PRINT, PAUSE, etc., que evitan muchas líneas de código simplificando la lectura, pero no se encuentran disponibles en la biblioteca en cuestión.

Page 14: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 14-14

;****************************************************************** ;*** Ejemplo de los Dispositivos Virtuales de I/O y *** ;*** de la Biblioteca de Datos de Digital 2 *** ;*** DIGITAL2 - 2004 *** ;****************************************************************** include io.inc ;;; CONFIGURACION DEL MOTOR1 ;;; M1a equ H OR M_D OR S_I OR VL1 OR REB OR ENA OR 36d M1b equ 10 SHL 7 OR 10d ;; Direccion base de MOTORx BASEMX equ 200Ch .186 .model small,c .stack .data

msgINFO byte 'Digital II',0dh,0ah,0dh,0ah,18 dup(' '),'Demostracion de DVIO y BDDg2','$' msgINFO1 byte 'Demostracion de las plantillas disponibles$' msgINFO2 byte 'Periferico MOTORx$ y KEY_PRESS' msgINFO3 byte 'Se ingresa un dato por TECL_HEX y se muestra por DISP_BIN y DISP_BCD$' msgINFO4 byte 'Se muestra el nro. 8C en el DISP_7SEG y los caracteres OK en el DISP_ASCII$' msgINFO5 byte 'Se muestra el contenido de la variable P2_LONGITUD por medio del DISP_BCD$'

.code .startup

PLOT_BORRAR ; MACRO para borrar la pantalla print 35,10, msgINFO ; MACRO que imprime un texto PAUSE ; MACRO que espera que se presione una tecla (disponible sólo en esta demo) PLOT_BORRAR print 30,10, msgINFO1 PAUSE PLOT_PLANTILLA1 ; MACRO que dibuja en pantalla la PLANTILLA1 PAUSE PLOT_PLANTILLA2 ; MACRO que dibuja en pantalla la PLANTILLA2

Page 15: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 15-15

PAUSE PLOT_PLANTILLA3 ; MACRO que dibuja en pantalla la PLANTILLA3 PAUSE PLOT_PLANTILLA4 ; MACRO que dibuja en pantalla la PLANTILLA4 PAUSE PLOT_BORRAR print 25,10, msgINFO2 PAUSE PLOT_BORRAR

;CONFIGURACION INICIAL DE LOS MOTORES...

mov ax,M1b ; AX tiene la configuracion del MOTORx mov dx,2+BASEMX ; se apunta al registro de MOTOR1 outdg2 dx,ax ; se escribe en MOTOR mov ax,M1a ; AX tiene la configuracion del MOTORx mov dx,0+BASEMX ; se apunta al registro de MOTOR1 outdg2 dx,ax ; se escribe en MOTOR1

testear:

mov dx,2+BASEMX ; se apunta al registro de salida de MOTOR1 indg2 ax,dx ; se lee en MOTOR1, AX contiene el estado de los fin de carrera mov dx,0200ah ; se apunta a KEY_PRESS indg2 ax,dx ; se lee el estado de la tecla (y se guarda en AX) test ax,1 ; si AX==1 significa que se presiono una tecla jnz END_MOT jmp testear

END_MOT:

PLOT_BORRAR print 5,10, msgINFO3 PAUSE

mov dx, 02000h ; se apunta a TECL_HEX indg2 al,dx ; se lee un dato hexadecimal

mov dx, 02006h ; se apunta a DISP_BIN outdg2 dx,al ; se muestra el dato contenido en AL

Page 16: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 16-16

PAUSE

mov dx, 02008h ; se apunta a DISP_BCD outdg2 dx,al ; se muestra el dato contenido en AL PAUSE PLOT_BORRAR print 5,10, msgINFO4 PAUSE

mov ax,07f58h mov dx, 02004h ; se apunta a DISP_7SEG outdg2 dx,ax ; se muestra el dato contenido en AL PAUSE

mov ax,'OK' mov dx, 02002h ; se apunta a DISP_ASCII outdg2 dx,ax ; se muestra el dato contenido en AL PAUSE PLOT_BORRAR print 25,10, msgINFO5 ; MACRO que imprime un texto PAUSE ; MACRO que espera que se presione una tecla

mov al, P2_LONGITUD ; se accede a una variable de la BDDg2 mov dx, 02008h ; se apunta a DISP_BCD outdg2 dx,al ; se muestra el dato contenido en AL PAUSE .exit

end

Page 17: Documentacion DVIO y BDDG2 v1.0 - 15dejuniomnr.com.ar15dejuniomnr.com.ar/blog/apunteca/Ciclo Superior/ECA/Digital 2/Teoria... · operativos de DOS y Windows en computadoras personales,

Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura

E. Almirón, A. Capalbo, J.L. Pepe 17-17

6 Bibliografía • Brey, Barry. “Los microprocesadores Intel” Edición 5 - Prentice Hall, 2001.

• García de Celis, Ciriaco. “EL UNIVERSO DIGITAL DEL IBM PC, AT Y PS/2” Edición 4 – 1997.

• Microsoft Corporation. “Programmer’s Guide” - Microsoft® MASM Assembly-Language Development System Version 6.1 For MS-DOS ® and Windows ™ Operating Systems.