Digital II. Departamento de Sistemas e Informática. Escuela de Electrónica. Facultad de Ciencias Exactas Ingeniería y Agrimensura

Documentos relacionados
Conceptos de Arquitectura de Computadoras Curso 2015

PRÁCTICO N o 7. Lenguaje de Diseño (Tercera Parte): Modularización. Ejercicio 1: Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6:

Este apunte contiene los problemas para el segundo práctico de Digital II.

Ejercicios de programación en C. ET1032 Informática Industrial

PRÓLOGO Este apunte contiene los problemas para el segundo práctico de Digital II.

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

D L M M J V S

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Estructura de Computadores (EdC-ISW-G1) Boletín 4: Programación AVR

Repaso concepto de programa

Arquitectura Interna del 8088

Examen de teoría (5 puntos)

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Realizar la siguiente suma y expresar el resultado en hexadecimal: Teniendo los 3 valores expresados en la misma base, podemos realizar la suma:

Trabajo Práctico 5 Estructura Repetitiva

Examen de teoría (5 puntos)

UNIVERSIDAD DON BOSCO TECNICO EN INGENIERIA EN COMPUTACION

INFORMATICA II PRIMER PARCIAL

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

ARQUITECTURA INTERNA DEL µp8086

HOJA DE PROBLEMAS 6: MÓDULOS COMBINACIONALES BÁSICOS

PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88

NÚMEROS UTILIZADOS EN ELECTRÓNICA DIGITAL

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2017

Examen de S.E.T.I. 1er curso de Ingeniería Electrónica 26 de junio de 2001

Práctico Nº 7 Tema: Lenguaje de Diseño (Parte 3). Subalgoritmos

Examen escrito de Programación 1

Examen de teoría (5 puntos)

Arquitectura (Procesador familia 80 x 86 )

PROCESAMIENTO DE LOS DATOS. Procesamiento de datos ascii a binario y de binario a ascii

Examen escrito de Programación 1

FUNDAMENTOS DE COMPUTADORES I

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Universidad Carlos III de Madrid Electrónica Digital Ejercicios

Ensamblador del Pentium

INSTITUTO TECNOLÓGICO DE CHIHUAHUA II ARQUITECTURA DE COMPUTADORAS MAESTRO: ERNESTO LEAL ALUMNOS: LUIS CARLOS BARRERA ORTIZ STHEPANIE FLORES GUILLEN

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

2.2 CREAR TABLAS Y GRÁFICOS.

PRÁCTICA. Estructura de Computadores Grado en Ingeniería Informática Estudios de Informática, Multimedia y Telecomunicación

Interrupciones por hardware Interrupciones por so?ware

Representación de datos y aritmética básica en sistemas digitales

Ud debe controlar el flujo de información en una interface paralela CENTRONIX, que opera a 60 KB/seg.

Tema 4. Fundamentos del ensamblador

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

HOJA DE PROBLEMAS 6: MÓDULOS COMBINACIONALES BÁSICOS

Procesador de Textos MS Word

Pseudocódigo. La forma en que se escribe un pseudocódigo es la siguiente:

CUESTIÓN 1 (2.5 puntos)

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

Departamento de Sistemas e Informática

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL

Tema 1. Fundamentos del lenguaje ensamblador

Tema 5.1: Presentación de datos en pantalla

Capítulo. 4-1 Ecuaciones lineales simultáneas 4-2 Ecuaciones de grado más alto 4-3 Cálculos de resolución 4-4 Qué hacer cuando se produce un error

TEMA 1: Conceptos generales. 1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y hexadecimal.

Prof. María Alejandra Quintero. Informática Año

Práctica de Estructura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2010/2011

Criba de Eratóstenes.

Práctica 3 - Arquitectura del CPU

Práctica 2 - Manejo de estructuras de datos y punteros

Tema 2. Sistemas de representación de la información

Representación de datos y aritmética básica en sistemas digitales

Capítulo 1: Conceptos básicos de informática

PRÁCTICA #7 -- Tipos de Datos Estructurados

INFORMATICA I EJERCICIOS PROPUESTOS Buscar en el diccionario Qué es INFORMÁTICA?, Qué es

Práctica 2: Estructuras/Uniones/Campos de bits

Registros de direcciones de 32 bits A0 a A7 (A7 puntero de pila SP)

