L3 5 Programación  de Code2

L3 5 Programación de Code2

Introducción a la Programación en Code2

Estructura de Computadores

  • La lección 35 se centra en la estructura y funcionamiento de un computador, continuando con el lenguaje máquina del computador didáctico Code2 presentado anteriormente.

Proceso de Creación de un Programa

  • Se introduce una metodología común para desarrollar programas, que incluye varios pasos esenciales.

Pasos Clave:

  1. Planteamiento del Problema: Comprender detalladamente lo que se necesita hacer.
  1. Análisis del Problema: Explorar alternativas y determinar los datos necesarios (entrada/salida).
  1. Diseño del Algoritmo: Crear un algoritmo que resuelva el problema planteado.
  1. Programación: Implementar el algoritmo en un lenguaje adecuado y traducirlo a código máquina.
  1. Prueba y Optimización: Verificar la eficiencia y funcionalidad del programa, buscando mejoras si es necesario.

Ejemplo Práctico

  • Se busca realizar un ejercicio práctico donde se suman dos posiciones de memoria (0040 y 0080), almacenando el resultado en 00C0.

Desglose del Ejercicio:

  • La única instrucción disponible para sumar es entre registros; por lo tanto, se deben cargar los valores desde las posiciones de memoria a registros antes de realizar la suma.
  • Se utilizarán los registros R3, R4 y R5 para almacenar los operandos y el resultado respectivamente.

Organigrama del Programa

  • Se presenta un organigrama que ilustra cómo se llevará a cabo la suma utilizando las instrucciones disponibles.

Consideraciones sobre Memoria:

  • El programador puede elegir cualquier dirección de memoria para cargar su programa, pero debe evitar invadir áreas reservadas para datos existentes (0040, 0080, 00C0).

Implementación de un Programa en Mnemónico

Carga y Suma de Datos en Memoria

  • Se inicia el programa configurando la dirección 0015 en el contador de programa mediante una instrucción de salto. El primer paso es cargar el valor 00 en el registro Rd para realizar un direccionamiento directo.
  • Se utiliza la instrucción lli (carga inmediata baja) para cargar 00 en Rd. Luego, se carga el primer sumando desde la memoria (posición 0040) al registro r3.
  • Para el segundo sumando, se carga desde la dirección 0080 a r4. La operación de suma se realiza con adds R5 r3 r4, almacenando el resultado en R5.
  • El contenido del registro R5 se almacena en la posición de memoria 00 c0 utilizando la instrucción Store. El programa concluye con una instrucción Halt.

Conversión a Código Máquina

  • Se convierte el programa mnemónico a código máquina. La instrucción lli tiene un código de operación 2, seguido por los registros y valores correspondientes.
  • La carga del contenido de memoria (0040 y 0080) se realiza con instrucciones que tienen códigos específicos para cada operación.
  • La suma tiene un código de operación 6, donde se especifican los registros involucrados: R5 para almacenar el resultado, R3 como primer sumando y R4 como segundo sumando.
  • Finalmente, se utiliza la instrucción alm para almacenar el resultado en memoria (dirección c0), finalizando con una instrucción que no afecta a la unidad de control.

Ejemplo Complejo: Sumar Elementos de Tablas

  • Se plantea un nuevo problema: sumar elementos uno a uno entre dos tablas t1 y t2, almacenando los resultados en otra tabla t3. Las direcciones iniciales son: t1 = 0040, t2 = 0080 y t3 = 00 c0.
  • Cada tabla contiene una longitud de 32 elementos (20 decimal). Esto implica repetir las instrucciones anteriores para sumar datos y almacenar resultados sucesivamente.
  • Las instrucciones deben repetirse 32 veces; sin embargo, es más eficiente utilizar un bucle que itere sobre las posiciones adecuadas dentro de las tablas.

Descripción del Algoritmo

  • El algoritmo puede describirse mediante pseudocódigo u organigrama. Comienza indicando explícitamente el punto inicial del programa e inicializando variables necesarias como parámetros.
  • Los valores iniciales incluyen constantes como c (valor base), número total de elementos y un índice que recorre las tablas. Estos valores serán asignados a registros específicos durante la ejecución del programa.

Proceso de Suma de Elementos en Tablas

Lectura y Suma de Datos

  • Se inicia el proceso leyendo un dato de la tabla T1, que se almacena en el registro R3. Luego, se lee un dato de la tabla T2 y se lleva a R4.
  • Los valores almacenados en R3 y R4 se suman, y el resultado se guarda en el registro R5 para posteriormente llevarlo a la tabla T3.

Iteración sobre los Elementos

  • Para procesar todos los elementos, se incrementa el índice I (inicialmente 0) mediante la instrucción I = I + 1.
  • Se verifica si I ha alcanzado el total de elementos (nt). Si no es igual a nt, se procede a leer el siguiente elemento de T1.

Control del Flujo del Programa

  • Si Z es diferente de 1, significa que aún hay más datos por procesar; si Z es igual a 1, indica que hemos llegado al final del programa.
  • El algoritmo está representado tanto en pseudocódigo como en un organigrama que ilustra claramente cada paso del proceso.

Asignación de Registros

  • Se utiliza direccionamiento indexado donde Rd actúa como registro índice. Los registros toman valores desde 0 hasta 32.
  • Al alcanzar un valor de I igual a 20, concluye el programa. Las variables deben estar asignadas a registros para su uso eficiente.

Codificación del Algoritmo

  • En lenguaje máquina, todas las operaciones requieren registros. Por ejemplo, nt (número total de elementos), debe ser introducido en r2.

Proceso de Carga y Suma en Lenguaje Máquina

Carga de Registros y Suma

  • Se carga el valor de rc a Rd, lo que permite llevar el resultado deseado.
  • Se cargan los elementos de las tablas T1 y T2 en los registros r3 y r4, respectivamente, para realizar la suma.
  • Antes del salto a la instrucción final del programa, se carga la dirección 0020 en Rd.

Instrucciones de Salto y Finalización

  • Si no se cumple la condición para finalizar el programa, se debe saltar a la dirección 0015 mediante una instrucción de salto incondicional.
  • La codificación del programa en lenguaje máquina incluye instrucciones como lli r, con un código de operación específico.

Detalles sobre Instrucciones

  • La instrucción de sumar tiene un código de operación 6, donde se especifican los registros involucrados.
  • Las instrucciones para cargar valores en los registros tienen códigos específicos que deben ser seguidos.

Metodología para Programación

  • El programa suma dos tablas de 32 elementos ubicadas desde posiciones específicas en memoria.
  • Se describe un procedimiento metodológico que incluye: descripción del algoritmo, asignación de memoria, redacción del programa mnemónico y su codificación.

Documentación y Símbolos Utilizados

  • Es importante documentar el programa con comentarios claros para facilitar su comprensión.
  • Los símbolos utilizados incluyen círculos para inicio/final, rectángulos para asignaciones, romboides para entradas/salidas y hexágonos para condiciones.

Resumen Final

Principios del Arte de Programar

Descomposición de Funciones

  • El arte de programar implica la habilidad de descomponer funciones descritas en un algoritmo, enfocándose en las instrucciones que componen el repertorio.

Direccionamiento Indexado

Video description

Más información acerca de mis videoclases sobre Fundamentos de Informática puede verse en: http://atc.ugr.es/pages/personal/propia/alberto_prieto/videoclases Lección correspondiente a la serie Fundamentos de Informática realizada por Alberto Prieto Espinosa, catedrático del Dto. de Arquitectura y Tecnología de Computadores de la Universidad de Granada. El material básico procede de los textos "Introducción a la Informática", A.Prieto, A.Lloris, J.C.Torres, McGraw-Hill, 2006 y "Conceptos de Informática", A.Prieto, B.Prieto, Serie Schaum, McGrawHill, 2005. En estos textos se incluyen numerosos ejercicios y problemas, algunos de ellos resueltos.