Professional Documents
Culture Documents
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 4096 posiciones de 16
bits cada una: Desde 0 hasta 4095, o desde 000h hasta FFFh.
Esta memoria es suficiente para ejecutar gran variedad de simples y complejos
programas.
El simulador trabaja con constantes y variables en binario y direcciones (posiciones de
memoria) en hexadecimal.
Registros Generales: Los registros generales del procesador se usan para almacenar
informacin de uso rpido, ya que se accede a ellos a una velocidad mucho ms 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 variables
que se desean usar.
Este Procesador consta de 3 registros de propsito general, AX, BX y CX cada uno con
16 bits de capacidad.
Registros Apuntadores: Los registros apuntadores son los encargados de direccionar
las distintas posiciones de memoria del sistema. En SimuProc nos enccontraremos con
los siguientes:
PC IP: Program Counter o Instruction Pointer; contiene la direccin de
memoria de la prxima instruccin a ejecutar y es incrementado en cada nueva
instruccin.
MAR: Memory Address Register (Registro de Direccin de Memoria) 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 escriben o leen de memoria.
En el caso de una lectura, se pone en el MAR la direccin y se activa la seal de
leer, obteniendo en el MDR el dato buscado. En el caso de una escritura, se pone
en el MAR la direccin y en el MDR el dato a escribir en memoria, despus de
activa la seal de escribir, de esta forma almacenamos en memoria el dato.
IR: Instruction Register, en este registro se introduce la instruccin a ejecutar,
despus de haberla ledo de memoria accediendo a ella mediante la direccin
sealada en el PC; El contenido de este registro se puede dividir en cdigo de
operacin (el cdigo que seala la operacin que se realizar) y operandos.
Puede haber 2 operandos o slo uno. Ac es donde se decodifica e interpreta la
UTILIDADES
Editor Interno: Herramienta para facilitar la escritura de programas: Tiene resaltado de
sintaxis, soporte de Deshacer, Rehacer, Desplazamiento o tabulacin de cdigo
seleccionado (presionando ctrl. Shit I U), marcadores (presionando Ctrl Shit. 1-9 para
marcar y ctrl. 1-9 para ir al marcador), y otras opciones configurables.
Editor de Memoria: Se usa para inicializar las variables y/o constantes del programa
en ciertas posiciones de memoria una vez realizado el programa. Tambin 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 ste
modificando variables, o las mismas instrucciones con sus parmetros.
Dispositivos virtuales: Cada computador real utiliza dispositivos perifricos de alguna
clase para conectarse con el mundo exterior. SimuProc posee unos dispositivos de E/S,
virtuales que estn conectados a unos puertos a los que se puede acceders con las
instrucciones In y Out dependiendo del tipo de dispositivo.
Puerto 8 : Reloj. Lee los segundos del sistema, retorna un numero en binario
(entre 0 y 59) al registro especificado. (Sirve para generar nmeros aleatorios)
D=Re
E=Mi
F=Fa
G=Sol
A=La
B=Si
Por ejemplo: C6 => 440 * 2^[(6-4) + 3/12)] = 2093 Hz, casi 2.1 kHz
Conversor de Bases: Permite la conversin de una base a cualquier otra. Soporta desde
base 2 a base 36. Tambin posee conversin para nmeros de punto flotante a IEEE
754 y viceversa.
Por cada PUSH debe de haber luego un POP. Cuando un programa o funcin termina
su ejecucin la pila debe quedar como estaba antes de que este se ejecutara; en caso
contrario habr errores.
INSTRUCCIONES SOPORTADAS
Con las instrucciones que soporta este simulador se pueden escribir una gran cantidad
de programas para resolver muchos problemas diferentes. Su sintaxis ser la siguiente:
XX - INST [par1] [par2]
Sintaxis
Descripcin
01 - LDA [mem]
02 - STA [mem]
03 - XAB
04 - CLA
06 - PUSH [registro]
07 - POP [registro]
Esta
Sintaxis
Descripcin
08 - INC [dest]
09 - DEC [dest]
10 - MOV [dest,orig]
11 AND [dest,orig]
12 NOT [destino]
Sintaxis
20 - ADD [mem]
21 - SUB [mem]
22 - MUL [mem]
Descripcin
Al Ejecutar... se obtiene
en 1A
SHR 1A,2
SHR 1A,6
SHR 1A,11
1011
0
0
y en C
1
1
0
23 - DIV [mem]
24 - CLN
25 - CLC
26 - STC
27 - CMC
29 - LOOP [mem]
30 - JMP [mem]
31 - JEQ [mem]
32 - CMP [mem]
33 - JME [mem]
Sintaxis
Descripcin
ejemplo anterior de la instruccin 32, se verifica el flag N, y
como en este caso se encuentra en 0 (porque el nmero no es
menor) entonces no se realiza dicho Salto a 3F porque el
valor de PC no se modifica, el programa sigue su ejecucin.
34 - JMA [mem]
35 - JC [mem]
36 - JNC [mem]
37 - JO [mem]
38 - JNO [mem]
39 - JNE [mem]
40 - LDT
41 - EAP
42 - MSG
50 - LDB [mem]
51 - STB [mem]
55 LDF [mem]
Sintaxis
Descripcin
dgitos ms significativos. Ej: Supongamos que el nmero
01000010110010001000000000000000 est cargado en
memoria del siguiente modo:
02A = 0100001011001000 (Los MSBs)
02B = 1000000000000000 (Los LSBs)
Un LDF 2A dejara el siguiente resultado:
56 STF [mem]
60 ADDF [mem]
61 - SUBF [mem]
62 - MULF [mem]
63 - DIVF [mem]
64 - ITOF
65 - FTOI
80-IN registro,puerto
81-OUT
BX = 0100001011001000
AX = 1000000000000000
-------------------------Nota: Para pedirle al usuario o mostrar estos nmeros IEEE
754 en pantalla, usar puerto 1, con las instrucciones IN AX,1
y OUT 1,AX
Guarda en [mem] y mem+1 el contenido de BX y AX. Ej: Si
AX y BX tienen los mismos valores del ejemplo anterior, un
STF 2A deja la memoria con el valor inicial del ejemplo
anterior.
Suma nmeros de 32 bits: En BX y AX queda el resultado de
la suma de estos mas el contenido de [mem] y mem+1. Estos
nmeros IEEE 754 pueden ser de punto flotante, o enteros
desde -2147483647 hasta 2147483647 Si en cualquier
operacin aritmtica se sobrepasa este valor, se activa el
Overflow flag.
Resta un nmero de 32 bits: BX y AX = BX y AX - [mem] y
[mem+1]. Esta instruccin se puede utilizar como un CMP
para nmeros de 32 bits.
Multiplicacin: BX y AX = BX y AX * [mem]y [mem+1] Si
el resultado es > 2147483647, Resultado = 2147483647 y
Overflow Flag = 1
Divisin: BX y AX = BX y AX / [mem]y [mem+1], en CX
queda el residuo de la divisin en entero de 16 bits .
Conversin de Entero a Real: Convierte un nmero entero
(16bits) almacenado en AX al mismo nmero pero
representado en Real IEEE754(32bits), el Resultado de la
conversin queda en BX (MSBs) y AX. Los registros de
control cambian de acuerdo al nmero convertido: "Z" si el
nmero es cero, "N" si el nmero es negativo.
Conversin de Real a Entero: Convierte un nmero Real
(32bits) a su equivalente en entero BX y AX en un entero
(16bits), el Resultado queda en AX. Los registros de control
cambian de acuerdo al nmero convertido: "Z" si el nmero
es cero, "N" si el nmero es negativo, "O" si el numero real
es mayor de 65535.
Lleva al Registro el valor retornado por el puerto
especificado. Ej: IN AX,8; lleva a AX el valor retornado por
el puerto 8 (Reloj: los segundos del sistema).
Escribe en el puerto especificado, el valor del registro.
Sintaxis
Descripcin
puerto,registro
90 - NOP
99 - HLT