三件事:
编写可以将"overflow!"的中断处理程序:do0
将do0送入内存0000:0200中
将do0的入口地址0000:0200存到中断向量表0号表项中
又写了半天
只是因为掉了一个h
assume cs:code
code segment
start: mov ax,0000
mov es,ax
mov ax,0200h
mov di,ax
mov ax,cs
mov ds,ax
mov si,offset do0
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],0
mov ax,1000
mov bl,1
div bl
mov ax,4C00h
int 21h
do0: jmp short do0start
db "divideerror!"
do0start: mov ax,0
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,12*160+36*2
mov cx,9
mov ax,0
s: mov byte ptr al,ds:[si]
mov byte ptr es:[di],al
inc si
add di,2
loop s
mov ax,4C00h
int 21h
do0end:nop
code ends
end start
这一次在dosbox中可以显示,但是在winxp中不可以了不知道为啥