assume cs:code,ss:stack
stack segment
db 32 dup (0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,32
mov ax,0
mov es,ax
mov di,0200h
mov ax,cs
mov ds,ax
mov si,offset do0
mov cx,offset over
sub cx,si
cld
rep movsb ;安装完毕
mov dx,0
mov ax,0200h
mov es:[0],ax
mov es:[2],dx ;中断向量设置完毕
mov dx,1 ;测试中断程序
mov ax,0
mov bx,1
div bx
mov ax,4c00h
int 21h
do0:jmp short begin
db 'overflow!',0
begin:mov ax,cs
mov ds,ax
mov si,0202h
mov ax,0b800h
mov es,ax
mov di,12*160+32*2
s:mov cl,[si]
mov ch,0
jcxz ok
mov ch,42h
mov es:[di],cx
add di,2
inc si
jmp short s
ok:mov ax,4c00h
int 21h
over:nop
code ends
end start
要注意的问题:
1.数据部分放置的位置
2.中断处理程序中要像子程序一样对用到的寄存器进行保护吗??