Manual del Usuario - Módulo de Aplicaciones

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

BOLETIN 7: Subsistemas secuenciales

LÓGICA SECUENCIAL Y COMBINATORIA

Nb = an b n +a n-1b n-1 +a n-2 b n-2 +.+a 2b 2 +a1b 1 +a0b 0 + a -1b -1 +a-2b a-kb -k

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Fórmulas Matriciales con OpenOffice.org Calc 3

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones

Organización de Computadoras Apunte 1: Sistemas de Numeración: Sistemas Enteros y Punto Fijo

Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017

INSTRUCTIVO DE INSTALACION

EJEMPLOS EN ENSAMBLADOR

COMPUTACIÓN GUÍA DE TRABAJOS PRÁCTICOS NRO. 1

Problemas sobre instrucciones estructuradas

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Ejercicio * N N X X X X X X X X X X X X X X X X X X X X

UNIVERSIDAD NACIONAL DEL CALLAO

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:

PRÁCTICA MANEJO INTERNO DE DATOS. Objetivos

Universidad de la República Comisión Sectorial de Extensión y Actividades en el Medio. Instructivo para completar formularios electrónicos

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Organización de Computadoras. Clase 6

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Junio de 2015

Algoritmos. Libro en línea 3/8/18. Ing. Roberto Martínez Román - 1 RESOLVIENDO PROBLEMAS. Cuál es el objetivo del libro?

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

Transcripción:

Digital II 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

1 Tabla de Contenidos 1 Tabla de Contenidos 2 2 Introducción 3 21 Problemas con MOTOR X 3 3 Problemas 3 31 Problema Nº 1 3 32 Problema Nº 2 4 33 Problema Nº 3 4 34 Problema Nº 4 5 35 Problema Nº 5 6 36 Problema Nº 6 6 37 Problema Nº 7 7 38 Problema Nº 8 7 39 Problema Nº 9 7 310 Problema Nº 10 8 311 Problema Nº 11 8 312 Problema Nº 12 9 313 Problema Nº 13 9 314 Problema Nº 14 9 315 Problema Nº 1510 316 Problema Nº 1610 317 Problema Nº 1710 318 Prob Ejemplo11 E Almirón, A Capalbo, JL Pepe 2-2

2 Introducción En esta práctica se hace uso de los Dispositivos Virtuales mapeados en el espacio de entrada salida (DVIO) y de la Biblioteca de Datos de Digital II (BDDg2) Por lo tanto para la resolución de estos problemas será necesaria la documentación de dichos dispositivos y para poder ejecutar los programas será preciso incluir en el proyecto la librería mencionada Los enunciados de los problemas plantean la resolución de los mismos en etapas, de forma de definir procedimientos con funciones y requisitos particulares Por lo tanto, se pide respetarlos, ya que ello llevará a una resolución ordenada de los mismos y permitirá que se apliquen los temas que se pretenden evaluar en el ejercicio La complejidad de los problemas de esta práctica es similar a la de los exámenes finales, por lo que se recomienda resolver completamente esta plantilla como preparación para el examen final Excepto que se indique lo contrario, a) Los problemas deberán funcionar correctamente para cualquier valor que puedan adoptar los datos dentro del formato especificado b) Los datos serán sin signo En el caso que el problema deje condiciones sin determinar el alumno deberá optar por la solución que crea más conveniente, indicando claramente cual fue la opción elegida En los problemas en los que sea necesario mostrar datos en la pantalla, y/o en aquellos en los que el alumno considere necesario detener la ejecución del programa hasta que se presione alguna tecla, utilizar el periférico mapeado en Entrada/Salida llamado Key_press 21 Problemas con MOTOR X Los elementos MOTORX son 4 dispositivos de I/O que emulan a unidades móviles que se desplazan (en la pantalla) con comportamiento configurable (ver apunte Documentación de las instrucciones INdg2, OUTdg2 y de los dispositivos mapeados en el espacio de E/S ) Supondremos distintas situaciones para hacer uso de los mismos, y para esto nos valdremos de plantillas, las cuales son macros definidas en BDDg2 que dibujan algún esquema en la pantalla de la PC Dicho esquema será utilizado para determinar el comportamiento de los elementos móviles en la pantalla 3 Problemas 31 Problema Nº 1 Escribir un programa en ASS que realice la siguiente transferencia de datos Los valores contenidos en la tabla de origen (P1_TABLA_DIR) deben ser interpretados como direcciones (offsets respecto al segmento de datos) de los datos a transferir Dichos datos deberán ser guardados consecutivamente en la tabla destino (TABLA_DEST) E Almirón, A Capalbo, JL Pepe 3-3

