fbpx
Wikipedia

Little man computer

El Little Man Computer (LMC, en inglés: "Computadora del hombre pequeño") es un modelo educativo de computadora, creado por el Dr. Stuart Madnick en 1965.[1]​ El LMC se utiliza normalmente en la enseñanza porque modela una computadora sencilla que utiliza la arquitectura de von Neumann, que tiene todas las características básicas de una computadora moderna. Puede ser programada con código máquina (aunque en lugar de usar un sistema binario, utiliza el decimal) o con código ensamblador.[2][3][4]

Arquitectura del sistema

El modelo LMC está basado en el concepto de un hombre pequeño encerrado en una habitación. En la habitación hay 100 cajas (memorias), numeradas del 0 al 99 y cada una puede contener una instrucción o dato de 3 dígitos (desde el 000 al 999). Además hay dos cajas al otro extremo etiquetadas ENTRADA y SALIDA que son utilizadas para recibir y enviar información.

En el centro de la habitación, existe una zona de trabajo que contiene una calculadora simple con dos funciones (suma y resta) denominada acumulador y un contador reprogramable denominado contador de programa. El Contador de Programa guarda la dirección de la próxima instrucción que el hombre pequeño va a realizar. Este contador de programa normalmente se incrementa en 1 después de que se ejecuta una instrucción, permitiéndole al hombre pequeño realizar su trabajo a lo largo del programa de manera secuencial.

Existen instrucciones de bifurcación que permiten realizar iteraciones (lazos) e incorporar al programa estructuras de programación condicionales. Colocando el contador de programa en una dirección de memoria no secuencial si se cumple una determinada condición (por lo general el valor almacenado en el acumulador es cero o positivo). Tal como establece la arquitectura de von Neumann, la memoria contiene tanto instrucciones como datos. Por lo tanto es preciso tener cuidado de detener el contador de programa antes de alcanzar una dirección de memoria que contenga datos o el hombrecillo intentará utilizarla como si fuera una instrucción. Para utilizar la LMC el usuario carga datos en las cajas y luego le indica al hombre pequeño que comience a trabajar, comenzando con la instrucción almacenada en la dirección de memoria (caja) cero. Restablecer el contador de Programa a cero hace que el programa comience nuevamente desde el principio.

Ciclo de ejecución

Para ejecutar un programa, el hombre pequeño realiza los siguientes pasos:

  1. Comprueba el contador de programa, que tiene un número de caja que contiene una instrucción de programa (por ejemplo, cero).
  2. Busca qué instrucción hay en la caja con ese número.
  3. Incrementa el contador de programa (de forma que contenga el número de caja de la siguiente instrucción).
  4. Decodifica la instrucción (esto incluye encontrar el número de la caja que contiene los datos con los que trabajará, por ejemplo, que diga que hay que obtener los datos de la caja 42).
  5. Recupera los datos de la caja con el número encontrado en el paso anterior (por ejemplo, almacena los datos de la caja 42 en el acumulador).
  6. Ejecuta la instrucción.
  7. Almacena los nuevos datos en la caja desde donde se recuperaron los datos antiguos.
  8. Repite el ciclo o para.

Comandos

Aunque el LMC sí refleja el funcionamiento real de los procesadores binarios, se eligió la simplicidad de los números decimales para minimizar la complejidad a los estudiantes, puesto que puede no resultar cómodo trabajar en un sistema binario o hexadecimal.

Instrucciones

Algunos simuladores LMC se programan utilizando directamente instrucciones numéricas de 3 dígitos y otros con códigos mnemotécnicos de 3 letras y etiquetas. En cualquier caso, el conjunto de instrucciones es deliberadamente muy limitado (normalmente unas diez instrucciones) para simplificar la comprensión. Cuando el LMC utiliza códigos mnemotécnicos y etiquetas, después, se convierten en instrucciones numéricas de 3 dígitos cuando se ensambla el programa. El primer dígito de una instrucción numérica representa el comando a ejecutar y los dos últimos dígitos representan la dirección de memoria de la caja correspondiente a este comando.

La tabla de abajo muestra un conjunto típico de instrucciones numéricas y los códigos mnemotécnicos equivalentes.

