请教如何修改中断向量表?

时间:2023-01-23 18:43:46
我最近学习汇编,遇到一个问题:
就是在不使用dos中断的情况下,只使用bios中断的前提下,怎样修改中断向量表里的内容
如对int21的服务程序入口地址进行重定位??

6 个解决方案

#1


可以直接访问 0000:0084 处的 dword, 那里是 int21h 的中断处理例程的入口地址, 第一个 word 是 offset, 第二个是其 seg. 要修改的话, 应该先保存原来的内容, 再修改成自己的. 保存原来的内容, 一是可以通过自己的 int21h 中断例程来访问原来的例程, 实现自己的不能完成的功能; 二就是自己的代码撤离时, 可以恢复原来的, 这样此后的int21h 还可以被正常访问.

#2


严重同意楼上的!

#3


中断号*4 

如:
21*4=84  cs:0084 为 21H 中断处理程序的入口地址,自己改吧,记得改前要保存原来的中断入口地址,以后要恢复保证原来的中断程序正常使用。

#4


mov ax, 3521h
int 21h
;
mov ax, 2521h
int 21h

#5


自己写中断程序很是复杂,写的时候如果有相类似的中断,最好就选择它覆盖,如楼上所说,要保存原来的中断向量,以便恢复.最后用自己的代替.

#6


都是同一个办法,保存原来的中断向量,覆盖中断向量,完成工作之后再恢复原来的中断向量

#1


可以直接访问 0000:0084 处的 dword, 那里是 int21h 的中断处理例程的入口地址, 第一个 word 是 offset, 第二个是其 seg. 要修改的话, 应该先保存原来的内容, 再修改成自己的. 保存原来的内容, 一是可以通过自己的 int21h 中断例程来访问原来的例程, 实现自己的不能完成的功能; 二就是自己的代码撤离时, 可以恢复原来的, 这样此后的int21h 还可以被正常访问.

#2


严重同意楼上的!

#3


中断号*4 

如:
21*4=84  cs:0084 为 21H 中断处理程序的入口地址,自己改吧,记得改前要保存原来的中断入口地址,以后要恢复保证原来的中断程序正常使用。

#4


mov ax, 3521h
int 21h
;
mov ax, 2521h
int 21h

#5


自己写中断程序很是复杂,写的时候如果有相类似的中断,最好就选择它覆盖,如楼上所说,要保存原来的中断向量,以便恢复.最后用自己的代替.

#6


都是同一个办法,保存原来的中断向量,覆盖中断向量,完成工作之后再恢复原来的中断向量