词条 | Trap flag | |||||||||||||||||||||||||||||||||||||||||||||||||||
释义 |
A trap flag permits operation of a processor in single-step mode. If such a flag is available, debuggers can use it to step through the execution of a computer program. Single-step interruptWhen a system is instructed to single-step, it will execute one instruction and then stop. The contents of registers and memory locations can be examined; if they are correct, the system can be told to go on and execute the next instruction. The Intel 8086 trap flag and type-1 interrupt response make it quite easy to implement a single-step feature in an 8086-based system. If the trap flag is set, the 8086 will automatically do a type-1 interrupt after each instruction executes. When the 8086 does a type-1 interrupt, it pushes the flag register on the stack. SettingThe 8086 has no instruction to directly set or reset the trap flag. These operations are done by pushing the flag register on the stack, changing the trap flag bit to what the programmer wants it to be, and then popping the flag register back off the stack. The instructions to set the trap flag are: '''PUSHF''' ; ''Push flags on stack'' '''MOV BP,SP''' ; ''Copy SP to BP for use as index'' '''OR WORD PTR[BP+0],0100H''' ; ''Set TF flag'' '''POPF''' ; ''Restore flag Register'' Actually you do not use the Trap flag in this way, because you are normally monitoring a program from an ISR. You continue execution of the program by an IRET. Int3ServiceRoutine: ; ''Stack: Ret, Flags'' '''PUSHA''' ; ''Stack: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI'' '''PUSH DS''' '''PUSH ES''' ; ''Stack: Ret, Flags, AX, CX, DX, BX, SP, BP, SI, DI, DS, ES'' ''... the ISR code'' using only integer (otherwise you must also store floating point registers) '''MOV BP,SP''' ; ''Stack: Ret, Flags, AX, CX, DX, BX, '''SP''', BP, SI, DI, DS, ES'' '''MOV BP,[BP+10]''' ; ''Stored SP'' '''OR WORD PTR[BP+0],0100H''' ; ''Set TF flag in the stored Flag register'' '''POP ES''' '''POP DS''' '''POPA''' '''IRET''' ; ''continue execution for ONE instruction, then calling ISR again.'' ResettingTo reset the trap flag, simply replace the OR instruction in the preceding sequence with the instruction: AND WORD PTR[BP+0],0FEFFH The trap flag is reset when the 8086 does a type-1 interrupt, so the single-step mode will be disabled during the interrupt-service procedure.
2 : Central processing unit|Debugging |
|||||||||||||||||||||||||||||||||||||||||||||||||||
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。