您的位置:首页 > 其它

改写0号中断处理程序

2009-10-23 14:24 274 查看
;重写0号中断处理程序

assume cs:code,ss:stack

stack segment

db 256 dup (0)

top label word

stack ends

code segment

start:

;设置stack内存空间和ss,sp之间的联系

mov ax,stack

mov ss,ax

mov sp,offset top

;将0号中断处理程序复制到内存0:200处

;因为内存0:200处是安全的

mov ax,cs

mov ds,ax

mov si,offset divdw

mov ax,0

mov es,ax

mov di,200H

mov cx,offset divdwend - offset divdw

rep movsb

;安装中断向量

mov ax,0

mov es,ax

mov word ptr es:[4*0],200H ;安装偏移地址

mov word ptr es:[4*0+2],0 ;安装段地址

;调用中断处理程序

int 0H

mov ax,4c00H

int 21H

;0号中断处理程序,显示over flow!

divdw:

jmp short s

str db 'over flow!','$'

s:

mov ax,0

mov ds,ax

mov dx,0202H ;因为中断处理程序被复制到内存0:200处,jmp short s占两个字节,所以字符串str的偏移地址为0202H

;显示'over flow!'

mov ah,09H

int 21H

mov ah,0H

int 16H

iret

divdwend:

nop

code ends

end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: