中斷處理程序
中斷處理程序的編寫方法和子程序的比較相似翻具,下面是常規(guī)的步驟:
1)保存用到的寄存器
2)處理中斷
3)恢復(fù)用到的寄存器
4)用iret指令返回椅野。
編程處理0號中斷(除法錯誤)
1)編寫可以顯示"overflow!"的中斷處理程序: do0;
2)將do0送入內(nèi)存0000:2000處鸣峭;
3)將do0的入口地址0000:0200存儲在中斷向量表0號表項(xiàng)中盆犁。
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 ax, 0 ;設(shè)置中斷向量表
mov es, ax
mov word ptr es:[0*4], 200h
mov word ptr es:[0*4+2],0
mov ax,4c00h
int 21h
do0:
jmp short do0start
db "overflow!"
do0start:
mov ax, cs
mov ds, ax
mov si, 202h
mov ax, 0b800h
mov es, ax
mov di, 12*160+36*2 ;設(shè)置es:di指向顯存空間的中間位置
mov cx, 9
s:
mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ax, 4c00h
int 21h
do0end:
nop
code ends
end start