;d0 0号中断 整地是在发生溢出的时候选择一片空闲的内存空间然后放置可以显示溢出时候的那个overflow 将这段
;程序复制到es:[di] 处
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,0200h;将ds:[si] 处的内容复制到es:[di] 处
mov cx,offset do0end- offset do0
cld
rep movsb
;mov word ptr es:[0*4],200h ;设置中断向量的入口地址的偏移地址
;mov word ptr es:[0*4+2],0 ;设置中断向量的入口地址的段地址
;就是上面的这两句是什么作用,我现在只能把其他的看懂,加上这两句就不懂了但是我试过去掉之
;后还可以显示
mov ax,0f000h ;除法溢出
mov dx,22d
mov cx,10d
div cx
mov ax,4c00h
int 21h
do0:jmp short dostart ;下面是显示将溢出的的时候显示溢出
db "overflow!"
dostart:
mov ax,cs
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,12*160+36*2
mov cx,9
s:mov al,[si]
mov es:[di],al
mov al,2
mov es:[di+1],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end:nop
code ends
end start |