我在为 DOS 制作 TSR com 文件时遇到了麻烦。它应该在第 21 个中断时设置一个新的处理程序,终止并保持驻留。新处理程序应将控制权转移到旧的中断 21h 处理程序。我保存了它的中断向量,但不知道如何正确调用它。这是一个程序:
.model tiny
.data
old_int21h dw ?, ?
.code
org 100h
start:
;saving old interrupt vector
mov ax, 3521h
int 21h
mov [old_int21h], bx
mov [old_int21h + 2], es
;setting new interrupt vector
cli
push ds
push cs
pop ds
lea dx, myint21h
mov ax, 2521h
int 21h
pop ds
sti
; TSR
lea dx, start
int 27h
myint21h proc
; doing something
; want to transfer control to an old interrupt 21h handler here. How?
iret
myint21h endp
end start