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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值