大会TSR(Terminate-Stay-Resident)中断9h

时间:2014-10-31 17:14:37

标签: assembly dos tsr

我创建了程序,用我自己的例程“tastatura”更改程序集中的基本INT 9h。

_inst_09:

cli
xor     ax, ax
mov     es, ax
mov     bx, [es:09h*4]
mov     [stari_int09_off], bx 
mov     bx, [es:09h*4+2]
mov     [stari_int09_seg], bx

mov     dx, tastatura
mov     [es:09h*4], dx
mov     ax, cs
mov     [es:09h*4+2], ax
sti
ret

我想做的是让这个程序驻留。我的意思是,当我的程序完成后,我仍然希望INT 9h指向我的日常工作 我知道我需要使用mov ah,31hint 21h来创建TSR,但我不知道该放在哪里。
如果你给我一个实际的答案而不是一些链接,那将是件好事。教程,因为我全部阅读,阅读所有书籍,我仍然无法弄清楚。
如果你需要整个代码,我可以编辑帖子并将其打开。
提前谢谢。

1 个答案:

答案 0 :(得分:2)

sti之后,调用中断21h的函数31h:

mov ax, 3100h ; function 31h in AH, exit code 0 in AL
mov dx, 17 ; memory size to keep; 16 for PSP alone
int 21h

就是这样。您的程序终止但保留在内存中。 int 21h之后的行不会执行。