Está en la página 1de 3

RESUMEN INSTRUCCIONES SIMUPROC

Pedro Cuadra Guamán

REGISTROS DE PROPÓSITO ESPECIFICO:


PC : Program Counter. Indica en qué posición de
memoria está corriendo el programa.
MAR : Memory Address Register. Dirección del dato que
se quiere leer o escribir.
MDR : Memory Data Register. Valor del dato que se
quiere leer o escribir.
IR : Instruction Register. Puntero a la instrucción
que se quiere operar.
BP : Base Pointer. Puntero Base.
SP : Stack pointer. Puntero al tope de la pila.

FLAGS:
Z : 1 si la última operación dio 0.
N : 1 si la última operación dio negativo.
C : 1 si la última operación sacó un carry.
O : 1 si la última operación se desbordó.

PARÁMETROS:
reg : Registros del ALU. Pueden ser AX, BX, CX.
mem : Valor hexadecimal de un registro en memoria.
port : Puerto.
1 : Puerto Pantalla (E/S)
8 : Puerto Reloj (E)
9 : Puerto Interruptores (E)
13 : Puerto Altavoz (S)
a,b : Puede ser cualquier combinación entre mem y reg.
n : Valor entero.
SINTAXIS
INST [parámetro_1 [, parámetro_2]]
; Comentario
#DIR ; DIR = dirección de memoria. Debajo, el programa
; se escribirá desde este punto. Sirve también
; para guardar variables en binario.

INSTRUCCIONES:
01 LDA mem AX <- mem
02 STA mem mem <- AX
03 XAB Intercambia entre AX y BX
04 CLA AX <- 0
06 PUSH reg Envía a la pila el registro reg
07 POP reg Saca de la pila el ultimo valor y lo
coloca en el registro reg
08 INC a a <- a + 1
09 DEC a a <- a - 1
10 MOV a b a <- b
11 AND a b a <- a and b
12 NOT a a <- not a
13 OR a b a <- a or b
14 XOR a b a <- a xor b
15 ROL a n Rota a, n bits a la izquierda
16 ROR a n Rota a, n bits a la derecha
17 SHL a n a <- a corre n bits a la izquierda
18 SHR a n a <- a corre n bits a la derecha
20 ADD mem AX <- AX + mem
21 SUB mem AX <- AX - mem
22 MUL mem BX,AX <- AX * mem
23 DIV mem AX <- AX / mem
BX <- BX % mem
24 CLN N <- 0
25 CLC C <- 0
26 STC C <- 1
27 CMC C <- not C
29 LOOP mem CX <- CX - 1
CX > 0 => Salta a mem
30 JMP mem Salto incondicional a mem
31 JEQ mem Z => Salta a mem
32 CMP mem AX > mem => Z = 0, N = 0
AX = mem => Z = 1, N = 0
AX < mem => Z = 0, N = 1
33 JME mem N => Salta a mem
34 JMA mem !Z and !N => Salta a mem
35 JC mem C => Salta a mem
36 JNC mem !C => Salta a mem
37 JO mem O => Salta a mem
38 JNO mem !O => Salta a mem
39 JNE mem !Z => Salta a mem
40 LDT AX <- Valor ingresado por usuario
41 EAP Muestra en pantalla AX
42 MSG txt Muestra en pantalla el texto txt
50 LDB mem AX <- mem + BX
51 STB mem mem <- AX + BX
55 LDF mem AX <- mem[1]
BX <- mem[0]
56 STF mem mem[1] <- AX
mem[0] <- BX
60 ADDF mem BX,AX <- BX,AX + mem[0],mem[1]
61 SUBF mem BX,AX <- BX,AX - mem[0],mem[1]
62 MULF mem BX,AX <- BX,AX * mem[0],mem[1]
63 DIVF mem BX,AX <- BX,AX / mem[0],mem[1]
CX <- BX,AX % mem[0],mem[1]
64 ITOF AX <- Integer TO Float AX
65 FTOI AX <- Float TO Integer AX
80 IN reg port reg <- port
81 OUT port reg port <- reg
90 NOP No hace nada. Sirve para parchar
código
99 HLT Terminar programa