4种情况将产生相应的中断信息
(1)除法错误
(2)单步执行
(3)执行into指令
(4)执行int指令
从内存0:0到0:3fff的1024个单元中存放着中断向量表
一个表项存放一个中断向量,也就是一个中断处理程序的入口地址,这个入口地址包括段地址和偏移地址,一个表项占两个字,高地址存放段地址,低地址存放偏移地址
中断过程:
(1) 取得中断类型码N
(2) pushf
(3) TF=0,IF=0
(4) push CS
(5) push IP
(6) (IP)=(N*4),(CS)=(N*4+2)
iret指令,相当于: ret指令,相当于: retf指令,相当于:
pop IP pop IP pop IP
pop CS pop CS
popf
iret与int指令配合使用,call和ret指令配合使用。
编写N号中断处理程序步骤:
(1)编写N号中断处理程序:do0
(2)将do0送入内存0:200处
(3)将do0的入口地址0:200存储在中断向量表N号表项中
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向目标地址
mov cx,offset do0end-offset do0 ;设置cx为传输长度
cld ;设置传输方向为正
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[N*4],200h
mov word ptr es:[N*4+2],0 ;设置中断向量表
mov ax,4c00h
int 21h
do0: ……
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
TF是flag的第8位,TF=1,产生单步中断,引发中断过程
IF是flag的第9位
CPU执行完设置SS指令后,不响应中断