Instrucciones
Código numérico Código mnemotécnico Instrucción Descripción
1xx ADD ADD Suma el valor almacenado en la caja xx a cualquier valor que se encuentre actualmente en el acumulador (calculadora)
Nota: El contenido de la caja no cambia, y las acciones en el acumulador (calculadora) no están definidas para instrucciones de suma con resultados de más de 3 dígitos.
2xx SUB SUBTRACT Resta el valor almacenado en la caja xx de cualquier valor que se encuentre actualmente en el acumulador (calculadora).
Nota: El contenido de la caja no cambia, y las acciones en el acumulador no están definidas para instrucciones de resta con resultados negativos (pero, se establecerá un registro de estado negativo de forma que 8xx (BRP) se pueda utilizar correctamente).
3xx STA STORE Almacena el contenido del acumulador en la caja xx (destructivo).
Nota: El contenido del acumulador (calculadora) no se modifica (no destructivo), pero el contenido de la caja se sustituye independientemente de lo que hubiera antes (destructivo).
5xx LDA LOAD Carga el valor de la caja xx (no destructivo) y lo introduce en el acumulador (destructivo).
6xx BRA BRANCH (incondicional) Establece la dirección indicada (valor xx) en el contador de programa. Es decir, el valor xx será la siguiente instrucción ejecutada.
7xx BRZ BRANCH IF ZERO (condicional) Si el acumulador (calculadora) contiene el valor 000, establece el valor xx en el contador de programa. En caso contrario no hace nada.
Nota: Puesto que el programa se almacena en la memoria, todos los datos y las instrucciones del programa tienen el mismo formato de dirección/ubicación.
8xx BRP BRANCH IF POSITIVE (condicional) Si el acumulador (calculadora) es 0 o positivo, establece el valor xx en el contador de programa. En caso contrario no hace nada.
Nota: Puesto que el programa se almacena en la memoria, todos los datos y las instrucciones del programa tienen el mismo formato de dirección/ubicación.
901 INP INPUT Va a la ENTRADA, obtiene el valor que ha introducido el usuario y lo pone en el acumulador (calculadora).
Nota: Esto sobreescribe cualquier valor que se encuentre en el acumulador (destructivo)
902 OUT OUTPUT Copia el valor del acumulador (calculadora) en la SALIDA.
Nota: El contenido del acumulador no cambia (no destructivo).
000 HLT/COB HALT/COFFEE BREAK Deja de trabajar.
DAT DATA Esta es una instrucción de ensamblador que únicamente carga el valor en la siguiente caja disponible. DAT también se puede utilizar en conjunción con etiquetes para declarar variables. Por ejemplo, DAT 984 almacena el valor 984 en una caja, en la dirección de la instrucción DAT.

Ejemplos

Uso de códigos de instrucciones numéricas

Este programa de ejemplo se ha escrito usando códigos numéricos (las instrucciones 901,... 000). El programa pide dos números como ENTRADA y devuelve la resta como SALIDA. Obsérvese que la ejecución comienza en la posición 00 y acaba en la 07. Las desventajas de la programación con LMC con códigos de instrucción numéricos se verán después.

Caja Código numérico Operación Comentarios
00 901 ENTRADA → ACUMULADOR Introducir (INPUT) el primer número, en la calculadora (borra todo lo que había)
01 308 ACUMULADOR → MEMORIA[08] Almacena (STORE) el valor actual de la calculadora (se prepara para el siguiente paso...)
02 901 ENTRADA → ACUMULADOR Introduce (INPUT) el segundo número, en la calculadora (y borra el primer número)
03 309 ACUMULADOR → MEMORIA[09] Almacena (STORE) el valor actual de la calculadora (de nuevo, se prepara para el siguiente paso...)
04 508 MEMORIA[08] → ACUMULADOR (Ahora que los dos valores de entrada están almacenados en las cajas 08 y 09...)

Carga (LOAD) el primer valor, de nuevo, en la calculadora (y borra lo que había)

