;重写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
改写0号中断处理程序
最新推荐文章于 2021-05-17 11:34:02 发布