Ejemplo: P1_TABLA_DIR Dir1 Dir2 Dir3 Dir4 Dir1 Dato2 Dato1 Dato4 TABLA_DEST Dato1 Dato2 Dato3 Dato4 Dato3 Memoria El primer dato de P1_TABLA_DIR (Offset 1) indica el lugar de memoria donde se encuentra el valor del primer dato a transferir (Dato1) Dicho valor es el que se debe guardar en la primer posición de TABLA_DEST Ambas tablas se encuentran en el espacio de memoria del microprocesador La variable P1_LONGITUD es la que indicará el largo de P1_TABLA_DIR que es de tipo WORD, P1_LONGITUD es una variable tipo byte Tanto P1_TABLA_DIR y P1_LONGITUD se encuentran disponibles en la BDDG2 Los datos a transferir son de 8 bits, con lo cual TABLA_DEST deberá ser definida en forma correcta Los datos de TABLA_DEST deben ser interpretados como caracteres ASCII, y deberán mostrarse por pantalla uno por uno a medida que se van transfiriendo, utilizando (varias veces) el periférico Disp_ASCII definido en dentro de los DVIO 32 Problema Nº 2 a) Se pide escribir un procedimiento que tome dos números de la pila, x e y, y obtenga el siguiente número z=(x+y) 2 Dicho procedimiento debe retornar el resultado (z) utilizando los registros del microprocesador Tanto x como y son de tipo byte b) Se dispone de dos tablas ya definidas en el espacio de memoria P2_TABLAX y P2_TABLAY Ambas contienen datos tipo byte y son de igual longitud Dicha longitud se encuentra especificada en la variable P2_LONGITUD, que es de tipo byte Se pide, escribir un programa que realice la operación anterior, tomando como x a cada uno de los elementos de P2_TABLAX y como y a los de P2_TABLAY Para ello se deben guardar x e y en la pila y llamar a la subrutina realizada en el punto a) Se pide además, que los resultados se guarden en otra tabla del espacio de memoria llamada TABLAZ, para la cual se deberá reservar el espacio suficiente P2_TABLAX, P2_TABLAY y P2_LONGITUD se encuentran disponibles en la BDDG2, cada resultado debe mostrarse en pantalla (primero parte baja y después alta) por Disp_BIN (definido en dentro de los DVIO) antes de escribir en TABLAZ 33 Problema Nº 3 Considere dos tablas, una llamada P3_DECENA y la otra P3_UNIDAD cuyos elementos son de tipo byte y contienen números decimales codificados en ASCII Se pide: a) Realizar un procedimiento (ASCII2BIN) que reciba en un registro del procesador un número decimal codificado en ASCII y devuelva a través de la pila el correspondiente valor binario E Almirón, A Capalbo, JL Pepe 4-4