05 209 ACUMULADOR = ACUMULADOR - MEMORIA[09] Resta (SUBTRACT) el segundo número al valor actual de la calculadora (que era el primer número)
06 902 ACUMULADOR → SALIDA Devuelve (OUTPUT) el resultado de la calculadora como SALIDA
07 000 (no hace ninguna operación) Para (HALT) el LMC

Uso de códigos mnemotécnicos y etiquetas

El lenguaje ensamblador es un lenguaje de programación de bajo nivel que utiliza la mnemotécnia y etiquetas en lugar de códigos de instrucciones numéricas. Aunque el LMC utiliza un conjunto limitado de mnemotécnicos, la conveniencia de usar una regla mnemotécnica para cada instrucción del lenguaje ensamblador se hace evidente en el mismo programa que se muestra a continuación (el programador ya no tiene que acordarse de una serie de códigos numéricos anónimos y puede programar con un conjunto de códigos mnemotécnicos más fáciles de memorizar). Si la sentencia es una instrucción que implica una dirección de memoria (ya sea una instrucción de salto o datos que se tienen que cargar o guardar), entonces utiliza una etiqueta para nombrar esa dirección.

Este programa de ejemplo puede ser compilado y ejecutado en el simulador de LMC[5]​ disponible en el sitio web de la Universidad de York (Toronto, Canadá) o en la aplicación de escritorio escrita por Mike Coley.[6]​ Todos estos simuladores incluyen instrucciones completas y programas de ejemplo, un ensamblador para convertir el código ensamblador a código máquina, interfaces de control para ejecutar y supervisar los programas y una descripción paso a paso detallada de cada instrucción LMC.
INP STA PRIMERO INP STA SEGUNDO LDA PRIMERO SUB SEGUNDO OUT HLT PRIMERO DAT SEGUNDO DAT 

Etiquetas

Sin etiquetas el programador necesita calcular manualmente las cajas (direcciones de memoria) donde almacenar los datos.

En el ejemplo con código numéricos, si se añade una nueva instrucción antes de la instrucción HLT final, como resultado se moverá la instrucción HLT desde la caja 07 a la 08 (el etiquetado de direcciones del programa comienza en la posición 00). Supongamos que el usuario introduce 600 como primera entrada (en la instrucción 901 de la caja 00). La instrucción 308 (caja 01) hace que este valor se almacene en la caja 08, y sobreescribe la instrucción 000 (HLT) con el valor 600. La instrucción 600 significa saltar a la dirección (caja) 00 del programa, así, en lugar de pararse, el programa se queda atrapado en un bucle sin fin.

Para solucionar esta dificultad, la mayoría de los lenguajes ensambladores (incluyendo el LMC) combinan los códigos nemotécnicos con etiquetas. Una etiqueta no es más que una palabra que se utiliza para nombrar cualquier dirección de memoria donde se almacena una instrucción o un dato, o para referirse a esta dirección en una instrucción.

Cuando un programa se ensambla:

  • Una etiqueta a la izquierda de una instrucción se convierte en la dirección de memoria donde se almacena la instrucción o los datos. Por ejemplo, iniciobucle INP
  • Una etiqueta a la derecha de una instrucción toma el valor de la dirección de memoria antes mencionada. Por ejemplo, BRA iniciobucle
  • Una etiqueta combinada con una declaración DAT funciona como una variable, hace que los datos se almacenen en la dirección de memoria de la etiqueta. Por ejemplo, one DAT 1 o numero1 DAT

En el ejemplo de lenguaje ensamblador que utiliza mnemotécnia y etiquetas, si una nueva instrucción se inserta antes de la instrucción HLT final, entonces la ubicación de la dirección marcada con la etiqueta PRIMERO estará ahora en la posición de memoria 09 en lugar de la 08, y la primera instrucción STA se convertirá en 309 (STA 09) en lugar de 308 (STA 08) cuando se ensamble el programa.

Por lo tanto, las etiquetas se utilizan para:

  • Identificar una instrucción particular como destino de una instrucción de salto (BRANCH).
  • Identificar una ubicación de memoria como una variable con un nombre (utilizando DAT) y, opcionalmente, cargar determinados datos cuando se ensambla el programa para su uso posterior cuando se ejecute. Este uso no se hace evidente hasta que uno se da cuenta de que no hay ninguna otra forma de sumarle 1 a un contador: Se le podría pedir al usuario que introdujera el 1 al inicio (INPUT), pero es mejor cargarlo cuando se ensambla el programa usando one DAT 1)

