En las entradas y salidas que se ejecutan desde el procesador entran tres conceptos que se deben conocer.
DMA
Con un incremento moderado de la l�gica asociada con el perif�rico se puede lograr transferir un bloque de informaci�n a o desde la memoria principal sin la intervenci�n directa de la UCP. Esto requiere que los perif�ricos o los controladores de E/S sean capaces de generar direcciones de memoria y transferir datos a o desde el bus del sistema. La UCP es todav�a la responsable de iniciar la transferencia de cada bloque. A partir de este punto el controlador de E/S realiza toda la operaci�n sin que la UCP tenga que ejecutar ning�n otro programa. La UCP y el controlador de E/S interaccionan s�lo cuando la UCP debe dar el control del bus del sistema al controlador de E/S, como respuesta a una petici�n de este �ltimo. Este tipo de capacidad es lo que se conoce como Acceso Directo a Memoria (DMA).
La mayor�a de los computadores de hoy d�a tienen la posibilidad de interrupci�n y de DMA. Un controlador de DMA posee un control parcial de la operaci�n de E/S. La UCP puede liberarse totalmente si se introduce en el computador un Procesador de E/S (PE/S) o canal. An�logamente al DMA, el PE/S tiene acceso a la memoria principal y puede interrumpir a la UCP, sin embargo puede emplear un repertorio de instrucciones diferentes del de la UCP (ya que est� orientado a operaciones de E/S).
CANALES
El canal de E/S es una extensi�n del concepto de DMA. Un canal de E/S tiene la capacidad de ejecutar instrucciones de E/S, lo que da un control total sobre las operaciones de E/S.
Las instrucciones de E/S se almacenan en la memoria principal y ser�n ejecutadas por un procesador de prop�sito espec�fico en el mismo canal de E/S.
Hay dos tipos comunes de canales de E/S, como se ilustra en la figura:
INSTRUCCIONES
Las instrucciones que se ejecutan en los procesadores, varia mucho de uno a otro, incluso en los modelos variantes de cada uno de ellos, algunas instrucciones cambian, para mejorar (a veces para empeorar) el rendimiento, o se a�aden nuevas instrucciones.
Las instrucciones tambi�n se pueden clasificar por el tipo de operaci�n que realiza, como por ejemplo. El control de cadenas de caracteres, el control de la memoria cache, Instrucciones aritm�ticas, instrucciones de transferencia de datos, instrucciones de comparaci�n.
En forma general las instrucciones del procesador, le permiten realizar tareas, esto ejecut�ndose a un tiempo una o varias de estas instrucciones, en algunos procesadores las instrucciones se dividan de acuerdo al �rea del procesador en la cual tuvieran acci�n.
A continuaci�n se presentan instrucciones de varios procesadores, algunos son ya viejas y no se usan en la actualidad, como se vera en algunos, que pertenecen a una misma familia, las instrucciones var�an o se han a�adido otras.
Instrucciones del 4004
Hay instrucciones de uno o dos bytes. Los primeros tardan 8 per�odos de reloj (un ciclo de instrucci�n). Los segundos tardan 16 per�odos de reloj (dos ciclos de instrucci�n).
La siguiente tabla muestra el grupo de instrucciones del acumulador.
INSTRUCCIONES DEL 80186 DE INTEL
PUSHA: Almacena los registros de uso general en la pila, en el siguiente orden: AX, CX, DX, BX, SP, BP, SI, DI.
POPA: Extrae los registros de uso general de la pila, retir�ndolos en el sentido inverso a PUSHA (pero descarta la imagen de SP).
PUSH inmed: Ingresa un valor inmediato a la pila.
INSB: Operaci�n: ES:[DI] <- Port DX (Un byte), DI<-DI+1 (si DF=0) o DI<-DI-1 (si DF=1).
INSW: Operaci�n: ES:[DI] <- Port DX (Dos bytes), DI<-DI+2 (si DF=0) o DI<-DI-2 (si DF=1).
OUTSB: Operaci�n: Port DX <- DS:[SI] (Un byte), SI<-SI+1 (si DF=0) o SI<-SI-1 (si DF=1).
OUTSW: Operaci�n: Port DX <- DS:[SI] (Dos bytes), SI<-SI+2 (si DF=0) o SI<:-SI-2 (si DF=1).
Shift dest,inmed. Se puede especificar directamente (sin cargar primero el valor en el registro CL) la cantidad de bits del desplazamiento. Shift es una de las siguientes instrucciones: ROL, ROR, RCL, RCR, SHL, SAL, SHR, SAR.
BOUND reg16,mem32. Verifica que el valor contenido en el registro se encuentre entre los dos valores indicados en la memoria (un valor est� dado por los dos primeros bytes, y el otro por los dos �ltimos). Si est� fuera de rango se ejecuta una interrupci�n interna de tipo 5. De esta manera se puede observar que BOUND es una instrucci�n de interrupci�n condicional, como INTO.
ENTER local_variables_size, nesting_level y LEAVE son instrucciones que sirven para facilitar a los compiladores de alto nivel la codificaci�n de subrutinas o procedimientos. Para ello utilizan la pila para almacenar los par�metros y las variables locales. Estos valores se acceden mediante direccionamiento indirecto usando el registro BP. Al principio de la subrutina se deber� indicar, mediante la instrucci�n ENTER, el tama�o total (en bytes) de las variables locales de la subrutina (local_variables_size) y cu�ntos punteros a variables locales (estos se acceder�n usando [BP-xxxx] donde xxxx es la posici�n relativa de la variable local) y par�metros (los valores que se almacenaban en el registro BP) de subrutinas de nivel superior se necesitan ver (nesting_level) (en general, este valor debe ser cero) (en [BP] est� almacenado el puntero a las variables locales y par�metros de la subrutina que llam� a la actual, en [BP+2] se obtienen los de la subrutina que llam� a la anterior (esto s�lo si nesting_level > 0), y as� sucesivamente. Al final de la subrutina, antes de la instrucci�n RET deber� haber una instrucci�n LEAVE. Cuando se usan estas instrucciones, el programa no debe manejar el registro BP
NUEVAS INSTRUCCIONES DEL PENTIUM
CMPXCHG8B reg, mem64 (Compare and Exchange 8 Bytes): Compara el valor de 64 bits ubicado en EDX:EAX con un valor de 64 bits situado en memoria. Si son iguales, el valor en memoria se reemplaza por el contenido de ECX:EBX y el indicador ZF se pone a uno. En caso contrario, el valor en memoria se carga en EDX:EAX y el indicador ZF se pone a cero.
CPUID (CPU Identification): Le informa al software acerca del modelo de microprocesador en que est� ejecutando. Un valor cargado en EAX antes de ejecutar esta instrucci�n indica qu� informaci�n deber� retornar CPUID. Si EAX = 0, se cargar� en dicho registro el m�ximo valor de EAX que se podr� utilizar en CPUID (para el Pentium este valor es 1). Adem�s, en la salida aparece la cadena de identificaci�n del fabricante contenido en EBX, ECX y EDX. EBX contiene los primeros cuatro caracteres, EDX los siguientes cuatro, y ECX los �ltimos cuatro. Para los procesadores Intel la cadena es "GenuineIntel". Luego de la ejecuci�n de CPUID con EAX = 1, EAX[3:0] contiene la identificaci�n de la revisi�n del microprocesador, EAX[7:4] contiene el modelo (el primer modelo est� indicado como 0001b) y EAX[11:8] contiene la familia (5 para el Pentium). EAX[31:12], EBX y ECX est�n reservados. El procesador pone el registro de caracter�sticas en EDX a 1BFh, indicando las caracter�sticas que soporta el Pentium. Un bit puesto a uno indica que esa caracter�stica est� soportada. La instrucci�n no afecta los indicadores.
RDMSR (Read from Model-Specific Register): El valor en ECX especifica uno de los registros de 64 bits espec�ficos del modelo del procesador. El contenido de ese registro se carga en EDX:EAX. EDX se carga con los 32 bits m�s significativos, mientras que EAX se carga con los 32 bits menos significativos.
RDTSC (Read from Time Stamp Counter): Copia el contenido del contador de tiempo (TSC) en EDX:EAX (el Pentium mantiene un contador de 64 bits que se incrementa por cada ciclo de reloj). Cuando el nivel de privilegio actual es cero el estado del bit TSD en el registro de control CR4 no afecta la operaci�n de esta instrucci�n. En los anillos 1, 2 � 3, el TSC se puede leer s�lo si el bit TSD de CR4 vale cero.
RSM (Resume from System Management Mode): El estado del procesador se restaura utilizando la copia que se cre� al entrar al modo de manejo del sistema (SMM). Sin embargo, los contenidos de los registros espec�ficos del modelo no se afectan. El procesador sale del SMM y retorna el control a la aplicaci�n o sistema operativo interrumpido. Si el procesador detecta alguna informaci�n inv�lida, entra en el estado de apagado (shutdown).
WRMSR (Write to Model-Specific Register): El valor en ECX especifica uno de los registros de 64 bits espec�ficos del modelo del procesador. El contenido de EDX:EAX se carga en ese registro. EDX debe contener los 32 bits m�s significativos, mientras que EAX debe contener los 32 bits menos significativos.
INSTRUCCIONES DE TRANSFERENCIA DE DATOS
MOV- Mover
CMOVE/CMOVZ- Movimiento condicional si es igual/Movimiento condicional si es cero
CMOVNE/CMOVNZ- Movimiento condicional si no es igual/Movimiento condicional si no es cero
CMOVA/CMOVNBE- Movimiento condicional si est� arriba/Movimiento condicional si no est� debajo o es igual
CMOVAE/CMOVNB- Movimiento condicional si est� arriba o es igual/Movimiento condicional si no est� debajo
CMOVB/CMOVNAE- Movimiento condicional si est� debajo/Movimiento condicional si no est� arriba o es igual
CMOVBE/CMOVNA- Movimiento condicional si est� abajo o es igual/Movimiento condicional si no est� arriba
CMOVG/CMOVNLE- Movimiento condicional si es mayor/Movimiento condicional si no es menor o igual
CMOVGE/CMOVNL- Movimiento condicional si es mayor o igual/Movimiento condicional si no es menor
CMOVC- Movimiento condicional si hay acarreo
CMOVNC- Movimiento condicional si no hay acarreo
CMOVO- Movimiento condicional si hay desbordamiento
CMOVNO- Movimiento condicional si no hay desbordamiento
CMOVS- Movimiento condicional si hay signo (negativo)
CMOVNS- Movimiento condicional si no hay signo (no negativo)
CMOVP/CMOVPE- Movimiento condicional si hay paridad/Movimiento condicional si la paridad es par
XCHG- Intercambio
BSWAP- Cambio de byte
XADD- Intercambiar y a�adir
CMPXCHG- Comparar e intercambiar
CMPXCHG8B- Comparar e intercambiar 8 bytes
PUSH- Almacenar en la pila
POP- Recuperar de la pila
PUSHA/PUSHAD- Almacenar registros de prop�sito general en la pila
POPA/POPAD- Recuperar registros de prop�sito general de la pila
CBW/CWDE- Convertir byte en palabra/Convertir palabra en palabra doble en el registro EAX
INSTRUCCIONES ARITM�TICAS BINARIAS
ADD- Sumar enteros
ADC- Sumar con acarreo
SUB- Restar
SBB- Restar con pr�stamo
IMU-L Multiplicaci�n con signo
MUL- Multiplicaci�n sin signo
IDIV- Divisic�n con signo
DIV- Divisi�n sin signo
INC- Incremento
DEC -Decremento
NEG- Negar
CMP- Comparar
ARITM�TICA DECIMAL
DAA- Ajuste decimal despu�s de a�adir
DAS- Ajuste decimal despu�s de sustraer
AAA- Ajuste ASCII despu�s de a�adir
AAS- Ajuste ASCII despu�s de sustraer
AAM- Ajuste ASCII despu�s de a�adir
AAD- Ajuste ASCII antes de dividr
INSTRUCCIONES L�GICAS
AND- Y
OR- O
XOR- O exclusivo
NOT- No
Estas son solo una peque�a parte de los cientos de instrucciones que tiene el procesador ( en este caso el Pentium), los procesadores predecesores, como el Pentium II, Pentium III y las variantes de ellos (XEON, CELERON) pueden contener otras instrucciones o variantes de estas.
Mnem�nico
Descripci�n
OPR
OPA
WRM
Escribir el acumulador en RAM
1110
0000
WMP
Escribir el acumulador en port de salida de RAM
1110
0001
WRR
Escribir el acumulador en port de salida de ROM
1110
0010
WPM
Escribir el acumulador en el medio byte especificado de RAM (se usa en los microprocesadores 4008 y 4009 solamente)
1110
0011
WR0
Escribir el acumulador en el car�cter de estado de RAM 0, 1, 2, 3
1110
0100
WR1
1110
0101
WR2
1110
0110
WR3
1110
0111
SBM
Restar el contenido de la posici�n previamente especificada de RAM del acumulador con pr�stamo
1110
1000
RDM
Cargar en el acumulador el contenido de la posici�n de RAM
1110
1001
RDR
Cargar en el acumulador el contenido del port de entrada de ROM 1110
1010
ADM
Sumar el contenido de la posici�n previamente especificada de RAM al acumulador con acarreo
1110
1011
RD0
Almacenar en el acumulador el car�cter de estado de RAM 0, 1, 2, 3
1110
1100
RD1
1110
1101
RD2
1110
1110
RD3
1110
1111
Mnem�nico
Descripci�n
OPR
OPA
CLB
Limpiar el acumulador y el acarreo
1111
0000
CLC
Limpiar el indicador de acarreo
1111
0001
IAC
Incrementar el acumulador
1111
0010
CLC
Complementar el acarreo
1111
0011
CMA
Complementar el acumulador
1111
0100
RAL
Rotar acumulador y acarreo hacia la izquierda
1111
0101
RAR
Rotar acumulador y acarreo hacia la derecha
1111
0110
TCC
Sumar acarreo al acumulador y limpiar el acarreo
1111
0111
DAC
Decrementar el acumulador
1111
1000
TCS
Restar acarreo del acumulador y limpiar el acarreo
1111
1001
STC
Poner el acarreo a uno
1111
1010
DAA
Ajuste decimal del acumulador
1111
1011
KBP
Convierte un c�digo 1 de 4 a binario en el acumulador
1111
1100
DCL
Designar l�nea de comando
1111
1101
Si llegaste a esta pagina desde un buscador
haz click aqui para ir a la pagina principal