利用DEBUG进行系统的单步实时跟踪 1994-11-04 大家都知道,状态寄存器中有一位是陷井标志位TF,当TF被置位时,如果进行指令跟踪,就产生单步中断。我们利用这一特点,在软件执行程序的任何时候,只要使TF标志位置位即可使程序进入单步监视状态,使应用程序被有效地进行跟踪。 本文给出修改中断调用INTO9H的方法判断DOS通讯区0040:0017H(左SHIFT键+右SHIFT键+CTRL键同时按下),如果是则将TF标志单元置1进入单步监视状态,否则进行正常工作处理。本程序采用COM格式文件编制,只要在用DEBUG调试应用程序前运行一下该程序,在需要时同时按下左SHIFT键+右SHIFT键+CTRL键,即可实现在DEBUG状态下连续单步监视应用软件。 ;TINT.ASM程序清单: code segment org 100h assume sc:code,ds:code begin: jmp start int9 dd 0000h int9h proc far pushf ; 完成原来中断调用功能 call dword ptr cs:int9 push ax; 保存当前寄存器状态 push bx push cx push dx push di push si push ds push es cli mov ax,0040h mov ds,ax mov bx,0017h mov al,[bx] and al,07h cmp al,07h jne int9end pushf pop ax or ax,0100h ;TF标志位置位 push ax popf int9end:sti pop es pop ds pop si  pop di  pop dx  pop cx  pop bx pop ax  iret  int9hendp start:push cs pop ds mov ax,3509h ;修改中断INT 09H int 21h mov word ptr int9[0],bx mov word ptr int9[2],es mov ax,2509h mov dx,offset int9h int 21h mov dx,offset start add dx,000fh mov cl,04h shr dx,cl mov ax,3100h int 21h code ends end begin