Una bandera de trampa permite el funcionamiento de un procesador en modo de un solo paso . Si dicho indicador está disponible, los depuradores pueden usarlo para recorrer la ejecución de un programa de computadora .
Interrupción de un solo paso
Cuando se le indica a un sistema que realice un solo paso, ejecutará una instrucción y luego se detendrá. Se puede examinar el contenido de registros y ubicaciones de memoria; si son correctas, se le puede decir al sistema que continúe y ejecute la siguiente instrucción. El indicador de captura Intel 8086 y la respuesta de interrupción de tipo 1 facilitan la implementación de una función de un solo paso en un sistema basado en 8086. Si se establece la bandera de trampa, el 8086 realizará automáticamente una interrupción de tipo 1 después de que se ejecute cada instrucción. Cuando el 8086 hace una interrupción de tipo 1, empuja el registro de banderas en la pila .
Configuración
El 8086 no tiene instrucciones para establecer o restablecer directamente el indicador de trampa. Estas operaciones se realizan presionando el registro de banderas en la pila, cambiando el bit de la bandera de trampa a lo que el programador quiere que sea, y luego sacando el registro de banderas de la pila. Las instrucciones para configurar la bandera de trampa son:
PUSHF ; Empuje banderas en la pila MOV BP, SP ; Copie SP a BP para usarlo como índice O PALABRA PTR [BP + 0], 0100H ; Establecer la bandera de TF POPF ; Restaurar marca Registrar
En realidad, no usa el indicador Trap de esta manera, porque normalmente está monitoreando un programa desde una Rutina de servicio de interrupción (ISR). Continúa la ejecución del programa mediante un IRET.
Int3ServiceRoutine:; Pila: Ret, Banderas PUSHA ; Pila: Ret, Banderas, AX, CX, DX, BX, SP, BP, SI, DI PUSH DS PUSH ES ; Pila: Ret, Banderas, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES ... el código ISR usando solo números enteros (de lo contrario, también debe almacenar registros de punto flotante) MOV BP, SP ; Pila: Ret, Banderas, AX, CX, DX, BX, SP , BP, SI, DI, DS, ES MOV BP, [BP + 10] ; SP almacenado O WORD PTR [BP + 0], 0100H ; Establecer la bandera TF en el registro de banderas almacenado POP ES POP DS POPA IRET ; continúe la ejecución para UNA instrucción, luego vuelva a llamar a ISR.
Reiniciando
Para restablecer el indicador de trampa, simplemente reemplace la instrucción OR en la secuencia anterior con la instrucción:
- Y PALABRA PTR [BP + 0], 0FEFFH
La bandera de captura se restablece cuando el 8086 realiza una interrupción de tipo 1, por lo que el modo de un solo paso se desactivará durante el procedimiento de servicio de interrupción.
|