Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

ESPECIFICACIONES DEL PROCESADOR SIMUPROC

ELEMENTOS
Memoria: Es el dispositivo que almacena toda la informacin del programa que se
ejecuta, tanto datos como instrucciones. En realidad no es parte del procesador, sino que
es un dispositivo anexo al que el procesador accede para ir leyendo las instrucciones y
datos del programa. La capacidad de la memoria Simulada es de 40! posiciones de "!
#its cada una: $esde 0 %asta 40&, o desde 000% %asta '''%.
Esta memoria es suficiente para ejecutar gran variedad de simples y complejos
programas.
El simulador tra#aja con constantes y varia#les en #inario y direcciones (posiciones de
memoria) en %exadecimal.
Registros Generales: Los registros generales del procesador se usan para almacenar
informacin de uso r*pido, ya que se accede a ellos a una velocidad muc%o m*s alta que
a la memoria. En ellos se pueden almacenar direcciones de memoria a las que se va a
acceder con frecuencia a lo largo de la ejecucin del programa, o directamente varia#les
que se desean usar.
Este +rocesador consta de , registros de propsito general, -., /. y 0. cada uno con
"! #its de capacidad.
Registros Apuntadores: Los registros apuntadores son los encargados de direccionar
las distintas posiciones de memoria del sistema. En Simu+roc nos enccontraremos con
los siguientes:
PC IP: Program Counter o Instruction Pointer1 contiene la direccin de
memoria de la prxima instruccin a ejecutar y es incrementado en cada nueva
instruccin.
MAR: Memory Address Register (2egistro de $ireccin de 3emoria) es el
registro en el que se almacena la direccin de memoria a la que se quiere
acceder.
MDR: Memory Data Register o Memory Buffer Register, es un registro
intermedio en el que se almacenan los datos que se escri#en o leen de memoria.
En el caso de una lectura, se pone en el 3-2 la direccin y se activa la se4al de
leer, o#teniendo en el 3$2 el dato #uscado. En el caso de una escritura, se pone
en el 3-2 la direccin y en el 3$2 el dato a escri#ir en memoria, despu5s de
activa la se4al de escri#ir, de esta forma almacenamos en memoria el dato.
IR: Instruction Register, en este registro se introduce la instruccin a ejecutar,
despu5s de %a#erla le6do de memoria accediendo a ella mediante la direccin
se4alada en el +01 El contenido de este registro se puede dividir en cdigo de
operacin (el cdigo que se4ala la operacin que se reali7ar*) y operandos.
+uede %a#er 8 operandos o slo uno. -c* es donde se decodifica e interpreta la
instruccin as6: se descompone la instruccin le6da de forma que se pueda sa#er
cual es la operacin que se desea reali7ar y cuales son los operandos, en su caso,
o el despla7amiento en caso de que se trate de una instruccin de #ifurcacin...
Registros de Pila:
P: Base Pointer, +untero de #ase de la pila. El valor de por defecto es '90,
aunque se puede cam#iar desde un programa, asign*ndole otra direccin de
memoria con la instruccin 3:;. $igamos que se desea reservar m*s espacio
para la pila %aciendo que 5sta comience desde la posicin 0'", entonces se
copia este dato en cualquier posicin de memoria1 supongamos que le elige la
direccin ,/ entonces se utili7ar* la instruccin 3:; /+,,/ y as6 /+ ser* igual
a 0'". 3ientras se ejecuta el programa se puede visuali7ar en una #arra de
porcentaje el uso de la pila.
SP: Stack Pointer, +untero de la pila, indica qu5 prxima direccin de la pila
est* disponi#le, es decir, apunta a la cima de la pila. Este valor se cam#ia
autom*ticamente cuando se usan las instrucciones +<S= +:+.
Registros de Control !Flags": Estos registros se usan para poder controlar el
comportamiento de un programa los cuales se activan despu5s de cada operacin, seg>n
sea el resultado de la instruccin ejecutada. Estos flags se usan principalmente en
instrucciones de #ifurcacin.
#ero $lag: Se vuelve " si el resultado de la >ltima operacin es cero (?@").
Negati%e Sign $lag: Se vuelve " (A@")si el resultado de la >ltima operacin es
igual a un numero negativo.
Carr& $lag: Se activa (0@") cuando la operacin reali7ada %a producido un
acarreo.
O%er$lo' $lag: se activa (:@") cuando la operacin produjo des#ordamiento
(overfloB) , es decir, el resultado ocupa#a m*s de los "! #its que ca#en en un
registro.

ALU (Arithmetic Logic Unit) C (<nidad -rim5tica y Lgica): Es donde el procesador
reali7a las operaciones matem*ticas, (suma, resta, multiplicacin...) y las operaciones
lgicas (-A$, :2, despla7amiento de #its...).
UTILIDADES
Editor Interno: =erramienta para facilitar la escritura de programas: Diene resaltado de
sintaxis, soporte de $es%acer, 2e%acer, $espla7amiento o ta#ulacin de cdigo
seleccionado (presionando ctrl. S%it E <), marcadores (presionando 0trl S%it. "C para
marcar y ctrl. "C para ir al marcador), y otras opciones configura#les.
Editor de Memoria: Se usa para iniciali7ar las varia#les yFo constantes del programa
en ciertas posiciones de memoria una ve7 reali7ado el programa. Dam#i5n se pueden
modificar posiciones de memoria en cualquier momento, ya sea antes durante la
ejecucin de un programa en caso de que se necesite, ya sea para depurar 5ste
modificando varia#les, o las mismas instrucciones con sus par*metros.
Dispositi%os %irtuales: 0ada computador real utili7a dispositivos perif5ricos de alguna
clase para conectarse con el mundo exterior. Simu+roc posee unos dispositivos de EFS,
virtuales que est*n conectados a unos puertos a los que se puede acceders con las
instrucciones En y :ut dependiendo del tipo de dispositivo.
Puerto (: Declado y +antalla. <sado solo +ara pedirle al usuario un numero de
,8 #its, o para imprimir uno en pantalla, ej: EA -.," 1pide al usuario un n>mero
EEEE G&4. Ej: :<D ",-. 1 escri#e en pantalla el n>mero de ,8 #its formado por
/. y -..
Puerto ) : 2eloj. Lee los segundos del sistema, retorna un numero en #inario
(entre 0 y &) al registro especificado. (Sirve para generar n>meros aleatorios)
Puerto *: SBitc%es. Este dispositivo, consiste de "! sBitc%es en fila enumerados
de 0 a "&.0ualquier sBitc% puede ser encendido resultando un H"I lgico
correspondiente al #it del sBitc%.
Puerto (+: +0CSpeaJer. Kenera sonidos a trav5s del altavo7 de tu +0.
+ara generar un Sonido necesitas dar la frecuencia y la duracin en
milisegundos. La frecuencia de#e ser entre G=7 y ,8G!G=7
La frecuencia es le6da del registro especificado en la instruccin, y la duracin es
le6da del registro /.. Ejemplo: Supongamos que -. @ "0"000"0"000 y /. @
"""""0"001 :<D ",,-. 1 produce un sonido de 8!00=7 durante &00 ms.
+ara averiguar los =7 de algunas notas se puede usar la siguiente formula:
'recuencia, en =ert7 @ 440 L 8MN(octavoC4) O (notaF"8)P
$onde las notas comien7an as6:
-@0 -Q@" /@8 0@, 0Q@4 $@& $Q@! E@G '@9 'Q@ K@"0 KQ@""
siendo:
0@$o $@2e E@3i '@'a K@Sol -@La /@Si
+or ejemplo: 0! @R 440 L 8MN(!C4) O ,F"8)P @ 80, =7, casi 8." J=7
Con%ersor de ases: +ermite la conversin de una #ase a cualquier otra. Soporta desde
#ase 8 a #ase ,!. Dam#i5n posee conversin para n>meros de punto flotante a EEEE
G&4 y viceversa.
Estad,sti-as: El simulador muestra constantemente las estad6sticas del programa en
ejecucin, tales como n>mero de instrucciones ejecutadas, clase de instruccin y la
velocidad de procesamiento, etc.

.igilante de Memoria: 0on el vigilante de memoria se pueden o#servar el valor de las
varia#les en las posiciones de memoria. $ispone de un %istorial que muestra los >ltimos
& valores de las posiciones vigiladas.
.elo-idad de Simula-i/n: +uede ser cam#iada en cualquier momento y se puede
apagar la animacin para una ejecucin muc%o m*s r*pida. Es posi#le seguir el acceso
en memoria de las instrucciones yFo varia#les a medida que se ejecuta la simulacin
Resolu-i/n del monitor: -l ejecutarse el Simulador este c%equea que SindoBs este
usando fuentes peque4as y que la resolucin sea como m6nimo de 900x!001 en caso
contrario sacar* una ventana de dialogo para cam#iarla si el usuario desea.
Ar-0i%os SMP: El Simulador registra los arc%ivos de tipo 1SMP para que se puedan
a#rir mediante un do#le clic desde el explorador de SindoBs.
arras de Por-enta2e: 3uestran el porcentaje de uso de la memoria simulada y el
porcentaje de uso del espacio reservado para la pila en cada momento.
Registros de -ontrol !$lags": Se les puede dar un do#le clic para %acer un cam#io
for7ado de los mismos en caso de que se necesite depurar su programa. Si se da clic con
el #otn derec%o del ratn saldr* un men> para seleccionar que flag quiere
activarFdesactivar.
Carga de programas: Se pueden entrar las instrucciones manualmente por la interfa7
del programa y se pueden a#rir los siguientes tipos de arc%ivos:
S3+: que son los creados por este mismo cuando se salvan.
D.D o -S3: que son compati#les con la versin anterior de este simulador.
Pila: La pila es simplemente un conjunto de datos que se almacenan en una 7ona de
memoria, generalmente al final, y en la cual los datos se guardan con la estructura LE':
( Last En, 'irst :ut). La +ila es un #uffer usualmente implementado como un #loque de
n #ytes o Bords consecutivos. En este simulador cada posicin de memoria es de "!
#its
Usos para la pila: Ta sea para almacenar datos, para llevar control del programa, la pila
se usa para pasar varia#les entre funciones y para almacenar varia#les locales. El
programador es el responsa#le de reservar el espacio apropiado para la pila (ya
explicado anteriormente).
<n pro#lema con las pilas es que el programador las puede %acer muy peque4as y puede
que ocurra un stacJ overfloB o des#ordamiento de pila si se esta intentando usar la
instruccin +<S= para enviar algo cuando ya la pila esta llena1 o stacJ underfloB si se
usa la instruccin +:+ estando la pila vac6a.
+or cada +<S= de#e de %a#er luego un +:+. 0uando un programa o funcin termina
su ejecucin la pila de#e quedar como esta#a antes de que este se ejecutara1 en caso
contrario %a#r* errores.
INSTRUCCIONES SOPORTADAS

0on las instrucciones que soporta este simulador se pueden escri#ir una gran cantidad
de programas para resolver muc%os pro#lemas diferentes. Su sintaxis ser* la siguiente:
.. C EASD Npar"P Npar8P
$onde .. es el 0digo de la instruccin, EASD es la instruccin y Npar"P Npar8P son los
par*metros si 5stos existen.

La versin ".4.,.0 soporta las siguientes instrucciones:
Sinta3is Des-rip-i/n
0" C L$- NmemP 0arga en -. el contenido de la direccin de memoria
especificada. Si en ("')@"0""", despu5s de ejecutada la
instruccin L$- "' se o#tendr6a que -.@"0""". Es
equivalente a usar la instruccin 3:; -.,"'. Esta
instruccin se encuentra disponi#le para tener compati#ilidad
con versiones anteriores. Es mejor usar 3:;.
08 C SD- NmemP Kuarda el contenido de -. en la direccin de memoria
especificada. Si tenemos el valor "0"0""0 en el registro -. y
se desea almacenarlo en la posicin de memoria ,0, la
instruccin es SD- ,0. Es equivalente a usar la instruccin
3:; ,0,-.
Esta instruccin se encuentra disponi#le para tener
compati#ilidad con versiones anteriores. Es mejor usar 3:;
de#ido a que si se desea pasar alg>n dato de una direccin de
memoria a otra usando L$- y SD- se necesitar6an dos
instrucciones: L$- mem" y luego SD- mem8, mientras que
con 3:; ser* as6: 3:; mem8,mem"
0, C .-/ Entercam#ia los valores de los registros -. y /. Esta
instruccin no necesita par*metros.
04 C 0L- +one a cero -. (-. @ 0)
0! C +<S= NregistroP Env6a el valor del registro especificado a la pila
0G C +:+ NregistroP Extrae de la +ila el >ltimo valor llevado por +<S= (indicado
por el registro S+) y lo almacena en el registro especificado.
Sinta3is Des-rip-i/n
09 C EA0 NdestP Encrementa en " el destino especificado, el par*metro puede
ser una direccin de memoria o un registro. Si en la posicin
de memoria E/ esta el valor "00", al ejecutar EA0 E/ se
o#tiene que a%ora el valor de E/ es "0"0.
0 C $E0 NdestP $ecrementa en " el destino especificado. Si el destino da
como resultado cero el flag ? se pone a " (? @ ").
"0 C 3:; Ndest,origP 0opia el valor almacenado en el origen al destino. El destino
yFo origen pueden ser registros o direcciones de memoria o
com#inacin de estos. +ara copiar lo que esta en la posicin
de memoria "8E a la posicin $8 se usa la instruccin 3:;
$8,"8E
"" U -A$ Ndest,origP +roducto lgico entre los dos operandos escri#iendo el
resultado en el destino. Los par*metros pueden ser
direcciones de memoria o 2egistros. Si -.@"00""0" y la
posicin (,')@""0"", al ejecutar la instruccin -A$ -.,,'
se o#tiene -.@"00". :#serve que se dejan los #its en com>n
que tienen los dos n>meros.
"8 U A:D NdestinoP A: lgico, invierte los #its del operando formando el
complemento del primero. Si en -.@"00"", al ejecutar A:D
-. se o#tiene -.@"""""""""""0""00
", U :2 Ndest,origP Suma lgica entre los operandos escri#iendo el resultado en
el destino. Si en (,-)@"00""0" y en (,/)@""0"", al ejecutar
la instruccin :2 ,-,,/ se o#tiene en (,-)@"0""""".
"4 U .:2 Ndest,origP Suma exclusiva entre los operandos escri#iendo el resultado
en el destino. Si en (,-)@"00""0" y en (,/)@""0"", al
ejecutar la instruccin .:2 ,-,,/ se o#tiene en
(,-)@"0"0""0.
"& U 2:L Ndest,vecesP 2ota los #its a la i7quierda las veces especificadas (en
decimal), los #its que salen por la i7quierda reCentran por la
derec%a. En el flag del 0arry (0) queda el >ltimo #it rotado.
Si en (GE)@ "0"""0, al ejecutar... se o#tiene en GE
y en 0
2:L GE,8 "0"""000 0
2:L GE,G "0"""00000000 0
2:L GE,", ""00000000000"0" "
"! U 2:2 Ndest,vecesP 2ota los #its a la derec%a las veces especificadas (en
decimal), los #its que salen por la derec%a reCentran por la
i7quierda. El flag 0 guarda el >ltimo #it rotado.
"G U S=L Ndest,vecesP $espla7a los #its a la i7quierda el n>mero de veces
especificado (en decimal), agregando ceros a la derec%a, el
0arry 'lag guarda >ltimo #it despla7ado
"9 U S=2 Ndest,vecesP $espla7a los #its a la derec%a el n>mero de veces
especificado (en decimal), agregando ceros a la i7quierda, el
flag 0 guarda >ltimo #it despla7ado. Si en ("-)@"0"""0
Sinta3is Des-rip-i/n
-l Ejecutar... se o#tiene en "- y en 0
S=2 "-,8 "0"" "
S=2 "-,! 0 "
S=2 "-,"" 0 0
80 C -$$ NmemP Suma -. con el dato de la posicin de memoria indicada.
-. @ -. O (memoria).
8" C S</ NmemP 2esta a -. el dato de la posicin de memoria indicada.
-. @ -. C (memoria).
88 C 3<L NmemP 3ultiplica: -. @ -. L (memoria).
Si el n>mero resultante supera su longitud en #inario de "!
#its, este resultado se parte almacenando los #its m*s
significativos en el registro /.. Si el resultado de una
operacin es, pr ejemplo,"0""0"000""""000"0""" (8" #its),
los registros quedar6an as6:
- @ "000""""000"0""" (los >ltimos "!#its)
/ @ "0""0 (los primeros /its)
Dam#i5n se activa el flag :verfloB, para indicar que en la
>ltima operacin sucedi esto.
8, C $E; NmemP $ivide: -. @ -. F (memoria), /.@ mdulo o residuo.
84 C 0LA Limpia el Aegative 'lag. A @ 0
8& C 0L0 Limpia el flag 0arry (0 @ 0).
8! C SD0 +one a uno el flag 0arry (0 @ ").
8G C 030 Aiega el flag 0arry 'lag (0 @ 0V).
8 C L::+ NmemP $ecrementa 0. y va a la +os de memoria si 0. no es cero
,0 C W3+ NmemP Salto incondicional. +0 @ direccin de memoria donde est*
la siguiente instruccin a ejecutar.
," C WEX NmemP Salta si el flag ? es uno (? @ ", +0 @ contenido de la
memoria).
,8 C 03+ NmemP 0ompara -. con NmemP, si -. es mayor, ?@0 A@0, si es
igual ?@" A@0, si es menor ?@0 A@". Si -.@"0""0 y en
(4K)@""00, al ejecutar la instruccin 03+ 4K se o#tine que
como el n>mero almacenado en -. es mayor entonces: ?@0
y A@0
,, C W3E NmemP Salta si el flag A es uno (A @ ", +0 @ contenido de la
memoria). -l ejecutar, por ejemplo, la instruccin W3E ,'
inmediatamente despu5s de ejecutar la instruccin del
Sinta3is Des-rip-i/n
ejemplo anterior de la instruccin ,8, se verifica el flag A, y
como en este caso se encuentra en 0 (porque el n>mero no es
menor) entonces no se reali7a dic%o Salto a ,' porque el
valor de +0 no se modifica, el programa sigue su ejecucin.
,4 C W3- NmemP Salta si los flags ? y A son cero (? @ 0 y A @ 0, +0 @
contenido de memoria). Siguiendo con el ejemplo de la
instruccin ,8, al ejecutar seguidamente W3- K& se verifican
los flags A y ?, y como en este caso los dos son 0 (porque el
numero es menor) entonces se reali7a un salto a K&, ya que el
valor de +0 se modifica, y el programa sigue su ejecucin.
,& C W0 NmemP Salta si el flag 0 est* a uno (0 @ ", +0 @ contenido de
memoria).
,! C WA0 NmemP Salta si el flag 0 est* a cero (0 @ 0, +0 @ contenido de
memoria).
,G C W: NmemP Salta si el flag : est* a uno (: @ ", +0 @ contenido de
memoria).
,9 C WA: NmemP Salta si el flag : est* a cero (: @ 0, +0 @ contenido de
memoria).
, C WAE NmemP Salta si el flag ? es cero (? @ 0, +0 @ contenido de memoria).
40 C L$D Lee un valor del teclado y lo lleva al registro -. Esta
instruccin es para comunicarse con el usuario, pidi5ndole
que entre un dato. Se puede colocar una descripcin del dato
que pide, que se mostrar* en tiempo de ejecucin.
4" C E-+ Escri#e en pantalla el contenido del registro -.. Esta
instruccin tam#i5n es para comunicarse con el usuario. Se
puede colocar una descripcin del dato que se entrega, este se
mostrar* en tiempo de ejecucin.
48 C 3SK 3uestra un mensaje en pantalla. Ej: 3SK Y=ola 3undo ZZY
&0 C L$/ NmemP Se carga en -. el dato almacenado en la direccin NmemP O
/.
Si /.@""00 y (8/)@,-1 L$/ "' carga ,- en -..
-claracin: ""00@01 "'O0@8/
&" C SD/ NmemP Kuarda el contenido de -. en la direccin NmemP O /.. Si
/.@"0" 1 SD/ ,- guarda -. en ,'
&& U L$' NmemP 0arga en /. y -. un n>mero de ,8 #its (EEEE) que est*
almacenado en la dir NmemP y memO". En /. quedan los
Sinta3is Des-rip-i/n
d6gitos m*s significativos. Ej: Supongamos que el n>mero
0"0000"0""00"000"000000000000000 est* cargado en
memoria del siguiente modo:
08- @ 0"0000"0""00"000 (Los 3S/[s)
08/ @ "000000000000000 (Los LS/[s)
<n L$' 8- dejar6a el siguiente resultado:
/. @ 0"0000"0""00"000
-. @ "000000000000000
CCCCCCCCCCCCCCCCCCCCCCCCCC
Aota: +ara pedirle al usuario o mostrar estos n>meros EEEE
G&4 en pantalla, usar puerto ", con las instrucciones EA -.,"
y :<D ",-.
&! U SD' NmemP Kuarda en NmemP y memO" el contenido de /. y -.. Ej: Si
-. y /. tienen los mismos valores del ejemplo anterior, un
SD' 8- deja la memoria con el valor inicial del ejemplo
anterior.
!0 U -$$' NmemP Suma n>meros de ,8 #its: En /. y -. queda el resultado de
la suma de estos mas el contenido de NmemP y memO". Estos
n>meros EEEE G&4 pueden ser de punto flotante, o enteros
desde C8"4G49,!4G %asta 8"4G49,!4G Si en cualquier
operacin aritm5tica se so#repasa este valor, se activa el
:verfloB flag.
!" C S</' NmemP 2esta un n>mero de ,8 #its: /. y -. @ /. y -. C NmemP y
NmemO"P. Esta instruccin se puede utili7ar como un 03+
para n>meros de ,8 #its.
!8 C 3<L' NmemP 3ultiplicacin: /. y -. @ /. y -. L NmemPy NmemO"P Si
el resultado es R 8"4G49,!4G, 2esultado @ 8"4G49,!4G y
:verfloB 'lag @ "
!, C $E;' NmemP $ivisin: /. y -. @ /. y -. F NmemPy NmemO"P, en 0.
queda el residuo de la divisin en entero de "! #its .
!4 C ED:' 0onversin de Entero a 2eal: 0onvierte un n>mero entero
("!#its) almacenado en -. al mismo n>mero pero
representado en 2eal EEEEG&4(,8#its), el 2esultado de la
conversin queda en /. (3S/[s) y -.. Los registros de
control cam#ian de acuerdo al n>mero convertido: Y?Y si el
n>mero es cero, YAY si el n>mero es negativo.
!& C 'D:E 0onversin de 2eal a Entero: 0onvierte un n>mero 2eal
(,8#its) a su equivalente en entero /. y -. en un entero
("!#its), el 2esultado queda en -.. Los registros de control
cam#ian de acuerdo al n>mero convertido: Y?Y si el n>mero
es cero, YAY si el n>mero es negativo, Y:Y si el numero real
es mayor de !&&,&.
90CEA registro,puerto Lleva al 2egistro el valor retornado por el puerto
especificado. Ej: EA -.,91 lleva a -. el valor retornado por
el puerto 9 (2eloj: los segundos del sistema).
9"C:<D Escri#e en el puerto especificado, el valor del registro.
Sinta3is Des-rip-i/n
puerto,registro
0 C A:+ Esta operacin no %ace nada.
C =LD Dermina el programa. Dodo programa lleva esta instruccin
para indicarle al simulador que el programa %a terminado su
ejecucin.
Aota: Keneralmente las instrucciones de salto condicional ,", ,,, ,4 y , se utili7an
inmediatamente despu5s de usar la instruccin ,8 C 03+

También podría gustarte