精华内容
下载资源
问答
  • 中断处理程序

    2018-11-12 15:21:00
    中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤: 1)保存用到的寄存器 2)处理中断 3)恢复用到的寄存器 4)用iret指令返回。 编程处理0号中断(除法错误) 1)编写可以显示"overflow!"的中断处理...

    中断处理程序的编写方法和子程序的比较相似,下面是常规的步骤:

    1)保存用到的寄存器

    2)处理中断

    3)恢复用到的寄存器

    4)用iret指令返回。

     

    编程处理0号中断(除法错误)

    1)编写可以显示"overflow!"的中断处理程序: do0;

    2)将do0送入内存0000:2000处;

    3)将do0的入口地址0000:0200存储在中断向量表0号表项中。

     

    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-offset do0
                      cld
                      rep  movsb
    
                      mov ax, 0                                 ;设置中断向量表
                      mov es, ax
                      mov word ptr es:[0*4], 200h
                      mov word ptr es:[0*4+2],0
    
                      mov ax,4c00h
                      int 21h
    
    do0:
                       jmp short do0start
                       db  "overflow!"
    
    do0start:
                       mov ax, cs
                       mov ds, ax
                       mov si, 202h
           
                       mov ax, 0b800h
                       mov es, ax
                       mov di, 12*160+36*2       ;设置es:di指向显存空间的中间位置
    
                       mov cx, 9
    
    
    s:
                        mov al, [si]
                        mov es:[di], al
                        inc si
                        add di, 2
                        loop s
    
                        mov ax, 4c00h
                        int 21h
    
    do0end:
                         nop
    
    code ends
    end start   

     

    转载于:https://www.cnblogs.com/gkp307/p/9946672.html

    展开全文
  • 中断处理程序及设备驱动程序 中断是指CPU在执行一个程序时,对系统中发生的某个事件做出的一个反应,它在操作系统中有着重要的有着重要的地位,时多道程序得以实现的基础。 引入缓冲区的原因: 外部中断:简称...

    中断处理程序及设备驱动程序


    中断是指CPU在执行一个程序时,对系统中发生的某个事件做出的一个反应,它在操作系统中有着重要的有着重要的地位,时多道程序得以实现的基础。

    引入缓冲区的原因:

    外部中断:简称中断,是由CPU以外的外部事件引起的

    陷入:又称为异常,是由CPU执行指令过程中检测到的一些内部事件引起的

    系统对多中断源有两种处理方式

    屏蔽中断

    嵌套中断

    I/O中断处理的工作过程

    1:测定是否有未响应的中断信号

    2:保护被中断进程的CPU环境

    3:转入相应的设备处理程序

    4:中断处理程序进行中断处理

    中断处理

    设备驱动程序

    接受上层软件发来的命令和参数,将其中的抽象要求转换为与设备相关的低层操作序列

    检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作。

     

     

     

     

     

     

     

     

    展开全文
  • 8086汇编0号中断处理程序

    千次阅读 2016-12-06 20:44:59
    1.中断的基本概念中断是指在计算机执行期间,CPU收到某个信号(来自软件或硬件),暂时保存正在执行的程序的上下文,转而去执行相应的中断处理程序. 2.8086CPU内部有内部有下面的情况发生时,将产生相应的中断信息. 除法...

    1.中断的基本概念

    中断是指在计算机执行期间,CPU收到某个信号(来自软件或硬件),暂时保存正在执行的程序的上下文,转而去执行相应的中断处理程序.

    2.8086CPU内部有内部有下面的情况发生时,将产生相应的中断信息.

    • 除法错误,比如div指令产生的除法溢出 中断码:0
    • 单步执行;             中断码: 1
    • 执行into指令 中断码:4
    • 执行int指令 中断码:n

        cpu收到中断信息后,就会对中断信息进行处理,而如何处理,可以由我们编程决定,我们编写的用来处理终端信息的程序就被称为中断处理程序,一般来说,对不同的中断信息,就要编写不同的处理程序.
        我们知道,要想让8086CPU执行某处的程序,就要将CS:IP指向它的入口地址.那么,产生中断后,怎么定位中断处理程序的入口地址呢?

    3.中断向量表

    CPU用8位的中断码通过中断向量表找到相应的中断处理程序的入口地址,简单的来说,就是一个中断码和中断处理程序入口地址的映射表:

    中断码 中断处理程序的入口地址
    0 0号中断处理程序的地址
    1 1号中断处理程序的地址
    …..

    中断向量表在内存中存放,内存0000:0000到0000:03FF的1024个单元中存放中断向量表.(8086规定).对于8086一个表项占32位,低16位表示的是偏移地址,高16位表示段地址.
    这里写图片描述
    比如说,产生中断3,8086就会在上图的内存区域的0000:0009~0000:000A处取得3号中断处理程序的偏移地址是0008,000A:000B处取段地址为0070,计算的得到中断程序的入口地址为0070:0008=00708H,CPU就会去执行00708处的指令,当然,我们要编写自己的中断处理程序,就需要把自己的中断处理程序放在内存的某个地方,然后修改中断向量表,当发生相应的中断时,就会执行用户自己的中断处理程序;

    中断处理程序存在哪片内存空间

    前面讲到内存0000:0000-0000:03FF,大小为1kB的空间是8086系统用来存放中断向量表的地方,8086支持256个中断,但是,实际上,系统中要处理的中断远没有256个,所以,在中断向量表中,很多单元是空的。
    中断向量表是PC系统中最重要的内存区,只用来存放中断处理程序的入口地址,DOS系统和其它应用不会使用,因此,我们可以用其空闲的内存区域存放我们的程序,一般从0000:0200至0000:02FF这256个字节是空的,操作系统和应用都不会占用.
    

    例子:
    0号中断处理程序:

    assume cs:code
    code segment 
    start: 
            mov ax,cs
            mov ds,ax ;源程序的段地址,
            mov si,offset do0 ;将中断处理程序的入口的偏移地址存在si中
            mov ax,0
            mov es,ax ;目的位置的段地址放在es中
            mov di,200h ;目的位置的偏移地址0000:0200处
            mov cx,offset do0end-offset do0 ;计算要把多少个字节拷贝.
            cld ; 将df置为0,
            rep movsb ;rep movsb 指定把代码段do0-do0end这段代码拷贝到0000:0200-0000:0200+(do0end-do0) 
    
            mov word ptr es:[0*4],200h ;修改偏移地址
            mov word ptr es:[0*4+2],0 ;段地址
    
            mov ax,4c00h
            int 21h
        do0: 
            jmp short do0start ;占两个字节
            db "divide error!"
    
        do0start:
            mov ax,cs;中断后cs=0,ip=200h
            mov ds,ax
            mov si,202h ; 指向db的首地址
    
            mov ax,0b800h 
            mov es,ax
            mov di,12*160+33*2
            mov cx,13 
        s:
            mov al,[si]
            mov es:[di],al 
            mov byte ptr es:[di+1],2h
            inc si
            add di,2
            loop s
    
            mov ax,4c00h
            int 21h
    do0end:nop
    code ends
    end start

    导致中断函数:

    assume cs:code
    code segment
    start:
        mov ax,1000h
        mov bh,1
        div bh ;产生0号中断
    code ends
    end start

    在dosbox中先执行中断处理程序,相当于把中断处理函数放到内存中,并更新中断向量表.
    中断触发函数

    assume cs:code
    code segment
    start:
        mov ax,1000h
        mov bh,1
        div bh
    code ends
    end start

    执行此程序会触发0号中断,执行上面的do0-do0end之间的程序,在终端中间显示”divide error!”;
    执行结果如下:
    这里写图片描述

    展开全文
  • 上篇文章中我们介绍了西门子S7-200 SMART的中断中断...我们来编写程序,启动STEP7-Micro/WIN SMART创建一个新项目,创建新项目后首先编写处理I0.0上升沿事件的中断程序,在指令树的位逻辑中拖放一个常开触点到中...

    上篇文章中我们介绍了西门子S7-200 SMART的中断及中断指令,本篇我们通过一个简单的例子来学习中断指令的使用,并练习编写中断程序,在I0.0的上升沿通过中断使Q0.0立即置位,在I0.1的下降沿通过中断使Q0.0立即复位。我们来编写程序,启动STEP7-Micro/WIN SMART创建一个新项目,创建新项目后首先编写处理I0.0上升沿事件的中断程序,在指令树的位逻辑中拖放一个常开触点到中断程序INT_0,输入地址SM0.0,再拖放一个立即置位指令,输入地址Q0.0,置位个数为1。

    b3360f299c3b650b3f87f93b753fe004.png

    编写中断程序INT_0

    我们再来编写一个处理I0.1下降沿事件的中断程序,插入一个新的中断程序INT_1,拖放一个常开触点SM0.0,再拖放一个立即复位指令,输入地址Q0.0,复位个数为1。

    f1fe9ef9b82d1c74d694378582a1ae1b.png

    编写中断程序INT_1

    回到主程序,拖放一个常开触点输入地址SM0.1,在指令树的中断文件夹中拖放中断连接指令到编程区域,INT处输入0号中断程序名,EVNT处输入I0.0上升沿事件号0,向下分支,再拖放一个中断连接指令,INT处输入1号中断程序名,EVNT处输入I0.1下降沿事件3,继续向下分支,拖放一个中断允许指令,这样在程序第一次扫描时就关联了中断事件以及相应的中断服务程序并允许全局中断,程序编写完成后保存项目。

    467efedf2ed901f40ab1510d7ff44ed8.png

    编写主程序调用中断程序

    下载并测试。将项目编译并下载到PLC,在状态图表中输入地址Q0.0,启动对状态图表变量的持续监视,拨动外接开关使I0.0产生上升沿,Q0.0立即变为1,拨动外接开关使I0.1产生下降沿,Q0.0立即变为0。

    b244ed31c9435c13480b8e7b065691b6.png

    测试程序

    本篇我们通过一个实例学习了中断指令的使用,并编写测试了中断程序,下篇文章我们继续学习西门子S7-200 SMART的相关内容,欢迎持续关注。号内私信发送关键字“200”获取一套西门子S7-200视频教程。

    展开全文
  •  不同的设备对应的中断不同,而每个中断都通过...在处理器执行到由于编程失误而导致的错误指令(例如被0除)的时候,或者是在执行期间出现特殊情况(例如缺页),必须靠内核来处理的时候,处理器就会产生一个异常。
  • int n指令的格式为:int n,n为中断类型码 cpu执行int中断,实际上就相当于引发一个n号中断中断过程,他的大致执行过程如下: 取中断类型n 标志寄存器入栈,置IF=0,TF=0 (为什么要这一步,后面有解释) // 这一步...
  • 汇编之控制转移指令之子程序、中断指令和系统功能调用前言子程序CALL调用指令RET返回指令中断指令和系统功能调用中断与中断源中断种类中断向量软中断指令中断响应过程中断嵌套中断处理程序设计设置中断向量DOS系统...
  • 中断,主要分两种:同步中断和异常中断....在实际应用中,我们不得不面对以下情景:处理器能及时响应中断,如果ISR(中断例程)里面包含比较大的数据量要处理的话(例如网卡),ISR里面会因为停留在中断数据处理
  • a由中断指令完成,b由中断服务程序完成 我理解为:ab都属于保护现场,只是a是在中断周期执行的,对吗? (类似于“MAR,MDR功能属于主存,却制作在CPU里。” 这种理解对吗?) 2、向量地址->PC与关中断...
  • processing处理AT的应答超时的指令(做删除释放内存的动作),还有处理等待的AT指令 此函数一定要不断循环处理 可以加入到定时器 目前我实验是在UCOS上的 所以直接创建个任务来执行此函数 当程序在等待某个AT指令的...
  • 题目:编写0号中断处理程序,在除法溢出时,在屏幕中间显示字符串“hacker by admin!”   之前先补充一个rep movsb的指令知识 movsb和movsw是相反的,都是根据标志寄存器DF的值选择正向传递还是反向传递。...
  • 上篇文章中我们介绍了西门子S7-200 SMART的中断中断...我们来编写程序,启动STEP7-Micro/WIN SMART创建一个新项目,创建新项目后首先编写处理I0.0上升沿事件的中断程序,在指令树的位逻辑中拖放一个常开触点到中...
  • int 21h code ends end start 在7ch中断处理程序中,需要返回到s处来完成循环 在跳转到7ch时,cs和ip入栈,ip存放的正是se的偏移量 bx=s-se,现在我们得到了se的偏移量,只需要加上bx就能得到 s的...
  • Linux中断处理驱动程序编写

    千次阅读 2014-12-23 21:54:52
    Linux中断处理驱动程序编写 中断与定时器: 中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行 中断的分类:...
  • CPU都具有执行完当前正在执行的指令之后,检测到从CPU外部(外中断)或内部(内...首先,CPU接收到中断类型码(一个字节型数据),然后通过中断向量表找到对应的中断处理程序的入口地址。中断向量表是入口地址的列表
  • 完整的中断处理过程分为 1)中断响应的事前准备: 系统要想能够应对各种不同的中断信号,总的来看就是需要知道每种信号应该由哪个中断服务程序负责以及这些中断服务程序具体是如何工作的。系统只有事前对这两件事都...
  • 一、中断处理的过程   根据Intel 64 and IA-32 Architectures Software Developer’s Manual 的介绍,在中断或异常产生是,CPU会将当前执行的指令(或下一条指令)在内存中的地址,也就是EIP的值,放入栈中,同时...
  • 软件中断指令

    2012-12-17 17:42:31
    软件中断指令可以产生一个软件中断异常,这为应用程序调用系统例程提供一种机制,通常在user模式下执行。...处理软件中断调用的代码段称为中断处理程序(SWI handler)中断处理程序通过执行指令的地址获取软件的
  • 中断及中断处理过程1. 中断和异常的概念区别Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于:中断(interrupt)是异步的事件,典型的比如由I/O设备触发;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,116
精华内容 846
关键字:

中断处理程序指令