8086cpu的中断

1. 为什么需要中断??

       1.1   是为了让cpu具备一种能力,让cpu在执行指令的时候,检测到cpu内部或者外部的一种特殊信号,并且对这种信号做出处理。

       1.2 中断是怎么处理的?

          中断有中断源,中断向量表,中断处理程序。

            1.2.1中断源是触发中断处理程序的,比如我们点击键盘,触发外中断,当程序执行时候发现除法问题就会除法除法错误中断。 

           1.2.2 中断向量表是存在一块固定内存的地方,内存范围是0000:0000到0000:03FF,1024个内存单元,256个中断向量,其实没有256个,里面有0000:0200-0000:02FF这段内存是空的,很多人自己写中断例程的时候也往往写在这里。

           1.2.3 中断处理程序是预先写好在固定地方,内存地址就存在中断向量表里面。

   

          

2.中断的种类:内中断和外中断

   2.1   如果是cpu内部信号就称之为内部中断:

            内部中断分为四种:1.除法错误   对应的中断类型码为0  

                                                 2.单步执行  对应的中断类型码为0

                                                 3.执行into指令  对应的中断类型码为4

                                                 4:执行int指令  int  N  n是常数,

   2.2   外部中断,是指cpu对外部设备的控制。比如键盘,鼠标。

            pc系统的接口卡和主板上,装有这种接口芯片,这些外设接口芯片的内部有若干寄存器,

  cpu将这些寄存器当做端口来访问。外设的输入不直接送入内存和cpu。而是送入相关的接口 芯片的端口中,再有相关的芯片送到外设,cpu还可以向外设输出控制命令,而这些控制命令也是先送到相关芯片的端口中,然后再由相关的芯片根据命令对外设实施控制。cpu就通过中断机制来满足随时处理外设发出的信号。

          2.2.1 可屏蔽中断。cpu可以不响应的外中断,cpu是否响应可屏蔽中断,要看标志寄存器的IF位的设置,当CPu监测到可屏蔽中断信息时,如果IF=1,则执行完当前指令后,引发中断,否则不引发中断过程,所有的外设引发的都是可屏蔽中断

          2.2.2不可屏蔽中断。

3.自己编写中断程序。部分地方未写出

assume  cs:code

        code  segment 
        start :mov  ax,cs
               mov  ds,ax
               mov  si,offset do0
               
               mov  ax,0
               mov es,ax
               mov  di,200H
                
               mov  cx,offset  do0end-offser do0  //计算do0代码段的长度
               cld               
            rep movsb
            
            mov ax,4c00H
            int 21H
            
            do0:显示字符串"overflow"
            mov ax,4c00H
            int 21H
            
            do0end:nop
            code ends
             end start
        

猜你喜欢

转载自blog.csdn.net/Jbinbin/article/details/80890531
今日推荐