0

我创建了一个程序,用我自己的名为“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,但我不知道把它放在哪里。
如果你给我一个实际的答案而不是一些链接和教程会很好,因为我阅读了它们,阅读了所有书籍,但我仍然无法弄清楚。
如果您需要整个代码,我可以编辑帖子并将其放在上面。
提前致谢。

4

1 回答 1

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不会执行。

于 2014-10-31T17:25:12.470 回答