编写0号中断的处理程序
使得在除法溢出的时候,在屏幕上显示divide error!,然后返回dos界面
代码如下:
assume cs:code
code segment
start:
mov ax,0
mov ds,ax
call error
mov ax,1000h
mov bl,1
div bl
mov ax,4c00h
int 21h
;###################################################
;子程序error:用来处理除法错误
error:
push ax
push cx
push ds
push es
push si
push di
mov ax,0
mov es,ax
mov di,200h
mov ax,cs
mov ds,ax
mov si,offset do0
mov cx,offset do0_end - offset do0
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[0],200h
mov word ptr es:[2],0
jmp near ptr do0_end
;***************************************************
;显示在dos界面上
do0:
jmp short do0_start
db 'divide error!!'
do0_start:
mov ax,cs
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,10*160+20*2
mov cx,14
s:
mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2
inc si
add di,2
loop s
mov ax,4c00h
int 21h
;***************************************************
do0_end:
pop di
pop si
pop es
pop ds
pop cx
pop ax
ret
code ends
end start
运行截图:
查看0000:0000 和0000:0200位置存的信息
查看修改后的 0000:0000 和0000:0200位置存的信息
g到mov ax,4c00h 查看结果
或者直接运行exe查看结果
再重新写一个除法溢出代码error 运行查看结果