assume cs:code,ds:data,ss:stack
data segment
db 1 dup ('OverFlow!')
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
zeroint:push ax ;中断0
push es
push cx
push si
push di
push ds
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,1670
mov si,0
mov cx,9
s: mov al,[si]
mov es:[di],al
mov es:1[di],24h
inc si
add di,2
loop s
pop ds
pop di
pop si
pop cx
pop es
pop ax
iret
start:mov ax,code ;将中断0程序放入20:0处
mov ds,ax
mov si,0
mov ax,0020h
mov es,ax
mov di,0
mov cx,offset start
bj:cmp cx,si
je gai
cld
movsb
jmp bj
gai:mov ax,0 ;改变0中断向量表中的地址
mov es,ax
mov es:[0],ax
mov ax,20h
mov es:[2],ax
cu:mov ax,1000h ;进行除法
mov bh,1
div bh
mov ah,4ch
int 21h
code ends
end start
运行后直接弹出绿字,OverFlow! |