Digital II Documentación de las instrucciones INdg2, OUTdg2 y de los dispositivos mapeados en el espacio de E/S



Documentos relacionados
6-REGISTROS DEL 8086 Y DEL 80286

Buses y Periféricos 2006/2007 Práctica 3. Ensamblador

Matemática de redes Representación binaria de datos Bits y bytes

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

INSTRUCCIONES ARITMÉTICAS.

ESTRUCTURA DE COMPUTADORES I (Capítulo 1: Estructura elemental de la memoria) 1/6 1-ESTRUCTURA ELEMENTAL DE LA MEMORIA

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING.

2_trabajar con calc I

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Capítulo 9. Archivos de sintaxis

Operación Microsoft Access 97

Anexo B. Comunicaciones entre mc y PC

Práctica 3: Introducción a Word

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

MANUAL DE USUARIO DE CUENTAS DE CORREO

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

Entorno de Ejecución del Procesador Intel Pentium

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

GUÍA DE COMUNICACIÓN DE PROBLEMAS DE SUMINISTRO DE MEDICAMENTOS DE USO HUMANO

SIIGO Pyme. Templates. Cartilla I

3. Número inicial y número final de mensajes mostrados en la página actual.

La ventana de Microsoft Excel

Materia: Informática. Nota de Clases Sistemas de Numeración

Práctica 0. Emulador XENON de la computadora CESIUS

Introducción a la Firma Electrónica en MIDAS

Operación de Microsoft Word

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

Naturaleza binaria. Conversión decimal a binario

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Bienvenido al sistema de Curriculum Digital CVDigital

GVisualPDA Módulo de Almacén

Práctica 1: Sencillo Juego en Ensamblador

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Unidad 1. La información

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Módulo Colector de Datos:

V Manual de Portafirmas V.2.3.1

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Contenido. cursos.cl / Teléfono:

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL DE MEDICAMENTOS DE USO HUMANO GUÍA PARA LA SOLICITUD DE UNA AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL

Actividad 4: Comunicación entre PLC s vía Ethernet

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Instituto Tecnológico de Celaya

UNIDADES DE ALMACENAMIENTO DE DATOS

Guía N 1: Fundamentos básicos(i)

FACULTAD DE INFORMATICA MATERIA: GESTION DE CONTENIDO ELECTRONICO PROFESOR: JONATHAN VEGA ALUMNOS: LUISA ROSERO JAIME CAMACHO DATOS INFORMATIVOS:

COMPRAS CEPAS A TRAVÉS DE INTERNET PORTAL CEPAS

MANUAL DE FACTURACIÓN TOUCH SCREEN

TEMA 2: Representación de la Información en las computadoras

"Programación en Ensamblador del microprocesador Pentium (I)"

* En una computadora el microprocesador se comunica con uno de los siguientes dispositivos:

WINDOWS XP REQUISITOS DEL HARDWARE PARA WIDOWS XP.

TECNOLOGÍAS DE LA INFORMACIÓN. La sociedad de la información y las nuevas tecnologías.

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

WINDOWS : COPIAS DE SEGURIDAD

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

Roberto Quejido Cañamero

by Tim Tran:

Manual de uso de correo por webmail

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO

EL EMU8086 Y EL MICROPROCESADOR 8086.

1. SISTEMAS DIGITALES

SISTEMA DE REGISTRO DE TRANSACCIONES BURSATILES BAGSA MANUAL DE USUARIO

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

Carlos Castro Grande 1

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Escudo Movistar Guía Rápida de Instalación Para Windows

Módulo I - Word. Iniciar Word Finalizar Word Definición de elementos de pantalla Escribir texto en un documento El cursor...

V i s i t a V i r t u a l e n e l H o s p i t a l

Infraestructura Tecnológica. Sesión 8: Configurar y administrar almacenamiento virtual

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

Instructivo para ingresar a la Demo On-Line de Manager2 GO!

Lenguajes de Programación

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Manual Word Correspondencia

Control de accesos autónomo por huella dactilar

5.2 Plataforma de Desarrollo Para la Interfaz de Usuario

SISTEMAS DE NUMERACIÓN

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Códigos Binarios de Representación de Datos

Access Control. Manual de Usuario

Unidad Didáctica. Códigos Binarios

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

El ordenador es un dispositivo electrónico que permite almacenar información, modificarla y generar nueva información.

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

SOFTWARE INVENTARIO MOBILIARIO INSTITUCIONAL (SIMI v3.5)

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Manual para el administrador de cuentas personales o familiares

Manual del Usuario. Sistema de Help Desk

Introducción a las redes de computadores

Edición de Ofertas Excel Manual de Usuario

TARIFAS DE VENTA Y DESCUENTOS

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Transcripción:

Digital II Documentación de las instrucciones INdg2, OUTdg2 y de los dispositivos mapeados en el espacio de E/S Departamento de Sistemas e Informática Escuela de Electrónica Facultad de Ciencias Exactas Ingeniería y Agrimensura Universidad Nacional de Rosario Esteban Almirón Andrés Capalbo José Luis Pepe Versión 2004

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 E. Almirón, A. Capalbo, J.L. Pepe 2-2