Ejemplos

Este programa pide una ENTRADA al usuario, y hace una cuenta atrás hasta cero.

 INP LOOP SUB ONE // Etiqueta esta instrucción com LOOP y resta el valor de ONE al valor del acumulador OUT BRZ QUIT // Si el valor del acumulador es 0, salta a la dirección etiquetada QUIT BRA LOOP // Si el valor del acumulador no es 0, salta a la dirección etiquetada LOOP QUIT HLT // Etiqueta esta dirección como QUIT ONE DAT 1 // Almacena 1 en esta dirección de memoria, y la etiqueta ONE (declaración de variables) 

Este programa pide una ENTRADA al usuario, calcula el cuadrado, muestra la respuesta y vuelve a repetir. La introducción de un cero finaliza el programa.
(Nota: una entrada que de un resultado superior a 999 producirá un error debido al límite de 3 dígitos del LMC)

START LDA ZERO // Inicializa la ejecución del programa múltiple STA RESULT STA COUNT INP // Entrada proporcionada por el usuario BRZ END // Salto del programa a END si entrada = 0 STA VALUE // Almacena la entrada como VALUE LOOP LDA RESULT // Carga el resultado en RESULT ADD VALUE // Suma la entrada VALUE a RESULT STA RESULT // Almacena el nuevo resultado en RESULT LDA COUNT // Carga la cuenta COUNT ADD ONE // Suma ONE a la cuenta COUNT STA COUNT // Almacena COUNT SUB VALUE // Resta la entrada VALUE a COUNT BRZ ENDLOOP // Si cero (VALUE suma RESULT VALUE veces) salta a ENDLOOP BRA LOOP // Salta a LOOP para continuar sumando VALUE a RESULT ENDLOOP LDA RESULT // Carga RESULT OUT // Devuelve RESULT BRA START // Salta a START para comenzar y pedir otro VALUE END HLT // Se para (¡Hemos introducido antes un cero!) RESULT DAT // Resultado computado (por defecto 0) COUNT DAT // Contador (por defecto 0) ONE DAT 1 // Constante con valor 1 VALUE DAT // Entrada proporcionada por el usuario, el valor que queremos al cuadrado (por defecto 0) ZERO DAT // Constante con valor 0 (por defecto 0) 

Nota: Si no hay datos después de una declaración DAT, entonces se almacena en la dirección de memoria el valor predeterminado 0.

Referencias

  1. . Universidad Estatal de Illinois. 1 de mayo de 2000. Archivado desde el original el 27 de febrero de 2009. Consultado el 8 de marzo de 2009. 
  2. Yurcik, W.; Osborne, H. (2001). "A crowd of Little Man Computers: Visual computer simulator teaching tools". Proceeding of the 2001 Winter Simulation Conference (Cat. No.01CH37304) 2. p. 1632. doi:10.1109/WSC.2001.977496. ISBN 0-7803-7307-3.
  3. Yurcik, W.; Brumbaugh, L. (2001). "A web-based little man computer simulator". Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education - SIGCSE '01. p. 204. doi:10.1145/364447.364585. ISBN 1581133294.
  4. Osborne, H.; Yurcik, W. (2002). "The educational range of visual simulations of the Little Man Computer architecture paradigm". 32nd Annual Frontiers in Education. pp. S4G–S19. doi:10.1109/FIE.2002.1158742. ISBN 0-7803-7444-4.
  5. Chen, Stephen Y.; Cudmore, William C. York University, ed. «The Little Man Computer». Consultado el 7 de octubre de 2010. 
  6. Coley, Mike. «The Little Man Computer». Consultado el 12 de abril de 2012. 

Véase también

Enlaces externos

  • Richard J. Povinelli:Teaching:Introduction to Computer Hardware and Software:Little Man Computer
  • The "Little Man" Computer

Simuladores

  • Java Applet
  • Windows Executable
  • Windows Executable
  • Emacs package
  • Adobe Flash Version
  •   Datos: Q6652737

