汇编语言学习笔记(十二)内中断

中断:是cpu处理外部突发事件的一个重要技术。
外部中断:可以屏蔽的中断(键盘中断、打印机中断等)
内部中断:因硬件的出错或运算出错等

根据中断类型码,定位中断处理程序,需要知道它的段地址和偏移地址
可以通过中断向量表找到中断处理程序的入口
中断向量表指定存放在内存地址0处
256*4=1024个字节(cs:ip)

在中断过程中,需要设置标志寄存器的TF和IF的值为0

中断过程如下:
获取中断类型码N
pushf
TF=0,IF=0
push cs
push ip
(ip)=(N*4) ,(cs)=(N*4+2)

常规的步骤:
1)保存用的的寄存器
2)处理中断
3)恢复用到的寄存器
4)用iret指令返回
iret:指令的功能用汇编语言描述:
pop ip
pop cs
popf

iret通常和硬件自动完成的中断过程配合使用
中断过程中,寄存器入栈顺序:标志寄存器、cs、ip
而iret出栈顺序:ip、cs、标志寄存器
执行后,cpu回到了执行中断处理程序前继续执行的程序

可以将do0放入0000:0200中;将do0的入口地址放入中断向量表中
某个代码段多长:
do0end: nop;do0end什么都不做,只是做个标号
offset do0end - offset do0
设置向量表:
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0

单步中断:
如果检测到标志寄存器TF位为1,则产生单步中断,引发中断过程。
不应该将ss:sp的设置分开
















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值