王爽 汇编语言 第三版 实验12 编写0号中断的处理程序

时间:2022-06-16 01:13:19

题目


编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS

源代码(一)

assume cs:code
code segment
main: mov ax,cs
mov ds,ax
mov si,offset startF ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200H ;设置es:di指向目的地址
mov cx,offset endF - offset startF ;设置传输长度
cld ;设置传输方向为正
rep movsb
;将入口地址0:200H,写入中断向量表的0号表项中
mov ax,0
mov ds,ax
mov word ptr ds:[0*4],200H
mov word ptr ds:[0*4+2],0

mov ax,4C00H
int 21H

startF: jmp short catch
db 'divide error!'
;----------------------------------
;名称:catch
;功能:向屏幕中间输出 divide error!
;参数:无
;返回:无
;----------------------------------
catch: mov ax,cs
mov ds,ax
mov si,202H
mov ax,0B800H
mov es,ax
mov di,12*160+(160-13*2)/2+1 ;计算输出
mov cx,13
a: mov al,ds:[si]
mov ah,02H
mov es:[di],ax
inc si
add di,2
loop a
mov ax,4C00H
int 21H
endF: nop
code ends
end main


源代码(二)

assume cs:code
code segment
main: ;当CPU执行div bh后,会发生除法溢出错误,产生0号中断信息
mov ax,1000H
mov bh,01
div bh

mov ax,4C00H
int 21H
code ends
end main



程序运行示例图


王爽 汇编语言 第三版 实验12 编写0号中断的处理程序