利用DEBUG进行系统的单步实时跟踪
本文给出修改中断调用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