stringtranslate.com

Bandera trampa

Un indicador de trampa permite que un procesador funcione en modo de un solo paso . Si dicho indicador está disponible, los depuradores pueden usarlo para ejecutar un programa informático paso a paso .

Interrupción de un solo paso

Cuando se le ordena a un sistema que ejecute un solo paso, ejecutará una instrucción y luego se detendrá. Se pueden examinar los contenidos de los registros y las ubicaciones de memoria; si son correctos, se puede indicar al sistema que continúe y ejecute la siguiente instrucción. El indicador de trampa del Intel 8086 y la respuesta de interrupción de tipo 1 hacen que sea bastante fácil implementar una función de un solo paso en un sistema basado en el 8086. Si el indicador de trampa está configurado, el 8086 realizará automáticamente una interrupción de tipo 1 después de que se ejecute cada instrucción. Cuando el 8086 realiza una interrupción de tipo 1, empuja el registro del indicador en la pila .

Configuración

El 8086 no tiene instrucciones para activar o desactivar directamente el indicador de trampa. Estas operaciones se realizan colocando el registro de indicador en la pila, modificando el bit del indicador de trampa a lo que el programador desea que sea y luego sacando el registro de indicador de la pila. Las instrucciones para activar el indicador de trampa son:

PUSHF  ; Empujar banderas en la pila MOV BP,SP  ; Copiar SP a BP para usar como índice OR WORD PTR[BP+0],0100H  ; Establecer bandera TF POPF  ; Restaurar bandera Registrar

En realidad, no se utiliza el indicador Trap de esta manera, ya que normalmente se está supervisando un programa desde una rutina de servicio de interrupción (ISR). Se 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 utiliza 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  ; Establece la bandera TF en el registro de bandera almacenado  POP ES  POP DS  POPA  IRET  ; continúa la ejecución de UNA instrucción y luego vuelve a llamar a ISR.

Reinicio

Para restablecer la bandera 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 trampa se restablece cuando el 8086 realiza una interrupción de tipo 1, por lo que el modo de un solo paso se deshabilitará durante el procedimiento de servicio de interrupción.