b) Realizar un procedimiento (CONVERT) que tome desde la pila dos números (en binario), considerando a uno de ellos como unidad y al otro como decena y devuelva en un registro del procesador, el correspondiente valor binario resultante c) Realizar el programa principal que tome valores de cada una de las tablas (P3_DECENA y P3_UNIDAD) y de a pares los convierta en valores binarios que almacene en una tercer tabla, para la cual es necesario reservar espacio Antes de guardar cada dato en la tabla se deberá mostrar en pantalla el dato obtenido utilizando el Disp_BCD (definido en dentro de los DVIO) Las tablas P3_DECENA y P3_UNIDAD son de largo P3_LONGITUD que es una variable tipo byte y se encuentran disponibles en la BDDG2 Nota: la tabla siguiente muestra la representación ASCII de los números decimales Decimal 0 30h 1 31h 2 32h 3 33h 4 34h 5 35h 6 36h 7 37h 8 38h 9 39h Codificación ASCII Ejemplo: Tablas definidas en memoria: 3x 3x 34 35 3x 3x Procedimiento ASCII2BIN devuelve 4 y 5 Luego el procedimiento CONVERT devuelve 45 y este valor se graba en la otra tabla 34 Problema Nº 4 a) Escribir una subrutina (PROM_MOV) que realice el promedio de 5 datos tipo byte y devuelva dicho promedio en un registro del microprocesador Los datos de entrada deberán ser pasados a la subrutina utilizando la pila b) Utilizar la subrutina anterior para calcular los promedios de los datos contenidos en la tabla de entrada (P4_TBL_ENTR tipo byte) de la siguiente forma Primero se debe calcular el promedio de los 5 primeros datos, después el promedio del 2 do, 3 ro, 4 to, 5 to y 6 to dato y continuar de esa forma hasta finalizar de explorar a P4_TBL_ENTR (siempre tomando de a 5 datos) E Almirón, A Capalbo, JL Pepe 5-5

Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 Dato(n-4) Dato(n-3) Dato(n-2) Dato(n-1) Dato n Primer promedio Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 Dato(n-4) Dato(n-3) Dato(n-2) Dato(n-1) Dato n Segundo promedio Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 Dato(n-4) Dato(n-3) Dato(n-2) Dato(n-1) Dato n Último promedio Los promedios obtenidos deben almacenarse en otra tabla (TBL_RES), con la excepción de que si el promedio es mayor a (100)d el programa deberá guardar, en su lugar, un valor ingresado por el usuario Para ingresar dicho valor utilizar el Tecl_HEX definido en dentro de los DVIO P4_TBL_ENTR se encuentra disponible en la BDDg2 y su largo es P3_LONGITUD que es una variable tipo byte definida en la misma biblioteca Nota: se asegura que el promedio es menor a 65535 en todos los casos 35 Problema Nº 5 a) Se pide escribir un procedimiento que se llame SUMA, el mismo debe realizar la suma de dos datos tipo word sin signo que se reciben en los registros AX y DX El resultado de esta operación, que debe contemplar cualquier valor en los datos de entrada, debe devolverse al programa principal por valor(por registro) b) Escribir un programa que utilice el procedimiento SUMA y efectúe la suma de los datos contenidos en la tabla (P4_TBL_ENTR) tomándolos de a pares Los resultados deberán almacenarse en la tabla TABLA_SALIDA La tabla de entrada ya se encuentra definida (en la BDDg2), contiene 20 datos tipo word y debe interpretarse de la siguiente forma: La tabla TABLA_SALIDA almacenará el resultado de la suma de los OPERANDOS A+B y deberá definirse adecuadamente 20 elementos OPERANDO1 A OPERANDO1 B OPERANDO10 A OPERANDO10 B Luego, el programa debe borrar (grabar ceros) en aquellas posiciones que contienen datos mayores a 65535 Además deberá mostrar por medio del Disp_BIN cada una de las posiciones de la TABLA_SALIDA, en la que se eliminó un dato 36 Problema Nº 6 a) Escribir un procedimiento (llamado MULCOMP) que calcule el producto de dos números complejos (N1 y N2) con el siguiente formato N k = (a + j b), dónde a y b son números (reales) de 8 bits, encontrándose en el byte menos significativo la parte imaginaria (b) y en el byte más significativo la parte real del número (a) El procedimiento debe recibir dichos números (N1 y N2) por pila y debe retornar los resultados en el registro BX (con el mismo formato que los datos de entrada) Suponga que los resultados no exceden el tamaño del formato solicitado) E Almirón, A Capalbo, JL Pepe 6-6

