汇编语言读书笔记(12.内中断)

汇编语言(第三版,王爽)读书笔记

内中断

cpu都具备一种能力,检测到从cpu外部发送过来的或内部产生的一种特殊信息,并可以立即对所接受的信息进行处理。称其为中断信息,中断的意思就是,cpu不在接着向下执行,而是转去处理这个特殊信息。

内中断的产生

cpu内部有下面的情况发生的时候,将产生相应的中断信息:
(1)除法错误,执行div指令产生的除法溢出
(2)单步执行
(3)执行int指令
(4)执行into指令

中断处理程序

cpu收到中断信息后,应该转去执行该中断信息的处理程序。就要将cs:ip指向它的入口。
cpu的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系,使得cpu根据中断信息找到要执行的处理程序。
中断信息中包含标识中断源的类型码,根据cpu的设计,中断类型码的作用就是用来定位中断处理程序。

中断向量表

cpu用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址。
中断向量表就是中断处理程序入口地址的列表。
中断向量表在内存中存放,对于8086pc,中断向量表指定放在内存地址0处(内存0000:0000-0000:03ff的1024个单元中)一个表项存放一个中断向量,占2个字(4字节),1024个内存单元存放了256个表项。

中断过程

8086cpu在收到中断信息后,所引发的中断过程。

  1. (从中断信息中)取得中断类型码;
  2. 标志寄存器的值入栈(在中断过程中要改变标志寄存器的值,所以先将其保存在栈中)
  3. 设置标志寄存器的第8位tf和第9位if为0
  4. cs的内容入栈
  5. ip的内容入栈
  6. 从内存地址为中断类型码* 4和中断类型码* 4+2的两个字节中读取中断处理程序设置的ip和cs

中断处理程序iret指令

中断处理程序的编写方式和子程序比较相似:

  1. 保存到用到的寄存器
  2. 处理中断
  3. 恢复用到的寄存器
  4. 用iret指令返回
    iret指令的功能用汇编语法描述为:
pop ip
pop cs
popf

iret通常和硬件自动完成的中断过程配合,iret指令执行后,cpu回到执行中断前处继续执行

单步中断

基本上,cpu执行完一条指令后,如果检测到标志寄存器tf为1,则产生单步中断。单步中断类型码为1。
cpu提供单步中断功能的原因就是,为单步跟踪程序的执行过程提供了实现机制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值