little, computer, little, computer, inglés, computadora, hombre, pequeño, modelo, educativo, computadora, creado, stuart, madnick, 1965, utiliza, normalmente, enseñanza, porque, modela, computadora, sencilla, utiliza, arquitectura, neumann, tiene, todas, carac. El Little Man Computer LMC en ingles Computadora del hombre pequeno es un modelo educativo de computadora creado por el Dr Stuart Madnick en 1965 1 El LMC se utiliza normalmente en la ensenanza porque modela una computadora sencilla que utiliza la arquitectura de von Neumann que tiene todas las caracteristicas basicas de una computadora moderna Puede ser programada con codigo maquina aunque en lugar de usar un sistema binario utiliza el decimal o con codigo ensamblador 2 3 4 Indice 1 Arquitectura del sistema 2 Ciclo de ejecucion 3 Comandos 3 1 Instrucciones 3 2 Ejemplos 3 2 1 Uso de codigos de instrucciones numericas 3 2 2 Uso de codigos mnemotecnicos y etiquetas 4 Etiquetas 4 1 Ejemplos 5 Referencias 6 Vease tambien 7 Enlaces externos 8 SimuladoresArquitectura del sistema EditarEl modelo LMC esta basado en el concepto de un hombre pequeno encerrado en una habitacion En la habitacion hay 100 cajas memorias numeradas del 0 al 99 y cada una puede contener una instruccion o dato de 3 digitos desde el 000 al 999 Ademas hay dos cajas al otro extremo etiquetadas ENTRADA y SALIDA que son utilizadas para recibir y enviar informacion En el centro de la habitacion existe una zona de trabajo que contiene una calculadora simple con dos funciones suma y resta denominada acumulador y un contador reprogramable denominado contador de programa El Contador de Programa guarda la direccion de la proxima instruccion que el hombre pequeno va a realizar Este contador de programa normalmente se incrementa en 1 despues de que se ejecuta una instruccion permitiendole al hombre pequeno realizar su trabajo a lo largo del programa de manera secuencial Existen instrucciones de bifurcacion que permiten realizar iteraciones lazos e incorporar al programa estructuras de programacion condicionales Colocando el contador de programa en una direccion de memoria no secuencial si se cumple una determinada condicion por lo general el valor almacenado en el acumulador es cero o positivo Tal como establece la arquitectura de von Neumann la memoria contiene tanto instrucciones como datos Por lo tanto es preciso tener cuidado de detener el contador de programa antes de alcanzar una direccion de memoria que contenga datos o el hombrecillo intentara utilizarla como si fuera una instruccion Para utilizar la LMC el usuario carga datos en las cajas y luego le indica al hombre pequeno que comience a trabajar comenzando con la instruccion almacenada en la direccion de memoria caja cero Restablecer el contador de Programa a cero hace que el programa comience nuevamente desde el principio Ciclo de ejecucion EditarVease tambien Ciclo de instruccion Para ejecutar un programa el hombre pequeno realiza los siguientes pasos Comprueba el contador de programa que tiene un numero de caja que contiene una instruccion de programa por ejemplo cero Busca que instruccion hay en la caja con ese numero Incrementa el contador de programa de forma que contenga el numero de caja de la siguiente instruccion Decodifica la instruccion esto incluye encontrar el numero de la caja que contiene los datos con los que trabajara por ejemplo que diga que hay que obtener los datos de la caja 42 Recupera los datos de la caja con el numero encontrado en el paso anterior por ejemplo almacena los datos de la caja 42 en el acumulador Ejecuta la instruccion Almacena los nuevos datos en la caja desde donde se recuperaron los datos antiguos Repite el ciclo o para Comandos EditarAunque el LMC si refleja el funcionamiento real de los procesadores binarios se eligio la simplicidad de los numeros decimales para minimizar la complejidad a los estudiantes puesto que puede no resultar comodo trabajar en un sistema binario o hexadecimal Instrucciones Editar Algunos simuladores LMC se programan utilizando directamente instrucciones numericas de 3 digitos y otros con codigos mnemotecnicos de 3 letras y etiquetas En cualquier caso el conjunto de instrucciones es deliberadamente muy limitado normalmente unas diez instrucciones para simplificar la comprension Cuando el LMC utiliza codigos mnemotecnicos y etiquetas despues se convierten en instrucciones numericas de 3 digitos cuando se ensambla el programa El primer digito de una instruccion numerica representa el comando a ejecutar y los dos ultimos digitos representan la direccion de memoria de la caja correspondiente a este comando La tabla de abajo muestra un conjunto tipico de instrucciones numericas y los codigos mnemotecnicos equivalentes Instrucciones Codigo numerico Codigo mnemotecnico Instruccion Descripcion1xx ADD ADD Suma el valor almacenado en la caja xx a cualquier valor que se encuentre actualmente en el acumulador calculadora Nota El contenido de la caja no cambia y las acciones en el acumulador calculadora no estan definidas para instrucciones de suma con resultados de mas de 3 digitos 2xx SUB SUBTRACT Resta el valor almacenado en la caja xx de cualquier valor que se encuentre actualmente en el acumulador calculadora Nota El contenido de la caja no cambia y las acciones en el acumulador no estan definidas para instrucciones de resta con resultados negativos pero se establecera un registro de estado negativo de forma que 8xx BRP se pueda utilizar correctamente 3xx STA STORE Almacena el contenido del acumulador en la caja xx destructivo Nota El contenido del acumulador calculadora no se modifica no destructivo pero el contenido de la caja se sustituye independientemente de lo que hubiera antes destructivo 5xx LDA LOAD Carga el valor de la caja xx no destructivo y lo introduce en el acumulador destructivo 6xx BRA BRANCH incondicional Establece la direccion indicada valor xx en el contador de programa Es decir el valor xx sera la siguiente instruccion ejecutada 7xx BRZ BRANCH IF ZERO condicional Si el acumulador calculadora contiene el valor 000 establece el valor xx en el contador de programa En caso contrario no hace nada Nota Puesto que el programa se almacena en la memoria todos los datos y las instrucciones del programa tienen el mismo formato de direccion ubicacion 8xx BRP BRANCH IF POSITIVE condicional Si el acumulador calculadora es 0 o positivo establece el valor xx en el contador de programa En caso contrario no hace nada Nota Puesto que el programa se almacena en la memoria todos los datos y las instrucciones del programa tienen el mismo formato de direccion ubicacion 901 INP INPUT Va a la ENTRADA obtiene el valor que ha introducido el usuario y lo pone en el acumulador calculadora Nota Esto sobreescribe cualquier valor que se encuentre en el acumulador destructivo 902 OUT OUTPUT Copia el valor del acumulador calculadora en la SALIDA Nota El contenido del acumulador no cambia no destructivo 000 HLT COB HALT COFFEE BREAK Deja de trabajar DAT DATA Esta es una instruccion de ensamblador que unicamente carga el valor en la siguiente caja disponible DAT tambien se puede utilizar en conjuncion con etiquetes para declarar variables Por ejemplo DAT 984 almacena el valor 984 en una caja en la direccion de la instruccion DAT Ejemplos Editar Uso de codigos de instrucciones numericas Editar Este programa de ejemplo se ha escrito usando codigos numericos las instrucciones 901 000 El programa pide dos numeros como ENTRADA y devuelve la resta como SALIDA Observese que la ejecucion comienza en la posicion 00 y acaba en la 07 Las desventajas de la programacion con LMC con codigos de instruccion numericos se veran despues Caja Codigo numerico Operacion Comentarios00 901 ENTRADA ACUMULADOR Introducir INPUT el primer numero en la calculadora borra todo lo que habia 01 308 ACUMULADOR MEMORIA 08 Almacena STORE el valor actual de la calculadora se prepara para el siguiente paso 02 901 ENTRADA ACUMULADOR Introduce INPUT el segundo numero en la calculadora y borra el primer numero 03 309 ACUMULADOR MEMORIA 09 Almacena STORE el valor actual de la calculadora de nuevo se prepara para el siguiente paso 04 508 MEMORIA 08 ACUMULADOR Ahora que los dos valores de entrada estan almacenados en las cajas 08 y 09 Carga LOAD el primer valor de nuevo en la calculadora y borra lo que habia 05 209 ACUMULADOR ACUMULADOR MEMORIA 09 Resta SUBTRACT el segundo numero al valor actual de la calculadora que era el primer numero 06 902 ACUMULADOR SALIDA Devuelve OUTPUT el resultado de la calculadora como SALIDA07 000 no hace ninguna operacion Para HALT el LMCUso de codigos mnemotecnicos y etiquetas Editar El lenguaje ensamblador es un lenguaje de programacion de bajo nivel que utiliza la mnemotecnia y etiquetas en lugar de codigos de instrucciones numericas Aunque el LMC utiliza un conjunto limitado de mnemotecnicos la conveniencia de usar una regla mnemotecnica para cada instruccion del lenguaje ensamblador se hace evidente en el mismo programa que se muestra a continuacion el programador ya no tiene que acordarse de una serie de codigos numericos anonimos y puede programar con un conjunto de codigos mnemotecnicos mas faciles de memorizar Si la sentencia es una instruccion que implica una direccion de memoria ya sea una instruccion de salto o datos que se tienen que cargar o guardar entonces utiliza una etiqueta para nombrar esa direccion Este programa de ejemplo puede ser compilado y ejecutado en el simulador de LMC 5 disponible en el sitio web de la Universidad de York Toronto Canada o en la aplicacion de escritorio escrita por Mike Coley 6 Todos estos simuladores incluyen instrucciones completas y programas de ejemplo un ensamblador para convertir el codigo ensamblador a codigo maquina interfaces de control para ejecutar y supervisar los programas y una descripcion paso a paso detallada de cada instruccion LMC INP STA PRIMERO INP STA SEGUNDO LDA PRIMERO SUB SEGUNDO OUT HLT PRIMERO DAT SEGUNDO DATEtiquetas EditarSin etiquetas el programador necesita calcular manualmente las cajas direcciones de memoria donde almacenar los datos En el ejemplo con codigo numericos si se anade una nueva instruccion antes de la instruccion HLT final como resultado se movera la instruccion HLT desde la caja 07 a la 08 el etiquetado de direcciones del programa comienza en la posicion 00 Supongamos que el usuario introduce 600 como primera entrada en la instruccion 901 de la caja 00 La instruccion 308 caja 01 hace que este valor se almacene en la caja 08 y sobreescribe la instruccion 000 HLT con el valor 600 La instruccion 600 significa saltar a la direccion caja 00 del programa asi en lugar de pararse el programa se queda atrapado en un bucle sin fin Para solucionar esta dificultad la mayoria de los lenguajes ensambladores incluyendo el LMC combinan los codigos nemotecnicos con etiquetas Una etiqueta no es mas que una palabra que se utiliza para nombrar cualquier direccion de memoria donde se almacena una instruccion o un dato o para referirse a esta direccion en una instruccion Cuando un programa se ensambla Una etiqueta a la izquierda de una instruccion se convierte en la direccion de memoria donde se almacena la instruccion o los datos Por ejemplo iniciobucle INP Una etiqueta a la derecha de una instruccion toma el valor de la direccion de memoria antes mencionada Por ejemplo BRA iniciobucle Una etiqueta combinada con una declaracion DAT funciona como una variable hace que los datos se almacenen en la direccion de memoria de la etiqueta Por ejemplo one DAT 1 o numero1 DATEn el ejemplo de lenguaje ensamblador que utiliza mnemotecnia y etiquetas si una nueva instruccion se inserta antes de la instruccion HLT final entonces la ubicacion de la direccion marcada con la etiqueta PRIMERO estara ahora en la posicion de memoria 09 en lugar de la 08 y la primera instruccion STA se convertira en 309 STA 09 en lugar de 308 STA 08 cuando se ensamble el programa Por lo tanto las etiquetas se utilizan para Identificar una instruccion particular como destino de una instruccion de salto BRANCH Identificar una ubicacion de memoria como una variable con un nombre utilizando DAT y opcionalmente cargar determinados datos cuando se ensambla el programa para su uso posterior cuando se ejecute Este uso no se hace evidente hasta que uno se da cuenta de que no hay ninguna otra forma de sumarle 1 a un contador Se le podria pedir al usuario que introdujera el 1 al inicio INPUT pero es mejor cargarlo cuando se ensambla el programa usando one DAT 1 Ejemplos Editar Este programa pide una ENTRADA al usuario y hace una cuenta atras hasta cero INP LOOP SUB ONE Etiqueta esta instruccion com LOOP y resta el valor de ONE al valor del acumulador OUT BRZ QUIT Si el valor del acumulador es 0 salta a la direccion etiquetada QUIT BRA LOOP Si el valor del acumulador no es 0 salta a la direccion etiquetada LOOP QUIT HLT Etiqueta esta direccion como QUIT ONE DAT 1 Almacena 1 en esta direccion de memoria y la etiqueta ONE declaracion de variables Este programa pide una ENTRADA al usuario calcula el cuadrado muestra la respuesta y vuelve a repetir La introduccion de un cero finaliza el programa Nota una entrada que de un resultado superior a 999 producira un error debido al limite de 3 digitos del LMC START LDA ZERO Inicializa la ejecucion del programa multiple STA RESULT STA COUNT INP Entrada proporcionada por el usuario BRZ END Salto del programa a END si entrada 0 STA VALUE Almacena la entrada como VALUE LOOP LDA RESULT Carga el resultado en RESULT ADD VALUE Suma la entrada VALUE a RESULT STA RESULT Almacena el nuevo resultado en RESULT LDA COUNT Carga la cuenta COUNT ADD ONE Suma ONE a la cuenta COUNT STA COUNT Almacena COUNT SUB VALUE Resta la entrada VALUE a COUNT BRZ ENDLOOP Si cero VALUE suma RESULT VALUE veces salta a ENDLOOP BRA LOOP Salta a LOOP para continuar sumando VALUE a RESULT ENDLOOP LDA RESULT Carga RESULT OUT Devuelve RESULT BRA START Salta a START para comenzar y pedir otro VALUE END HLT Se para Hemos introducido antes un cero RESULT DAT Resultado computado por defecto 0 COUNT DAT Contador por defecto 0 ONE DAT 1 Constante con valor 1 VALUE DAT Entrada proporcionada por el usuario el valor que queremos al cuadrado por defecto 0 ZERO DAT Constante con valor 0 por defecto 0 Nota Si no hay datos despues de una declaracion DAT entonces se almacena en la direccion de memoria el valor predeterminado 0 Referencias Editar Little Man Computer Universidad Estatal de Illinois 1 de mayo de 2000 Archivado desde el original el 27 de febrero de 2009 Consultado el 8 de marzo de 2009 Yurcik W Osborne H 2001 A crowd of Little Man Computers Visual computer simulator teaching tools Proceeding of the 2001 Winter Simulation Conference Cat No 01CH37304 2 p 1632 doi 10 1109 WSC 2001 977496 ISBN 0 7803 7307 3 Yurcik W Brumbaugh L 2001 A web based little man computer simulator Proceedings of the thirty second SIGCSE technical symposium on Computer Science Education SIGCSE 01 p 204 doi 10 1145 364447 364585 ISBN 1581133294 Osborne H Yurcik W 2002 The educational range of visual simulations of the Little Man Computer architecture paradigm 32nd Annual Frontiers in Education pp S4G S19 doi 10 1109 FIE 2002 1158742 ISBN 0 7803 7444 4 Chen Stephen Y Cudmore William C York University ed The Little Man Computer Consultado el 7 de octubre de 2010 Coley Mike The Little Man Computer Consultado el 12 de abril de 2012 Vease tambien EditarCARDboard Illustrative Aid to Computation modelo de computadora educativa de carton Enlaces externos EditarRichard J Povinelli Teaching Introduction to Computer Hardware and Software Little Man Computer The Little Man ComputerSimuladores EditarMicrosoft Excel LMC simulator Java Applet Windows Executable JavaScript JavaScript in browser LMC with mnemonic support and error detection Windows Executable Emacs package Adobe Flash Version Datos Q6652737Obtenido de https es wikipedia org w index php title Little man computer amp oldid 135348827, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos