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.

Tabla 5.11: Tabla de Instrucciones y Códigos de Operación de la Arquitectura x86
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