Índice 1. Introducción 2. Descripción del Procesador Básico 3. Conjunto de instrucciones 1. Instrucciones de transferencia de constantes 2. Instrucciones de ALU 3.

Instrucciones de salto 4. Instrucciones de entrada/salida 5. Instrucciones de acceso indirecto 6. Instrucciones especiales y de control 4. Gestión de las excepciones 5. Dispositivos de entrada/salida 1. Barra de LEDS 2. Display numérico 3. Teclado hexadecimal

1. INTRODUCCIÓN El Procesador Básico (PB) ha sido concebido como una máquina sencilla para el aprendizaje del funcionamiento de un computador en los primeros cursos de Ingeniería Informática, Ingeniería Técnica en Informática de Gestión e Ingeniería Técnica en Informática de Sistemas de la Universitat Jaume I. El simulador del PB ha sido desarrollado en SmallTalk en el excelente entorno VisualWorks (http://www.cincom.com), e implementa el propio PB, una memoria de datos de 32 posiciones y una de instrucciones de 128 (en la imagen distribuida), así como diversos dispositivos de entrada y salida. El sistema se distribuye como una imagen (pb.im) para ser ejecutada sobre la máquina virtual SmallTalk incluida en el entorno VisualWorks, constituyendo una aplicación independiente.

. En el segundo es capaz de acceder a dispositivos de E/S y de gestionar excepciones vectorizadas. por lo que la memoria de instrucciones contiene texto. Trabaja con datos no tipados. Los registros internos del PB son:  El contador de programa. Sus principales características son:      Organización RISC sin ejecución solapada de instrucciones.2. Su memoria de datos está constituida por lo que en un procesador RISC sería el banco de registros. De esta forma. Funciona en dos modos. básico y avanzado. DESCRIPCIÓN DEL PROCESADOR BÁSICO El PB es una máquina simple pensada para comprender fácilmente los principios del funcionamiento de los computadores. Trabaja con instrucciones textuales. el modo de direccionamiento básico es el directo. aunque por las instrucciones implementadas actualmente estos son enteros sin límite de tamaño.

Son instrucciones con dos operandos: una posición de memoria destino y una constante fuente. Un registro de interrupciones. d6. que en el simulador aparece también dividido en sus campos. d1. Los operandos que impliquen direcciones de memoria de datos serán de la forma d0. Sirven para cargar constantes en posiciones de memoria. 32 d7 = 32) 3. Instrucciones de transferencia de constantes. Instrucciones de ALU. por lo que sin ellas cualquier carga de constantes requeriría de dos intrucciones para verificarse.2. los que indiquen direcciones de memoria de instrucciones o constantes. Hay dos intrucciones de este grupo:  sumac mem. movec d7. 14 d7 = d6 + 14) . Un registro de salida de la unidad aritmético lógica. mem. de los cuales el más próximo al mnemónico es el destino y los otros dos fuentes.1. Solo existe una instrucción en este grupo:  movec mem. Se dividen en dos grandes grupos: A. Operaciones con valores inmediatos (constantes). d30 etcétera. 3. Las instrucciones del PB se dividen en los siguientes tipos:       Instrucciones de transferencia de constantes Instrucciones de ALU Instrucciones de salto Instrucciones de entrada/salida Instrucciones de acceso indirecto Instrucciones especiales y de control A continuación se describen estos tipos y las instrucciones propias de cada uno de ellos. CONJUNTO DE INSTRUCCIONES Las instrucciones se codifican mediante un mnemónico seguido de hasta tres operandos. 3. El segundo operando fuente es una constante. Dos registros de entrada de la unidad aritmético lógica.    El registro de instrucciones. cte (ej. Se justifican porque no existe un registro fijo a cero como en la mayor parte de procesadores RISC. Estas instrucciones realizan transformación de los datos mediante operaciones clásicas de ALU y algunas algo más complejas. serán exclusivamente un número en base 10. cte (ej. Todas ellas tienen tres operandos. que se separan por comas. sumac d7.

d2. Dos de ellos residen en memoria y son valores sobre los que se realiza una comparación especificada en el mnemónico. Se distinguen dos grupos principales. d5 d7 = d6 + d5) resta mem. mem. 16 si d1 = d2 -> CP = 16) salta>= mem. d5 d7 = d6 x d5) divide mem. cte (ej. salta< d1. d6. dest (ej. 16 si d1 > d2 -> CP = 16) salta< mem. Todas las direcciones de destino son absolutas y.para determinar si el salto es o no efectivo. salta> d1. modulo d7. mem (ej. mem (ej. mem (ej. d6. en la mayor parte de los casos. dest (ej. llama d5. mem (ej. tienen tres operandos. restac mem. d6. que sólo indica destino. Instrucciones de salto. como se ve. 42 d5 = CP instrucción siguiente. cociente de la división entera) modulo mem. restac d7. El tercer operando es la dirección absoluta de destino. Instrucciones de salto Salvo la instruccion de salto incondicional. mem. salta 16 CP = 16. esta instrucción es equivalente a la anterior sin más que invertir los registros) salta= mem. Operaciones sobre memoria. Las dos primeras son básicas:   suma mem. saltos y gestión de subrutinas. divide y módulo. pueden generar una excepción de división por cero. salta= d1. d2. d6. 16 si d1 < d2 -> CP = 16. mem. se especifican mediante constantes. mem.Hay 5 instrucciones de este tipo. instrucción de salto incondicional) salta> mem. d6. mem.14) B. 14 d7 = d6 . salta>= d1. Hay cinco operaciones de este grupo. d5 d7 = d6 . Los tres operandos residen en memoria. 16 si d1 >= d2 -> CP = 16) B. multiplica d7. aunque dos son equivalentes:      salta dest (ej. resto de la división entera) Estas dos últimas. mem. A.3. 3. dest (ej. Instrucciones de gestión de subrutinas Se trata de dos instrucciones que permiten relaizar la llamada y retorno de subrutinas.  llama mem. dest (ej. divide d7. suma d7. Se comentan por separado. d5 d7 = d6 mod d5. Se incluyen en este grupo todas las instrucciones de control del flujo del programa. modificando el valor del contador de programa (CP). mem. resta d7. dest (ej. d2. mem (ej. El salto se realiza. mem. d6. d2. mem.d5) y las tres restantes son más complejas -no cabrían en una ALU tradicional de una máquina simple:    multiplica mem. lógicamente. CP = 42) . mem. d5 d7 = d6 / d5.

vuelve d5 CP = d5) La instrucción permite volver a una dirección destino guardada en una posición de memoria mediante una llamada a subrutina.y la memoria. A continuación salta a la dirección destino. d0 Si d1 contiene 8. que no vuelve a ponerse en marcha hasta que es resetado. d0 = d8) indesc (mem). (d1) Si d1 contiene 8.La instrucción copia en la posición de memoria indicada la dirección de la instrucción siguiente. Esto permite trabajar con vectores. entra d6. Instrucciones especiales y de control. punteros. Aquí se agrupan todas las instrucciones que tienen influencia en el comportamiento del procesador. Instrucciones de acceso indirecto. La instrucción fin detiene el funcionamiento del procesador. indesc (d1). Son instrucciones con dos operandos. mem (ej. que se describen a continuación. Son instrucciones de dos operandos. Estas instrucciones permiten la transferencia de datos entre posiciones de memoria. matrices. En realidad sólo transfieren datos entre los dispositivos externos -los disponibles en el simulador se describirán más adelante.  fin El procesador básico. es decir. (mem) (ej. mem (ej.4. d0 d6 = valor leido del dispositivo cuya dirección se guarda en d0) 3. etcétera. Existen dos instrucciones de este tipo:   sale mem. Instrucciones de entrada/salida. está ejecutando instrucciones constantemente. Se incluyen dos instrucciones básicas para trabajar con la E/S.6. donde uno indica la dirección del dispositivo y otro la ubicación del dato. sale d0. de las cuales existen dos:   indlee mem. indlee d0. Como en realidad se trata de un salto indirecto a memoria. mem (ej. 3.5. d6 Envia el valor contenido en d6 al dispositivo cuya dirección se guarda en d0) entra mem. etcétera. Hay tres instrucciones en este grupo. como todo procesador. permite también hacer otras cosas interesantes como almacenar tablas de direcciones de funciones.   intsi intno . con la particularidad de que una de las direcciones se expresa mediante el modo indirecto a memoria. la dirección de retorno. d8 = d0) 3.  vuelve mem (ej.

3.2. Se copia el vector correspondiente en el PC. simplemente se debe utilizar el retorno de subrutina. mientras que la periódica se activa cada cierto número de instrucciones. y es generada por las instrucciones divide y modulo. Barra de LEDS Ocupa la dirección 0 del mapa de E/S. El valor escrito. 4. Las excepciones se verifican al acabar la cuarta fase de ejecución. DISPOSITIVOS DE ENTRADA/SALIDA Existen dos dispositivos de salida y uno de entrada. No existe retorno de excepción. Se deshabilitan las interrupciones.GESTIÓN DE LAS EXCEPCIONES En el modo avanzado se tratan tres excepciones vectorizadas. Las otras dos (interrupciones externas) se habilitan y deshabilitan globalmente mediante las instrucciones intsi e intno. La interrupción de usuario se activa mediante el botón a tal efecto de la interfaz. sin contar el reset que tendría vector 0:    División por cero (vector: 1) Interrupción de usuario (vector: 2) Interrupción periódica (vector: 3) La primera excepción no es enmascarable. El tratamiento de las excepciones es simple: 1. 5. 23 en la versión actual. A continucación se describen: 5. con d31 como fuente. Display numérico . 5. y su prioridad es Divpor0 > Usuario > temporizador. 2.1. se representa en binario mediante los leds. Se guarda el PC en d31. entre 0 y 255. En modo básico no hacen nada.Estra instrucciones permiten habilitar o deshabilitar las interrupciones en modo avanzado.

En la dirección 1 está el puerto de control. Al escribir un valor entre 0 y 15 aparecerá la cifra decimal correspondiente en el display.3. 5. el A el de menor.Ocupa las direcciones 1. Al escribir un valor entre 0 y 127 se activarán los segmentos correspondientes a los 1 del valor en binario. El segmento G es el de mayor peso. En la dirección 2 tenemos el puerto de acceso a los segmentos. En la dirección 3 tenemos el puerto de acceso en hexadecimal. Teclado hexadecimal . 2 y 3 del mapa de E/S. que sirve para seleccionar individualmente el display de 7 segmentos activo (0. Las escrituras posteriores a los puertos 2 ó 3 afectarán a este display. 1. 2 ó 3).

Ocupa el puerto 4 del mapa de E/S. De momento. o 255 si no se ha pulsado ninguna. Tal vez su funcionamiento cambie en el futuro para hacerlo más real. al realizar una lectura del dispositivo se devuelve el valor hexadecimal de la última tecla pulsada desde la lectura anterior (0 a 15). .

.83897:.8/0 &.43974 ..4308/008907:54 O 8:2./0.390 1:0390 $7./08934:3../0303/487..3/48 /048..:.08..O30308907:54 O 24.3908  80:3/44507./ / //   .4308/0&  89.397.4708320/.548.4250.O3/048/.83897:..3904507.0.:3.:34/0048     3897:. $0:891.35476:034 0890:370897414.4308...7.4308/020247.8/0.430870..074.8.E8.43.202 .3908  $433897:..0802E8 57O24..08/0./.4308./48397:.8 %4/.390803548..43085745..3/087:548    507...90 0 8:2.3908706:077J.4308.4389....89030397084507.42E8.4389.8.O3/020247.4389.43080850.4389./0..4080/089344849748/481:03908  $0/.:.780  $440890:3.90 0 24./0/48397:.80.3/41:039008:3.42403...390 . 3897:..202 202 ..2..071.035.2302O3.3810703./4708#$ 54746:083 0.7.7.948 .4308/0.94 3897:...381472.O380/08.790/0574..43085.43/484507.4389.3/48:3.3897:.7.4308/097.8.0843/70.7-03089489548.6:07.0..4389.94820/./....475./ /     3897:..4393:.7.

.897087089./ / //     507././ / ////  /.90 0 7089.4308/008907:54 .202 202 202 0 2:95.2E6:3.8843-E8./0/ / ///./ / /// /  7089.44507.8/48 57207./0202 202 202 0 /.8 O O 8:2..430884-7020247..O 7089.303:3../ / /// /  .  4897084507..&97.8 34...202 202 202 0 7089.4250./0:3. .3.202 202 .39088432E8.202 202 202 0 8:2.-7J..43.3/48708/030320247. 8250 2:95..

2.03908 8.2.4. 6:08O43/.8 $0 .7808.8 $097./47/05747.42039.07 4507.0302302O3.8/4892..2.43086:0507290370.O3.202 202 /089 0 8. /.9.94 $....9..202 202 /089 0 8.4308/0089O3/08:-7:93.848 800850.202 202 /089 0 8.47/0.O3/0/.470884-70486:08070./.0.9.790/048.8/70..-84:9./ / 8// !  O O O   3897:.843.4308/00890954 .O3/08.439.390.. %4/.43/08.4308/0/08934843.3/48  48/0048708/030320247.83897:.4308/08./0/08934 8.3/408.1.9.43974/01:4/05747.0 089.4 907./ /!3897:.943..3/4 0./02O/:4 5:0/030307./090723.. O..9.9..8 ././.8 03..948089O3/08:-7:93.202 /089 0 .O38:0390 !  ..08 8.4./0/483897:.8O303907./08934 9030397084507.8    3897:.943.:36:0/48843 06:.2.3 20/.3908 $0/893:03/487:548573.7094734/08:-7:93.3897:.94  $03...4308/0./ / 8// !. ! .4308/08.5.0390.3897:..8 /.O30806:.4 5..43/.390747832E86:03.9./.-84:9./70.4389.... 3897:.9408434010.948070.7:3.8O3 03907.0797487089748  O 8./ / 8// !  O 8..1.20390 24/1..43/.  8.425.2.2.!3897:.475..05.42480.0390/0.:030308907:5494/.  O 24/:4202 202 202 0 24/:4/ / ///24//70894/0...7.9.9.074     3897:.43.  O O 89.9.O3 0850.202 202 /089 0 8./4  O ../089 0 8.7...9.8../ / 8// !  8..7.3547805.:3.8O3547.9..43.7.

O3/020247.8..3897:..9.548..2-F3.O3/020247.45.../70.O3/0..:0.O3507290.O38./70.9.03./.8390708. 20/.. 4240370.03.0/!/  .3908.943/70.4393:..7 .2././8097.8:-7:93..07497..O3/08934  O ./70.48. 5072909.:3..O3.O3/08934:..4308/00397.F907.3/./.8/0 /70..0202 0 ././.7/...3897:.07. 20247.O3/07094734 ..390:3.2.4308 09.4308/01:3./0:38...94.424.     3897:.4.-.03:3.O3 8:0390 08/0./70.3897:..548.79.:0.

.-./.  $03..:03/483897:.43.4308-E8...97.7.8.7.85.

.:.0./70../0/..0.4..8./4780/08..97083897:.0/ /3.:..4308/020247.7-03.4308.3810703 /.4393:.08 5:390748 09.470/4/0/85489...O3 /0/85489.480907348 48/8543-0803082:.94.43974  6:J80./4  O O 398 3934 .. /70.20394/0 574. $433897:.94803970548.439030 / /  3/08.43085072903..390 .08.42494/4574.3/48 /43/0:343/.7/..20394/0574./70.43080308907:54 6:080/08.89.4389.:0.:.43903/403/.03/  O    3897:.390024/43/70.:.3/43897:.4308/00890954 8.543078003 2..83897:.97..4 .O3/0/. $433897:.0843/70.439030 //     3897:.394/./ / /..8.202 202 0 0397..3/48 /0...43.08.7-7E32E8 .7/./8O497..43088005708.47.43.3897:.08.O380 :. 5.:-.03/  O 0397.4.43. 20247. 89450729097...4308 /0/484507.4308.425479.08.0.//06:0:3.3810703.:9.08/0..O313/0903001:3..0808903/48 O O 3/00202  202  0 3/00/  / $/.43/484507..43086:09030331:03./0..4308/0.20247. .7./85489.94708 2.0202 202 0 8.20/.-./0.7/.O3  O 13 574.43080850..97./47-E8.O380:. 202 202 0 3/08.79.../47 ..83897:.44974.8/70..39020390  . / / $/./.$ 370.9480397048/85489.94 8903/483897:.94  89./47 6:034.7..6:00870809.030./47 089E00.F907.7:5..

4308.O3 8:5747/.39077:5..43080324/4...0..20394/0.9.45.20/.947  .547.430880.9:.547  &8:.434..3900-49O3. .7./48097.8 6:0.0.9./.397080.430809073.707094734/08:-7:93.033.-.34-...079432074/03897:..8.947  O O O .430839803934  .0.79.3/08.80.439.74/08.80.O3/0:8:.     $% $! $ 3024/4.-9.-0 080307.9.4308    $0:.7/.20390 20/. 20397.839077:5. .94/0.43 /..0.  97.05..010.70708096:0903/7J. ./.074 .7480...078O3.8 83...8 80.507O/.05.05./47  408907094734/00.1..O33408032.05./08..43085072903.390.80.947  39077:5.0.947  39077:5.-9.8/48 39077:5..39071.7.897.-9.0.4308 03..05.7.83897:.947..3.-9.83897:.071.3....4241:0390     $! $%' $%#.0.947.8O3547..9.0!03/    $0.O382502039080/0-0:9.47708543/0390030!  .O3507O/.74902547./4  324/4-E8.O3/0:8:.839077:5.9.57207./.3.3.:..4308088250   $0/08.8497.4308/../0 24/:4 .:.74 .80/000.0..3897:./.-9.

/./70.../0.$ 8903/48/85489...O380/08./.5./0$   .4393:.:5.48/08.:34/00397. .77.7-03   .O3 /02.

390480/8      85.$ .3:2F7..794 03970  80705708039.4708.03 -3.7420/.4 .

/0.5..:5..4308 /02.  .8/70.

4703-3./70.43./:.2....O3903024805:0794/0..      %0..9./0.47708543/0390030/85.85489074708./080203948..70..2..7E3. 08.10.808..48/0.485:07948O ./0..4703970  ./70../0.79:7.07E..43974 6:087..7.$  3.9../40..47708543/03908..9.74 8020394 080/02.800.7-7:3.084030.O3903024805:0794/0.05.2.475084 00/020347      3.7-7:3./70.7E34880203948.084.4  O .5.0890/85.  3..4703970  80.O3089E05:0794/0. .203900 /85.4880203948 08.17.73/.

  .:5.05:0794/02./0.5.

480/0./0. 5:8.   ..:0.00./..7./433:3.7:3. 483480.0.390747 .0742E870.47 0../08/0.92..2.43.9:7.20394./0..2-00301:9:745.90..$ %. 02420394 .9:7. .5:8.08:1:3../0/85489.0.70.