汇编语言学习(八)

本部分主要是王爽《汇编语言》第12、13、14章的总结概括。

内容为:内中断、int指令和端口。

1.内中断

任何一个通用的CPU,都可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理

这种信息可称为中断信息

根据信息来自CPU的内部还是外部,中断信息可分为内中断外中断

对于8086CPU内中断:

1.中断源产生中断信息,并对应相应的中断类型码:
  • 除法错误 0
  • 单步执行 1
  • 执行into指令 4
  • 执行int指令 int n中的n是中断类型码
2.CPU用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址

对于8086PC机,中断向量表指定放在内存地址0处。

其中一个表项占两个字,高地址存放段地址,低地址存放偏移地址。

3.中断过程

(1)从中断信息中取得中断类型码

(2)标志寄存器的值入栈

(3)设置标志寄存器的第8位TF和第9位IF的值为0

(4)CS内容入栈

(5)IP内容入栈

(6)从内存地址为中断类型码*4和中断类型码*4+2的两个字单元中读取中断处理程序的入口地址设置CS和IP

4.执行中断处理程序

中断处理程序的编写方法与子程序比较类似:

(1)保存用到的寄存器

(2)处理中断

(3)恢复用到的寄存器

(4)用iret指令返回

其中iret指令功能为:

push IP
push CS
popf
5.关于TF为何设置为0

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

避免在执行中断处理程序时发生中断,陷入死循环,在执行中断程序前将TF设置为0。

6.响应中断的特殊情况

在执行完向ss寄存器传送数据的指令后,即使是发生中断,CPU也不会响应。

这是为保证设置完ss寄存器的值,可以接着设置sp寄存器的值。从而保证ss:sp指向正确的位置。

我们应该利用这个特性,将设置sssp</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值