5.11 Modulo de Entrada/Salida e interrupciones
En esta etapa se incorporaron las instrucciones de manejo de pila y de interrupciones, ampliando la funcionalidad del simulador para cubrir un conjunto más completo de operaciones propias de la arquitectura x86. A continuación, se detalla el conjunto completo de instrucciones, incluyendo su clasificación, nemónicos y las acciones que representan.
Código operación | Instrucciones | Nemónico | Acción |
---|---|---|---|
MOV | Transferencia de datos | MOV destino, origen | 1- Copiar entre registros 2- Cargar a registro 3- Almacenar en memoria |
ADD | Aritmética | ADD destino, origen | 1- Sumar 2- Restar 3- Comparar |
JMP | Control de flujo | JMP destino | Salto incondicional JMP. Saltos condicionales Jxx. Llamadas a rutinas CALL y retorno RET |
PUSH, POP, OUT, IN | Pila y E/S | PUSH, POP, OUT, IN | Poner en la pila PUSH. Retirar de la pila POP. Enviar un byte al puerto del dispositivo de E/S. Recibir un byte del dispositivo de E/S |
INT , IRET | Interrupciones | INT , IRET | Llamar a una rutina de tratamiento de interrupción INT. Retornar de una rutina de tratamiento de interrupción IRET |
NOP , HLT | Control | NOP , HLT | No opera NOP. Detiene el CPU HLT |
EL ciclo de ejecucion es estas instrucciones es similar al ciclo de instrucción básico, pero con pasos adicionales para manejar la pila y las interrupciones. A continuación se detallan los pasos específicos para cada tipo de instrucción:
Subrutinas:
* CALL Dirección
4. 5. Se obtiene el operando de la instrucción.
6: ri
\(\leftarrow\) MBR
; SP
\(\leftarrow\) SP
- 1
7: MAR
\(\leftarrow\) SP
;
8: MBR
\(\leftarrow\) IP
9: write(Memoria[MAR])
\(\leftarrow\) MBR
10: IP
\(\leftarrow\) ri
- RET
4:
MAR
\(\leftarrow\)SP
5:MBR
\(\leftarrow\)read(Memoria[MAR])
6:IP
\(\leftarrow\)MBR
7:SP
\(\leftarrow\)SP
+ 1
Interrupciones:
* INT Dirección
4 y 5: Obtener segundo byte de memoria
6: ri
\(\leftarrow\) MBR
; SP
\(\leftarrow\) SP
- 1
7: MAR
\(\leftarrow\) SP
8: MBR
\(\leftarrow\) Ry
9: write(Memoria[MAR])
\(\leftarrow\) MBR
10: IP
\(\leftarrow\) ri
- IRET
4:
MAR
\(\leftarrow\)SP
5:MBR
\(\leftarrow\)read(Memoria[MAR])
6:IP
\(\leftarrow\)MBR
;SP
\(\leftarrow\)SP
+ 1