1 Introducción La cátedra de Digital II ha adoptado al Entorno de Desarrollo Integrado 1 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/O 2. 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. E. Almirón, A. Capalbo, J.L. Pepe 3-3

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:... E. Almirón, A. Capalbo, J.L. Pepe 4-4

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. E. Almirón, A. Capalbo, J.L. Pepe 5-5

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. E. Almirón, A. Capalbo, J.L. Pepe 6-6

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 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. AL 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 B C D E F 77h 7Ch 58h 5Eh 79h 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: E. Almirón, A. Capalbo, J.L. Pepe 7-7

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 E. Almirón, A. Capalbo, J.L. Pepe 8-8

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 E. Almirón, A. Capalbo, J.L. Pepe 9-9

Detalle: V/H DESP(*) Define la dirección de desplazamiento 1: Vertical 0: Horizontal 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 VEL Define la posición desde la que se comienza el movimiento 0: posición inicial 1: posición final del recorrido 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 ENA(***) REC Define el comportamiento al momento de alcanzar el final del recorrido. 0: se invierte el sentido (rebota) 1: se detiene el movimiento Habilita el funcionamiento del elemento 0: Deshabilitado 1: Habilitado 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. Detalle: F I X Y 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 E. Almirón, A. Capalbo, J.L. Pepe 10-10

I F X Y Indica si el elemento está en el inicio del recorrido 0: no está en el inicio 1: alcanzó el inicio Indica si el elemento está en el final del recorrido 0: no está en el final 1: alcanzó el final Posición inicial en el eje X 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? E. Almirón, A. Capalbo, J.L. Pepe 11-11

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 E. Almirón, A. Capalbo, J.L. Pepe 12-12

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,, etc., que evitan muchas líneas de código simplificando la lectura, pero no se encuentran disponibles en la biblioteca en cuestión. E. Almirón, A. Capalbo, J.L. Pepe 13-13

;****************************************************************** ;*** 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.code.startup 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$' PLOT_BORRAR print 35,10, msginfo PLOT_BORRAR print 30,10, msginfo1 PLOT_PLANTILLA1 PLOT_PLANTILLA2 ; MACRO para borrar la pantalla ; MACRO que imprime un texto ; MACRO que espera que se presione una tecla (disponible sólo en esta demo) ; MACRO que dibuja en pantalla la PLANTILLA1 ; MACRO que dibuja en pantalla la PLANTILLA2 E. Almirón, A. Capalbo, J.L. Pepe 14-14

PLOT_PLANTILLA3 PLOT_PLANTILLA4 PLOT_BORRAR print 25,10, msginfo2 PLOT_BORRAR ; MACRO que dibuja en pantalla la PLANTILLA3 ; MACRO que dibuja en pantalla la PLANTILLA4 ;CONFIGURACION INICIAL DE LOS MOTORES... mov ax,m1b mov dx,2+basemx outdg2 dx,ax mov ax,m1a mov dx,0+basemx outdg2 dx,ax testear: mov dx,2+basemx indg2 ax,dx mov dx,0200ah indg2 ax,dx test ax,1 jnz END_MOT jmp testear ; AX tiene la configuracion del MOTORx ; se apunta al registro de MOTOR1 ; se escribe en MOTOR ; AX tiene la configuracion del MOTORx ; se apunta al registro de MOTOR1 ; se escribe en MOTOR1 ; se apunta al registro de salida de MOTOR1 ; se lee en MOTOR1, AX contiene el estado de los fin de carrera ; se apunta a KEY_PRESS ; se lee el estado de la tecla (y se guarda en AX) ; si AX==1 significa que se presiono una tecla END_MOT: PLOT_BORRAR print 5,10, msginfo3 mov dx, 02000h indg2 al,dx mov dx, 02006h outdg2 dx,al ; se apunta a TECL_HEX ; se lee un dato hexadecimal ; se apunta a DISP_BIN ; se muestra el dato contenido en AL E. Almirón, A. Capalbo, J.L. Pepe 15-15

mov dx, 02008h outdg2 dx,al PLOT_BORRAR print 5,10, msginfo4 mov ax,07f58h mov dx, 02004h outdg2 dx,ax mov ax,'ok' mov dx, 02002h outdg2 dx,ax PLOT_BORRAR print 25,10, msginfo5 mov al, P2_LONGITUD mov dx, 02008h outdg2 dx,al ; se apunta a DISP_BCD ; se muestra el dato contenido en AL ; se apunta a DISP_7SEG ; se muestra el dato contenido en AL ; se apunta a DISP_ASCII ; se muestra el dato contenido en AL ; MACRO que imprime un texto ; MACRO que espera que se presione una tecla ; se accede a una variable de la BDDg2 ; se apunta a DISP_BCD ; se muestra el dato contenido en AL.exit end E. Almirón, A. Capalbo, J.L. Pepe 16-16

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. E. Almirón, A. Capalbo, J.L. Pepe 17-17