b) Se encuentran definidas en memoria dos tablas P6_TBL_N1 y P6_TBL_N2, de tipo word La cantidad de ítems de ambas tablas es igual y está dado por variable P6_LARGO que es de tipo byte Se pide entonces, escribir un programa principal que aplique el procedimiento MULCOMP sobre todos los datos de las tablas P6_TBL_N1 y P6_TBL_N2 El resultado (número complejo) deberá almacenarse con el mismo formato (R = (a + j b)) en una tercer tabla llamada TBL_RES y para la cual será necesario reservar el espacio adecuado Una vez finalizados los cálculos mostrar por medio del Disp_BCD (de los DVIO) sólo los resultados que sean reales (b=0) 37 Problema Nº 7 a) Escribir un procedimiento (llamado CUADRADO) que calcule el cuadrado de un número de 8 bits El procedimiento debe recibir dicho número en el registro BL y retornar el resultado en el registro BX b) Escribir otro procedimiento (llamado SUM) que haciendo uso de CUADRADO realice la siguiente operación: Resultado = Dato1 + CUADRADO(Dato2), Dato1 es de tipo word y Dato2 es de tipo byte Ambos datos deberán pasarse al procedimiento haciendo uso de la pila, y el Resultado también deberá retornarse por medio de la pila c) Escribir un programa principal que aplique el procedimiento SUM la cantidad de veces indicada por la variable P7_LARGO (tipo byte) guardando los resultados en una tercer tabla que deberá definirse adecuadamente (llamada TBL_RESULT) Como Dato1 deberán usarse los datos almacenados en la tabla tipo Word P7_TBL_DATO1 y como Dato2 deberán usarse los datos ingresados por el usuario por medio del Tecl_HEX definido en los DVIO 38 Problema Nº 8 a) Escribir un procedimiento (llamado SGN) que calcule el signo de un número de 16 bits El procedimiento debe recibir dicho número en el registro AX y retornar en el mismo registro el dato: +1 en el caso que el número sea positivo, -1 si el número es negativo y 0 si el número es cero b) Escribir un segundo procedimiento (llamado SUM_REST) que haciendo uso de SGN realice la siguiente operación: RESULTADO = DATO + SGN(DATO) El dato de entrada (DATO) es tipo sword y deberá pasarse al procedimiento haciendo uso de la pila, el resultado también deberá retornarse por medio de la pila c) Escribir el programa principal que aplique el procedimiento SUM_REST sobre todos los datos de la tabla P8_TBL_DATO La misma es tipo sword y la cantidad de elementos que posee se encuentra definida en la variable P8_LARGO (tipo byte) Cada resultado parcial deberá guardarse en la misma posición de memoria que el dato original En caso que RESULTADO ocupe más que 16 bits no se guardará nada en la posición correspondiente, es decir, quedará el dato original y deberá mostrarse éste por medio del Disp_BIN, que es parte de los DVIO Nota: TBL_DATO y LARGO se encuentran definidas en la BDDG2 39 Problema Nº 9 a) Realizar un procedimiento llamado CALC que evalúe la siguiente la función: 2 y f ( x, y) = y + x y devuelva el resultado en registros del procesador Como parámetros de entrada el procedimiento recibe la dirección en memoria de ambos operandos, esto es, en BX el E Almirón, A Capalbo, JL Pepe 7-7

desplazamiento de x y en BP el desplazamiento de y, ambos respecto del segmento de datos Los datos x e y son tipo byte b) A continuación realizar un programa principal que, haciendo uso del procedimiento anterior, realice el mencionado cálculo a partir de los datos contenidos en dos tablas en memoria P9_TABLAX contiene los valores x, y P9_TABLAY contiene los valores y Las tablas se encuentran definidas una a continuación de la otra en la BDDg2 Las mismas contienen 10 datos tipo byte (positivos) cada una Los resultados deberán guardarse en una tercera tabla (TABLA_FX) que deberá definirse a continuación de P9_TABLAY c) Por último, se deberá barrer la TABLA_FX, y si alguno de los resultado obtenidos resulta menor a 100h deberá borrarse (borrar grabar el dato 0h), mostrándolo previamente haciendo uso del disp_ascii (sin ningún tipo de conversión previa) 310 Problema Nº 10 a) Realizar un procedimiento llamado CALC que evalúe la siguiente la función: y f ( x, y) = x 2 + x y devuelva el resultado en registros del procesador Como parámetros de entrada el procedimiento recibe la dirección en memoria de ambos operandos, esto es, en BX el desplazamiento de y y en BP el desplazamiento de x, ambos respecto del segmento de datos Los datos x e y son tipo byte b) A continuación realizar un programa principal que, haciendo uso del procedimiento anterior, realice el mencionado cálculo a partir de los datos contenidos en dos tablas en memoria P10_TABLAX contiene los valores x, y P10_TABLAY contiene los valores y Las tablas se encuentran definidas una a continuación de la otra en la BDDg2 Las mismas contienen 12 datos tipo byte (positivos) cada una Los resultados deberán guardarse en una tercera tabla (TABLA_FX) que debe definirse a continuación de P10_TABLAY c) Por último, se deberá barrer la TABLA_FX, y si alguno de los resultado obtenidos resulta menor a 150h deberá borrarse (borrar grabar el dato 0h), mostrándolo previamente haciendo uso del Disp_ASCII (sin ningún tipo de conversión previa) 311 Problema Nº 11 Teniendo en cuenta que se encuentra definida la tabla P11_TBL_DATOS con datos tipo word y que su longitud se encuentra especificada a través de la variable P11_LARGO (de tipo byte y definida en la BDDg2): a) Escribir un procedimiento, llamado PROME, que calcule el promedio de una X cantidad de elementos consecutivos comenzando desde la posición INI i INI = + X 1 PR = dato i X i= INI El procedimiento debe recibir X (tipo byte) e INI (offset del primer dato respecto del segmento de datos a partir del cual empezar a operar) por pila y retornar PR también por pila b) Escriba un programa principal que utilice PROME para encontrar el primer conjunto de 15 datos cuyo promedio sea mayor que (2000)d Realice la búsqueda sobre la tabla P11_TBL_DATOS Tener en cuenta la longitud máxima de la tabla (P11_LARGO) para que PROME no intente leer datos incorrectos c) Mostrar por medio del disp_bcd el offset del último dato del conjunto encontrado Escribir en la dirección siguiente al mismo el valor del promedio obtenido E Almirón, A Capalbo, JL Pepe 8-8

