我创建了程序,用我自己的例程“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,31h
和int 21h
来创建TSR,但我不知道该放在哪里。
如果你给我一个实际的答案而不是一些链接,那将是件好事。教程,因为我全部阅读,阅读所有书籍,我仍然无法弄清楚。
如果你需要整个代码,我可以编辑帖子并将其打开。
提前谢谢。
答案 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
之后的行不会执行。