-
-
[求助]关于修改中断向量表
-
发表于:
2007-7-28 23:01
9599
-
昨天晚上.
参考王爽的书籍,
写了那个第12章的实验
修改0号中断的中断向量和中断处理程序.
编程实现成功了,
在本程序中制造溢出后,
程序执行中断处理程序,输出“divide error!”
正常!
但是在修改程序退出后,
再次进入debug制造0号溢出中断时,
发现提示语句还是系统默认的提示语。
我就想不明白了,
我明明修改了0号中断向量以及中断处理程序,
问题1:
为什么还会是系统的默认提示,
问题2:
谁把这个给改回去的?
问题3:
怎么编程才可以实现,中断向量修改程序退出后,
修改后的中断向量以及中断处理程序不被系统改回去。
请各位朋友指点!
assume cs:code
;代码段
code segment
;程序入口
start:
;do0安装程序
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb
;设置中断向量表
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0h
;测试效果
mov ax,4444h
mov cl,1
div cl
;按任意键退出
mov ah,1
int 21h
;程序返回
mov ah,43h
int 21h
;中断处理程序
do0:
jmp short do0start
db "divide error!"
do0start:
push ax
push si
push di
push cx
push ds
push es
mov ax,cs
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,11*160+30*2
mov cx,13
s:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],42h
inc si
add di,2
loop s
pop es
pop ds
pop cx
pop di
pop si
pop ax
;中断处理程序返回
iret
do0end:nop
code ends
end start
[课程]FART 脱壳王!加量不加价!FART作者讲授!