312 Problema Nº 12 a) Escribir un procedimiento, llamado DECO, que reciba en el registro DL un dato de 8 bits y realice las siguientes operaciones: - Negar los cuatro bits más significativos se - Si el número que forman los cuatro bits menos significativos es menor que (10)d se grabarán en los mismos todos CEROS y si es mayor o igual a (10)d se grabarán en los mismos todos UNOS El resultado será devuelto al programa principal en el registro AL b) Escribir el programa principal que haga uso del procedimiento DECO y lo aplique sobre datos (tipo byte) que el usuario vaya ingresando mediante el Tecl_HEX disponible entre los DVIO La cantidad de datos a ingresar estará definida por la variable P12_CANTIDAD (variable tipo byte) Cada resultado obtenido se guardará en una tabla DESTINO que deberá ser correctamente definida c) Una vez completada la tabla DESTINO, deben mostrarse todos los datos calculados anteriormente utilizando el Displ_BCD disponible entre los DVIO 313 Problema Nº 13 a) Escribir un procedimiento, llamado REST32, que realice la resta de dos números de 32 bits (DATO1 y DATO2) de la siguiente forma: RES = DATO2 DATO1 Los números (DATO1 y DATO2) deberán ser pasados al procedimiento utilizando la pila y el resultado (RES) deberá ser devuelto al programa principal de la misma forma b) Escribir un programa principal que haga uso de REST32 y calcule la diferencia de los datos almacenados en una tabla ya definida (P13_TBL_ORIG), la cual contiene 20 elementos de 32 bits cada uno ordenados de la siguiente forma: DATO1 DATO2 DATO1 DATO2 El programa principal debe ir chequeando cada resultado, y en el caso que alguno sea igual a cero se deberá terminar el programa sin realizar ninguna otra acción Mientras esto no ocurra, el resultado (RES) se debe ir guardado en otra tabla (TBL_RES), la cual deberá ser previamente definida en forma adecuada c) A medida que se van obteniendo, los resultados deben mostrarse haciendo uso (repetido) del Disp_7SEG, presentando primero el byte más significativo y luego el menos significativo de cada resultado Para esto se pide escribir un procedimiento (HEX2SEG7) que convierta un dígito hexadecimal en un dato (tipo word) que lo represente en el formato de 7 segmentos según se lo define en los DVIO 314 Problema Nº 14 Haciendo uso de los dispositivos MOTORX y de la PLANTILLA1 que esquematiza un cruce de calles escribir un programa en Assembler que realice lo siguiente: a) Defina un MOTOR1 que se desplace de izquierda a derecha sin tocar los límites de la calle y circulando a 3era velocidad, cuando alcance el final de la pantalla deberá comenzar otra vez desde la derecha (retornar por el mismo camino) b) Defina un MOTOR2 que se desplace desde abajo hacia arriba sin tocar los limites de la calle y circulando en 4ta velocidad, Plantilla 1 E Almirón, A Capalbo, JL Pepe 9-9

