汇编_内中断_外中断_中断处理

内中断:

1.取中断类型码n
2.标志寄存器入栈,IF=0,TF=0
3.CS,IP入栈
4.IP=n*4,CS=n*4+2
注意:

1.中断类型码是CPU内部产生。
2.IF(interrupt false)为0时不允许其他的可屏蔽中断,sti指令:IF=1,cli指令:IF=0。

外中断:

1.传入9号中断信息,判断CPU现在是否可以被中断。
2.标志寄存器入栈,IF=0,TF=0
3.CS,IP入栈
4.IP=n*4,CS=n*4+2
5.将数据通过I/O总线传入CPU。
注意:

中断类型码是外部设备通过数据总线传入CPU的。

中断处理:

在自定义有返回的中断时,首先要进行的操作。
1.存放标志寄存器

pushf

2.设置IF=0,TF=0

pushf
pop ax
and ax,11111100b

push ax
popf

3.IP和CS入栈,同时修改IP和CS为中断号的值。

call dword ptr ds:[0];调用原来的9号中断

猜你喜欢

转载自blog.csdn.net/qq_45931661/article/details/120588509
今日推荐