;************************************************
;编写程序,使得在除法溢出时,在屏幕中间显示字符串
;"divide error!"然后返回dos
;************************************************
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 ;将中断处理程序放到内存中
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表
int 0
mov ax,4c00h
int 21h
do0: ;显示中断处理程序
push cx
push si
push ax
push es
push di
jmp short do0start
db 'divide errors! ',0
do0start:
mov ax,cs
mov ds,ax
mov si,207h ;注意:push ax指令的地址是0:202h,所以存放数据的地址为0:207h
mov ax,0b800h
mov es,ax
mov di,12*160+36*2 ;计算dos中间位置
xor cx,cx
s: mov cl,[si]
jcxz next
mov al,cl
mov es:[di],al
inc si
add di,2
jmp s
next:
pop di
pop es
pop ax
pop si
pop cx
iret
do0end:nop
code ends
end start