Está en la página 1de 21

CLASIFICACION DE

INSTRUCCIONES
INSTRUCCIONES DE UN PROCESADOR
• Las instrucciones son especificaciones que se da a un procesador en
las que se debe indicar:
• La operación que debe realizar
• Los operandos que debe utilizar para realizar la operación indicada
• El lugar donde se almacenará el resultado de la operación
• El conjunto de instrucciones varía de un procesador a otro, según el
propósito del procesador.
• Los procesadores pueden ser:
• De propósito general
• De propósito específico
INSTRUCCIONES DE UN PROCESADOR
MEMORIA PRINCIPAL

Instrucciones
• Los operandos pueden estar en diversas partes del
computador: Variable
V[0]
• Memoria V[1]
V[2]
• Variable V[3]
• Estructuras de datos en memoria Pila
• Instrucciones
• Pila CPU
• Registros de propósito general RI DIR
• Puertos de entrada/salida
• De acuerdo a la ubicación de los operandos, las RPG
DAT

instrucciones pueden ser: CTRL


• Registro/registro; add r0, r2
• Registro/memoria; add r1, X
• Memoria/memoria; add X, Y
• Registro/inmediato; add r4, 18
• Memoria/inmediato; add X, 25 Puerto E
Puerto S

DISP. E/S
CLASIFICACION DE INSTRUCCIONES
CLASIFICACION DE INSTRUCCIONES
INSTRUCCIONES DE INSTRUCCIONES DE MANIPULACION DE DATOS INSTRUCCIONES INSTRUCCIONES
TRANSFERENCIA DE DE CONTROL DEL DE CONTROL DEL
DATOS PROGRAMA SISTEMA
INSTRUCCIONES ARITMETICAS

INC Destino, Incremento


DEC Destino, Decremento
ADD Sumando1, Sumando2
LOAD Origen SUB Minuendo, Sustraendo BOUND
STORE Destino MUL Multiplicando, Multiplicador Jxx Destino ENTER
MOV Destino, Origen DIV Dividendo, Divisor CALL Procedimiento LEAVE
PUSH Origen NEG Dato RET LOCK
POP Destino IRET ESC
IN Destino, Puerto
OUT Puerto, Origen INSTRUCCIONES LOGICAS Y DE MANIPULACION DE BITS
XCHG Dato1, Dato2
AND Dato1, Dato2
OR Dato1, Dato2
XOR Dato1, Dato2
NOT Dato

INSTRUCCIONES DE CORRIMIENTO

CORRIMIENTO CORRIMIENTO ROTACION


LOGICO ARITMETICO
ROL Dato
SHLL Dato SHAL Dato ROR Dato
SHLR Dato SHAL Dato
INSTRUCCIONES DE TRANSFERENCIA DE DATOS
• Se utilizan para enviar los datos de una parte del computador a otra
• No alteran los datos
• Después de una transferencia, el origen y el destino de datos contiene el
mismo valor
• Ejemplo:
MOV Destino, Origen; mov r0, r1
LOAD Origen; load X
STORE Destino; store Y
PUSH Origen; push r0
POP Destino; pop r2
IN Destino, Puerto E; in r0, 0xf2
OUT Puerto S, origen; out 0xf1, r1
XCHG Destino, Origen; xchg r2, r3
INSTRUCCIONES DE MANIPULACIÓN DE DATOS
• Transforman los datos de acuerdo a la operación especificada
• Pueden hacer referencia a cero o varios operandos
• Pueden ser:
• Aritméticas
• Lógicas y de manipulación de bits
• De corrimiento
INSTRUCCIONES ARITMETICAS
• Realizan operaciones aritméticas sobre los operandos
• Tratan a los operandos como números con signo
• Ejemplo:
Add r0, r1 ; r0 := r0 + r1
Sub r0, r1 ; r0 := r0 - r1
Mul r0, r1 ; [r0 + r?] := r0 * r1
Div r0, r1 ; r0 := r0 / r1, r? := r0 % r1
Inc r0 ; r0 := r0 + 1
Dec r0 ; r0 := r0 - 1
Neg r0 ; r0 := -r0
INSTRUCCIONES LOGICAS Y DE MANIPULACION DE BITS

• Realizan operaciones lógicas sobre los operandos


• Las operaciones se aplican a nivel de bit
• Tratan a los operandos como secuencias de bits sin signo
• Ejemplo.: //PRE:
• And R0, R1 R0 = 1100 1010
• Or R0, R1 R1 = 0000 1111 (MÁSCARA)
• Xor R0, R1 ---------
AND R0, R1 0000 1010 //PRE:
• Not R0
R0 = 1100 1010
R1 = 0000 1111 (MÁSCARA)
----------
OR R0, R1 1100 1111
INSTRUCCIONES DE CORRIMIENTO

• Desplazan los bits del operando a la izquierda o a la derecha


• Pueden ser:
• Corrimiento aritmético: Tratan a los operandos como números con signo
• Shal R0
• Shar R0
• Corrimiento lógico: Tratan a los operandos como secuencias de bits sin signo
• Shll R0
• Shlr R0
• Rotación: Tratan a los operandos como secuencias de bits sin signo
• Rol R0
• Ror R0
INSTRUCCIONES DE CORRIMIENTO

• Ejemplos:
• Corrimiento aritmético
SHAR (DESPLAZAMIENTO ARITMETICO A
SHAL (DESPLAZAMIENTO ARTITMETICO A LA IZQUIERDA)
LA DERECHA)
//PRE:
//PRE:
R0 = 0011 1011 == +059
R0 = 0011 1011 == +059
SHAL R0
SHAR R0
R0 = 0111 0110 == +118
R0 = 0001 1101 == +029
//PRE:
//PRE:
R1 = 1110 0110 == -26
R1 = 1110 0110 == -026
SHAL R1
SHAR R1
R1 = 1100 1100 == -52
R1 = 1111 0011 == -013
INSTRUCCIONES DE CORRIMIENTO

• Ejemplo
• Corrimiento lógico
SHLR (CORRIMIENTO LOGICO A LA DERECHA)

SHLL (CORRIMIENTO LOGICO A LA IZQUIERDA) //PRE:


R1 = 1110 0110
//PRE:
R0 = 0011 1011 SHLR R1
R1 = 0111 0011
SHLL R0
R0 = 0111 0110
INSTRUCCIONES DE CORRIMIENTO

• Ejemplo:
• Rotación
ROL (ROTACION A LA IZQUIERDA) ROR (ROTACION A LA DERECHA)

//PRE: //PRE:
R0 = 0011 1011 R0 = 0011 1011
R1 = 1110 0110 R1 = 1110 0110

ROL R0 ROR R0
R0 = 0111 0110 R0 = 1001 1101

ROL R1 ROR R1
R1 = 1100 1101 R1 = 0111 0011
INSTRUCCIONES DE CONTROL DEL PROGRAMA
• Controlan el flujo de ejecución de los programas
• El operando se trata como una dirección o etiqueta destino de salto
• Pueden ser:
• Salto condicional: Si el salto es efectivo, modifican el PC con la etiqueta
destino de salto
• Llamada a procedimientos: saltan a un módulo fuera de programa principal,
pero en su contexto
• Llamadas al sistema: saltan a un módulo del sistema operativo, fuera de
programa y de su contexto
INSTRUCCIONES DE CONTROL DEL PROGRAMA
• Salto condicional Instrucción j
Instrucción fuera
del bucle

Jz L1: Falso Verdadero


Inicializar variables Instrucción fuera
del bucle
If PSW[Z] == 1 PC=L1
Condicion de condicion

Bloque de WHILE
instrucciones Bloque de Inicializar variables
instrucciones F de condicion
Condicion

Jnz L2
V
DO - WHILE

If PSW[Z] == 0 PC = L2
Instrucción k Cuerpo del bucle
Cuerpo del bucle
Instrucción j
Modificar variables
de condicion Modificar variables
Expresion de condicion
Jump L3
Bloque de

PC = L3
Valor 01
instrucciones
CONDICION V
Bloque de Instrucción fuera
Valor 02
instrucciones del bucle
F
Bloque de
Otro
instrucciones
Instrucción fuera
del bucle
Instrucción k
INSTRUCCIONES DE CONTROL DEL PROGRAMA
• Ejemplo de instrucciones de salto:
INSTRUCCIONES DE CONTROL DEL PROGRAMA

• Llamada a procedimiento
PROGRAMA

Main: Proc1: PRINCIPAL


Procedimiento

.. Add r0, r1 I1
I7
.. …
Call Proc1 …
I2
I8
Sub r0, r3
… PC CALL

… I9

… RET
RET PC
Call Proc1 I4
I4 Pila

Xor r1, r3
… I5

I6
INSTRUCCIONES DE CONTROL DEL PROGRAMA

• Ejemplo de instrucciones de llamada a procedimientos:


INSTRUCCIONES DE CONTROL DEL PROGRAMA

• Llamada al sistema

Main: [int 0x10]:


.. …
Prog_Principal
. [Int 0x10]:
..
… .
Instrucciones .
Mov ah, 0x0e Cuerpo

Mov al, ‘!’ … .


INT 0x10 del
procedimiento
Int 0x10 IRET .
Instrucciones .
IRET
… INT 0x10
.
… Instrucciones
.
… END
INSTRUCCIONES DE CONTROL DEL PROGRAMA

• Ejemplo de instrucciones de llamada al sistema


INSTRUCCIONES DE CONTROL DEL SISTEMA

• Se utilizan para controlar el comportamiento del sistema o partes de este


• Ejemplo:
• enter/leave
• cli/sti
• Lock
INSTRUCCIONES DE CONTROL DEL SISTEMA
• Ejemplo

También podría gustarte