assume cs:code
code segment
start: 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 //该命令将我们的0号除法溢出中断处理程序加载到内存 0:200h处
mov ax , 0
mov es , ax
mov word ptr es:[0*4] , 200h //将我们的中断处理程序在内存中的偏移地址放到中断向量表中0号中断的位置(0:0---0:1)
mov word ptr es:[0*4+2] , 0 //将我们的中断处理程序在内存中的段地址放到中断向量表中0号中断的位置(0:2---0:3)
mov ax , 1000h //上面的设置好后,就放入一个引发除法溢出中断的程序
mov bh , 1
div bh
mov ax , 4c00h
int 21h
do0:
jmp short do0start
db "divide error!"
do0start:
mov ax , cs
mov ds , ax
mov si , 202h
mov ax , 0b800h
mov es , ax
mov di , 12*160+36*2
mov cx , 0dh
s:
mov al , [si]
mov es:[di] , al
inc di
mov byte ptr es:[di] , 2
inc si
inc di
loop s
mov ax , 4c00h
int 21h
do0end:nop
code ends
code segment
start: 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 //该命令将我们的0号除法溢出中断处理程序加载到内存 0:200h处
mov ax , 0
mov es , ax
mov word ptr es:[0*4] , 200h //将我们的中断处理程序在内存中的偏移地址放到中断向量表中0号中断的位置(0:0---0:1)
mov word ptr es:[0*4+2] , 0 //将我们的中断处理程序在内存中的段地址放到中断向量表中0号中断的位置(0:2---0:3)
mov ax , 1000h //上面的设置好后,就放入一个引发除法溢出中断的程序
mov bh , 1
div bh
mov ax , 4c00h
int 21h
do0:
jmp short do0start
db "divide error!"
do0start:
mov ax , cs
mov ds , ax
mov si , 202h
mov ax , 0b800h
mov es , ax
mov di , 12*160+36*2
mov cx , 0dh
s:
mov al , [si]
mov es:[di] , al
inc di
mov byte ptr es:[di] , 2
inc si
inc di
loop s
mov ax , 4c00h
int 21h
do0end:nop
code ends
end start