170427 汇编-内中断的指令和设置

来源:互联网 发布:网络中继 编辑:程序博客网 时间:2024/05/16 05:36

1625-5 王子昂 总结《2017年4月27日》 【连续第208天总结】

A.汇编语言 第十二章100%

B.CPU的中断过程为:

取得中断类型码

flag的值入栈

设置flag的第八位TF和第九位IF的值为0

CS的内容入栈

IP的内容入栈

从中断向量表中读取中断处理程序的入口地址,设置IP和CS

返回中断的指令是iret,与ret类似,从栈中读出IP、CS的值送回,不同点在于flag的值最后也从栈中送回

自己编写中断处理程序时,由于需要把程序代码以字节形式送入特定位置,因此需要使用rep movab(从ds:si送至es:di处)。而数据长度则由两个标号相减,让编译器算出长度:mov cx,offset do0end-offset do0

中断编码0的处理程序为显示div overflow,这个字符串应该与程序一同被送入特定位置(不会被覆盖、能够长期留置),否则使用data数据段,当安装程序结束后data段即被释放,此字符串将无法获得

单步中断:CPU在执行完一条指令之后,如果检测到flag的TF位为1,则产生单步中断,引发中断过程

单步中断的中断类型码为1

注意:由于当TF位为1时,CPU就将执行单步中断。因此为了避免无限循环,进入单步中断处理程序之前需要把TF位设置成0。

响应中断的特殊情况:

一般情况下,CPU在执行完当前指令后,如果检测到中断信息,就响应中断。

可是有一种特殊情况:SS:SP的赋值。如果向SS传入栈的段地址后中断,而未向SP传入栈的偏移地址,那么将产生与预想情况不同的错误。因此CPU判定,在执行完设置ss的指令后不响应中断。

C.明日计划

汇编语言 第十三章

0 0
原创粉丝点击