cuando alcance el final de la pantalla deberá comenzar desde abajo otra vez En el caso que MOTOR1 y MOTOR2 lleguen simultáneamente al cruce de calles (colisión) los motores deberán detenerse en dicho punto El programa finalizará cuando se presione cualquier tecla 315 Problema Nº 15 Haciendo uso de los dispositivos MOTORX y de la PLANTILLA2 que esquematiza un cruce de calles hacer un programa en Assembler que haga lo siguiente: a) Defina un MOTOR1 que se desplace de derecha a izquierda sin tocar los límites de la calle y circulando a 4era velocidad, cuando alcance el final de la pantalla deberá comenzar otra vez desde la izquierda (retornar por el mismo camino) b) Defina un MOTOR2 que se desplace de arriba hacia abajo sin tocar los limites de la calle y circulando en 3ta velocidad cuando alcance el final de la pantalla deberá cambiar comenzar desde arriba otra vez MOTOR1 y MOTOR2 no deben colisionar en el cruce de calles En todos los casos los MOTORX deben circular en 1era velocidad en el cruce de calles El programa finalizará cuando se presione cualquier tecla 316 Problema Nº 16 Haciendo uso de los dispositivos MOTORX y de la PLANTILLA3 que esquematiza un conjunto de cintas transportadoras hacer un programa en assembler que haga lo siguiente: a) Defina un MOTORx por cada segmento de cinta definido por la plantilla (4 en total) b) Las cintas transportadoras deben funcionar sincronizadas, comenzando desde el extremo izquierdo con MOTOR1, al llegar al final de su segmento debe comenzar a moverse MOTOR2 (y desaparecer MOTOR1) y así sucesivamente hasta alcanzar el último tramo de la cinta c) Cuando MOTOR4 alcance el final de su recorrido debe comenzar el ciclo desde el primer tramo de cinta d) En el último tramo MOTOR4 debe desplazarse primero hacia abajo, y en la siguiente secuencia debe desplazarse hacia arriba y así sucesivamente El programa finalizará cuando se presione cualquier tecla 317 Problema Nº 17 Haciendo uso de los dispositivos MOTORx y de la PLANTILLA4 que esquematiza un conjunto de cintas transportadoras hacer un programa en assembler que haga lo siguiente: a) Defina un MOTORx por cada segmento de cinta definido por la plantilla (4 en total) b) Las cintas transportadoras deben funcionar sincronizadas, comenzando desde el extremo derecho con MOTOR1, al llegar al final de su segmento debe comenzar a moverse MOTOR2 (y desaparecer MOTOR1) y así sucesivamente hasta alcanzar el último tramo de la cinta c) Cuando MOTOR4 o MOTOR3 alcancen el final de su recorrido se debe comenzar el ciclo desde el primer tramo de cinta Plantilla 2 Plantilla 3 Plantilla 4 E Almirón, A Capalbo, JL Pepe 10-10

d) En el tramo de MOTOR3 debe desplazarse primero hacia la izquierda, y en la siguiente secuencia debe desplazarse hacia la derecha y así sucesivamente El programa finalizará cuando se presione cualquier tecla 318 Prob Ejemplo Haciendo uso de los dispositivos MOTORX y de la PLANTILLAx que esquematiza un cruce de calles hacer un programa en assembler que haga lo siguiente: a) Defina un MOTOR1 que se desplace de derecha a izquierda sin tocar los límites de la calle y circulando a 1era velocidad, cuando alcance el final de la pantalla deberá comenzar otra vez desde la izquierda (retornar por la mano que va en sentido contrario) b) Defina un MOTOR2 que se desplace de arriba hacia abajo sin Plantilla 5 tocar los limites de la calle y circulando en 3ta velocidad cuando alcance el final de la pantalla deberá cambiar comenzar desde arriba otra vez c) MOTOR1 y MOTOR2 no deben colisionar en el cruce de calles d) En todos los casos los MOTORx deben circular en 4ta velocidad en el cruce de calles El programa finalizará cuando se presione cualquier tecla E Almirón, A Capalbo, JL Pepe 11-11