精华内容
下载资源
问答
  • 中断允许标志
    千次阅读
    2019-07-09 20:52:52

    CF——进位标志(Carry Flag)。若CF=1,表示算术运算时产生进位或借位,否则CF=0。移位指令会影响CF。

    PF——奇偶标志(Parity Flag)。若PF=1,表示操作结果中“1”的个数为偶数,否则PF=0。这个标志位主要用于检查数据传送过程中的错误。

    AF——辅助进位标志(Auxiliary Carry Flag)。若AF=1表示字节运算产生低半字节向高半字节的进位或借位,否则AF=0。辅助进位也称半进位标志,主要用于BCD码运算的十进制调整。

    ZF——全零标志(Zero Flag)。若ZF=1,表示操作结果全为零,否则ZF=0。

    SF——符号标志(Sign Flag)。若SF=1,表示符号数运算后的结果为负数,否则SF=0。

    OF——溢出标志(Overflow Flag)。若OF=1,表示当进行算术运算时,结果超过了最大范围,否则OF=0。

    IF——中断允许标志(Interrupt Enable Flag)。若IF=1,则CPU可以响应外部可屏蔽中断请求;若IF=0,则CPU不允许响应中断请求。IF的状态可由中断指令设置。

    DF——方向标志(Direction Flag)。若DF=1,表示执行字符串操作时按着从高地址向低地址方向进行;否则DF=0。DF位可由指令控制。

    TF——单步标志(Trace Flag)。又称跟踪标志。该标志位在调试程序时可直接控制CPU的工作状态。当TF=1时为单步操作,CPU每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;若TF=0,则CPU继续执行程序。


    ---------------------
    作者:低调走过
    来源:CSDN
    原文:https://blog.csdn.net/iamduoluo/article/details/7170250
    版权声明:本文为作者原创文章,转载请附上博文链接!

    更多相关内容
  • 中断类型标志

    千次阅读 2015-07-02 22:16:10
    在调用request_irq函数申请一个IRQ时,会传入相应的中断类型标志。对于这些标志新旧版本的内核实现是不完全相同的。   IRQF_DISABLED 3.16.7-ct7版本内核中此标志是没有地方用到的。此标志表示中断在处理的时候...

    在调用request_irq函数申请一个IRQ时,会传入相应的中断类型标志。对于这些标志新旧版本的内核实现是不完全相同的。

     

    IRQF_DISABLED

    3.16.7-ct7版本内核中此标志是没有地方用到的。此标志表示中断在处理的时候是关中断的,不能被另外的中断所打断。(http://lwn.net/Articles/380931/)这篇文章里有讲到此标志在新内核中被废弃的原因。

    之前老的内核中,按照中断处理快慢,分为快速中断和慢速的中断。对于慢速的中断,在处理的时候是不能关中断的,能够被其他的中断所中断,这样能够防止处理耗时过长。快速中断在处理的时候是关中断的,不能被其他中断所中断,因为认为它处理的够快。

     

    在老的内核版本(我参考的内核版本是2.6.12.6)SA_INTERRUPT标志起到和IRQF_DISABLED一样的作用。

    fastcall int handle_IRQ_event(unsigned int irqstruct pt_regs *regs,

        struct irqaction *action 

     

     if (!(action->flags & SA_INTERRUPT))  

      local_irq_enable();  

    do  

      ret action->handler(irqaction->dev_idregs);  //执行注册的handler

      if (ret == IRQ_HANDLED 

       status |= action->flags 

      retval |= ret 

      action action->next 

             while (action);  

     

    handle_IRQ_event在do_IRQ中调用,在执行注册的handler之前,会判断注册时有没有设置SA_INTERRUPT标志。如果没有设置此标志,就调用local_irq_enable函数开中断。

     

    之前由于硬件的问题、慢速的处理器以及开发人员能力的差异,导致慢速的中断处理在现实情况中大量存在。现在随着硬件的快速发展,已经能够越来越快的处理中断了。并且中断的延迟处理机制,如下半部、中断线程化都使得能够将大量的工作从中断处理程序中移出来。

     

    IRQF_SHARED

    此标志用来表示一个IRQ是否允许在多个设备间共享。在之前使用8259中断控制器是,一个8259只有8pin2个级联也只能支持15个外部设备中断,外设很多的情况下可能会需要多个设备共享一个IRQ

    现在普遍使用的是APIC(高级可编程的中断控制器),由IO APICLocal APIC组成。每个IO APIC支持24IRQ Line,多个IO APIC可以级联。现在不推荐使用此标志来注册中断。

     

    展开全文
  • 对8086CPU的标志寄存器中的OF、DF、IF、TF、SF、ZF、AF、PF、CF标志位进行了相关的介绍!

    一、基本介绍:

    CPU的内部的寄存器中,有一类特殊的寄存器(对于不同的处理机,其个数和结构都可能不同);它具有以下三种作用!

     这种特殊的寄存器在8086CPU中,被称为标志寄存器flag。8086CPU的标志寄存器有16位,其中存储的信息通常又被称为程序状态字PSW)。

    flag和其他寄存器不一样,其他寄存器是用来存储数据的,都是一个寄存器作为一个整体具有一个含义的。但是flag寄存器是每一位都有专门的含义的,记录着特定的信息!

    flag寄存器各位示意图

    flag寄存器在上图中显示空白的位,在8086CPU中没有被使用,因此不具有任何的含义;其他被标识的位都具有特殊的含义。

    二、各个标志位介绍:

    OF标志:溢出标志位(有符号数)

    flag的第11位是OF,溢出标记位;一般情况下,OF记录了有符号数运算的结果是否发生了溢出;如果发生了溢出,则OF=1;如果没有,则OF=0。

    CF和OF之间的区别:CF是针对于无符号数运算,OF位是针对于有符号数运算。

    代码举例:

    mov al,0F0H
    
    add al,88H

    指令执行之后,CF=1,OF=1。如果把该运算看作无符号数运算,则0F0H+88H产生了进位,故CF=1;如果把该运算看作有符号数运算,则0F0H+88H发生溢出,OF=1。

    mov al,0F0H
    
    add al,78H

    指令执行之后,CF=1,OF=0。如果把该运算看作无符号数运算,则0F0H+78H产生了进位,故CF=1;如果把该运算看作有符号数运算,则0F0H+78H不发生溢出,OF=0。

    因此,CF和OF所表示的进位和溢出,是分别对于无符号数和有符号数运算而言的彼此之间没有任何的关系。


    DF标志:方向标志位

    flag的第10位是DF,方向标志位;仅仅用于串处理指令中,控制着地址的变化方向

    DF=0;每次操作之后地址递增;即从低地址向高地址处理数据串。

    DF=1,每次操作之后地址递减,即从高地址向低地址处理数据串。

    由于flag寄存器中的DF位决定着串传送指令执行之后,SI、DI的改变方向;因此8086CPU也提供了相应的指令来对于DF位进行设置:

    CLD指令:将标志寄存器的DF位,置为0

    STD指令:将标志寄存器的DF位,置为1


    IF标志:中断允许标志位

    flag的第9位是IF,IF置为0,禁止其他的可屏蔽中断;如果允许处理可屏蔽中断,则将IF置为1。

    ——相关操作指令:

    STI指令:将IF设置为1,允许可屏蔽中断。

    CLI指令:将IF设置为0,禁止可屏蔽中断。


    TF标志:跟踪标志位

    flag的第8位是TF,跟踪标志位用于标识CPU是否允许单步中断,以进行程序调试。TF=0时,8086CPU处于正常状态;TF=1时,8086CPU处于单步状态,每执行一条指令就自动产生一次单步中断。

      8086的debug功能依赖于8086CPU的单步调试功能。


    SF位:符号标志位(有符号数)

    flag的第7位是SF,符号标志位。它记录着相关指令执行后其结果是否为负;如果结果为负,则SF=1;如果结果非负,则SF=0。

    在计算机里面,通常使用补码来表示有符号数据。计算机的一个数据既可以看作有符号数,亦可以看作无符号数。譬如:

    0000 0001B,可以看作为无符号数1,也可看做有符号数+1。

    1000 0001B,可以看作为无符号数129,也可以看作有符号数-127。

    这就说明计算机在计算相关的数据时,即可以看作有符号数的运算,亦可以看作无符号数的运算,关键在于使用者需要哪一个!例如:

    mov al,1000 0001B
    
    add al,1

    计算的结果就是:al=1000 0010B

    对于该运算,如果你把它看作无符号数的运算,那么就是129+1=130(1000 0010B);也可以将其看作有符号数的运算,那么就是-127+1=-126(1000 0010B)。

    SF标志,就是8086CPU对于有符号运算结果的一种记录,它记录了运算结果的正负无论你把运算看作有符号运算还是无符号运算,SF的值都会改变,不同的是,当你看作有符号运算时,它是有意义的;当你看作无符号运算时它是无意义的!

    mov al,1000 0001B
    
    add al,1

    运算结果为1000 0010B,SF=1;如果你把这个运算看作有符号数运算,那么结果为负。

    mov al,1000 0001B
    
    add al,0111 1111B

    运算结果是0,SF=1;如果你把这个运算看作有符号数运算,那么结果为正。


    ZF位:零标志位

    flag寄存器的第6位是ZF,零标志位;它记录着相关指令执行之后,其结果是否为零;如果结果为零,那么ZF=1,如果结果不为零,那么ZF=0。

    例如:

    mov ax,1
    
    sub ax,1

    执行之后,结果为零,则ZF=1。

    mov ax,2
    
    sub ax,1

    执行之后,结果为1,则ZF=0。


    AF位:调整标志位

    flag的第4位是AF,调整标志位;反映加减运算时最低半字节有无进位或者借位。最低半字节有进位或借位时,AF=1,否则AF=0。

    这个标志位主要由处理器内部使用,用于十进制算术运算的调整指令,用户一般不必关心。

    例如:8位二进制数运算0011 1010+0111 1100 = 1011 0110,低四位有进位,所以此时的AF=1。


    PF位:奇偶标志位

    flag寄存器的第2位是PF,奇偶标志位;它记录着相关指令执行之后,其结果的所有bit位中1的个数是否为偶数;如果1的个数为偶数,则PF=1,如果1的个数为奇数,则PF=0。

    例如:

    mov al,1
    
    add al,10

    执行之后,结果是0000 1011B;其中有3个1;因此PF=0。

    mov al,2
    
    or al,2

    执行之后,结果是0000 0010B;其中有1个1;因此PF=0。

    sub al,al

    执行之后,结果为0000 0000B;其中有0(偶数)个1;因此PF=1。


    CF标志:进位标志位(无符号数)

    flag的第0位是CF,进位标志位。一般情况下,在进行无符号数运算时,它记录了运算结果的最高有效位向更高位的进位值,或者从最高位的借位值

    以8位为例:

    ——进位举例:

    mov al,98H

    add al,al;执行之后,al的值变为30H,CF=1;此时CF记录了最高有效位向更高位的进位值。

    add al,al;执行之后,al的值变为60H,CF=0;此时CF记录了最高有效位向更高位的进位值。

    ——借位举例:

    mov al,97H

    sub al,98H;执行之后,al的值变为FFH,CF=1;此时CF记录了向更高位的借位值。

    sub al,al;执行之后,al的值变为0,CF=0;此时CF记录了向更高位的借位值。

    ——相关操作指令:

    CLC指令:将CF置为0。

    STC指令:将CF置为1。

    CMC指令:原来是0变为1,原来是1变为0。

    Ending... ...

    展开全文
  • 汇编语言各“标志位”含义

    千次阅读 2020-11-27 15:33:55
    一、运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 使用该标志位的情况有:多字(字节)数...

    一、运算结果标志位

    1)进位标志CF(Carry Flag)

         进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

         使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

    2)奇偶标志PF(Parity Flag)

         奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

         利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

    3)辅助进位标志AF(Auxiliary Carry Flag)

         在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

           (1) 在字操作时,发生低字节向高字节进位或借位时;
           (2) 在字节操作时,发生低4位向高4位进位或借位时。

         对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。

    4)零标志ZF(Zero Flag)

         零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

    5)符号标志SF(Sign Flag)

         符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

    6)溢出标志OF(Overflow Flag)

         溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

         “溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。

     

    二、状态控制标志位

         状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。

    1)追踪标志TF(Trap Flag)

         当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。

         指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。

    2)中断允许标志IF(Interrupt-enable Flag)

         中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

           (1) 当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

           (2) 当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

         CPU的指令系统中也有专门的指令来改变标志位IF的值。

    3)方向标志DF(Direction Flag)

         方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。具体规定在第5.2.11节——字符串操作指令——中给出。在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。

     

    三、32位标志寄存器增加的标志位

    1)I/O特权标志IOPL(I/O Privilege Level)

         I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。

    2)嵌套任务标志NT(Nested Task)

         嵌套任务标志NT用来控制中断返回指令IRET的执行。具体规定如下:

           (1) 当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;

           (2) 当NT=1,通过任务转换实现中断返回。

    3)重启动标志RF(Restart Flag)

         重启动标志RF用来控制是否接受调试故障。规定:RF=0时,表示“接受”调试故障,否则拒绝之。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。

    4)虚拟8086方式标志VM(Virtual 8086 Mode)

         如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。

    展开全文
  • 标志寄存器(PSW)

    万次阅读 2020-03-09 22:57:41
    标志寄存器 标志寄存器又称程序状态字PSW(Program Status Word) 标志Flag用于反映指令执行结果或控制指令的执行形式。许多指令执行后将影响有关的状态标志寄存器,不少指令的执行要利用某些标志,当然,也有很多指令...
  • 青岛理工大学 微机原理复习知识点

    千次阅读 2021-06-27 05:41:32
    STI指令使中断允许标志位IF置1,用CLI指令使IF置0 INTA:中断响应信号 输出 低电平有效 在中断响应总线周期,8086/8088CPU连续发出两个INTA负脉冲,第一个负脉冲通知外设接口已响应它的中断请求,第二个负脉冲...
  •  一般申请中断的时候都允许中断,即不使用SA_INTERRUPT标志。如果允许共享则加上 SA_SHIRQ,如果可以为内核熵池提供熵值(譬如你写的驱动是ide之类的驱动),则再加上 SA_SAMPLE_RANDOM标志。这是普通的中断请求...
  • 定时器中断标志位理解

    千次阅读 2020-03-20 21:55:19
    1、定时器中断标志位程序 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) { ITStatus bitstatus = RESET; uint16_t itstatus = 0x0, itenable = 0x0; /* Check the parameters */ assert_param(IS_...
  • 全局中断允许标志位I 外,与外部中断有关的寄存器有4个,共有11个标志位。其作用分别是3个 外部中断各自的中断标志位 , 中断允许控制位 ,和用于定义 外部中断的触发类型 。 1)、MCU控制寄存器——MCUCR ...
  • 51单片机中断系统

    2021-01-14 19:23:10
    51单片机有5个中断源,分别是外部中断0,定时/计数器T0中断,外部中断1,定时/计数器T1中断,串行口中断,对应地址如下表: 中断中断矢量地址 外部中断0 0003H 定时/计数器T0中断 000BH 外部中断1 ...
  • IF标志位与中断的关系

    千次阅读 2016-05-05 23:04:45
    IF标志位与中断的关系
  • 2.21实例功能前面例子中分别介绍了按键控制发光二极管的亮...单片机中除了具有基本输入输出功能的作用外,还有专门检测外界信号并作出响应的中断系统。在本例中,通过利用外部中断实现单片机对按键事件的响应和处理...
  • 中断优先级

    千次阅读 2021-07-25 04:32:43
    为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。在实际系统中,常常遇到多个中断源同时请求中断的情况,这时CPU必须确定首先为哪...
  • 中断标志位实验心得

    千次阅读 2018-02-01 19:57:58
    中断标志位实验心得 在做CC2530开发板一些实验时候,经常会遇到一些最基本的问题,比如清中断标志位时候,是先清源中断寄存器还是先是清CPU中断标志寄存器。 初始化中断标志: P0IFG = 0X00; 在下面电路中需要...
  • 单片机(AT89C51)中断系统详解和中断系统应用实验 什么叫做单片机的中断? CPU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序, 叫做中断。 为什么...
  • 中断系统的基本知识

    2021-01-05 12:32:53
    中断系统结构如下图所示: 引起中断的根源叫做中断源;中断源向CPU的请求,叫做中断请求。对于51单片机而言,中断系统有5个中断源,它们的符号、名称、产生 条件如下所示。 INT0:外部中断0,中断请求信号由P3.2...
  • 《《《《《正文》》》》》 《中断作用》 ...中断系统中,MCU正常情况下运行的程序称为主程序,把产生申请中断信号的单元和事件称为中断源,由中断源向MCU所发出的申请中断信号称为中断请求,MCU接受中断...
  • MCS-51的中断系统 CPU正在处理某件事情时,单片机的内部或外部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作去处理所发生的事件。处理的过程是由中断服务处理程序来负责的,它处理完后又回到原来被...
  • 51单片机中断知识整理

    千次阅读 2020-11-01 18:54:03
    AT89C51单片机学习整理(一) 一、中断结构图
  • MCS-51单片机的中断系统

    千次阅读 2020-10-19 14:07:26
    当CPU正在执行主程序的时,外部或内部发生的某一事件(如引脚上发生电平变化,一个脉冲的发生或计数器的计数溢出等)请求CPU迅速处理,CPU暂时中断当前程序而转去执行相应的处理程序,待处理程序执行完毕后,CPU再...
  • 51单片机的中断+小知识点

    千次阅读 2020-01-13 21:50:29
    小知识点: 1.为什么要引入中断原因 一个高速主机和一个低速外设连接时,效率极低,低速...CPU暂时中断原来的事务,转去处理发生中断请求的事件,对此事件处理完后,再回到被中断的地方(即断点)继续处理原来的...
  • 51单片机基础(1) -外部中断

    千次阅读 2021-08-04 20:54:29
    外部中断 以下是假期对51单片机课程内容做的一些小结 中断的基本概念 中断: CPU与外设并行工作,当外设数据准备好或者有某种突发事件发生时,向CPU提出请求,CPU暂停正在进行的工作,转而为该外设服务(或者是处理...
  • STC学习:中断相关寄存器

    千次阅读 2021-08-19 09:53:42
    中断允许寄存器IE、IE2和INT_CLKO IE:中断允许寄存器(可位寻址) SFR name bit B7 B6 B5 B4 B3 B2 B1 B0 IE name EA ELVD EADC ES ET1 EX1 ET0 EX0 EA:CPU的总中断允许位,EA=1,CPU开放中断,EA=0,CPU...
  • 89c51中断系统及中断控制

    万次阅读 多人点赞 2018-06-23 23:29:10
    现代的计算机都具有实时处理功能,当外界有突发事件时,cpu能够及时的做出处理,这就是靠中断来实现的。 当CPU正在处理某一命令时,这时外部发生了某一事件(如电平的变化,或者定时器/计数器溢出时)请求CPU去处理...
  • 6.STC15W408AS单片机外部中断

    千次阅读 2021-07-15 09:29:24
    STC15W408AS单片机有4个外部中断,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)。 外部中断0(INT0)和外部中断1(INT1)触发有两种触发方式,上升沿或下降沿均可触发方式 和仅...
  • 51单片机的中断和定时器、计数器

    千次阅读 2019-01-13 11:25:01
    中断使得高低速设备可以协调工作(低速设备完成工作后通过中断的方式通知高速设备一次处理一批数据),中断还可以根据不同的优先级实现嵌套执行。 定时器本质上是个 16 位的自增计数器,当发生溢出时,如果开启了...
  • 中断系统

    2018-11-22 13:53:34
    中断系统 概念 CPU执行事件A时,事件B请求执行(中断请求),这时CPU转去执行事件B(中断...①TF0/TF1 :T0/T1 的溢出中断请求标志。从初值做加1计数,计满溢出后TF0/TF1置1,发出中断请求,响应中断后硬件自...
  • 80C51的中断系统 - 定时/计数器

    千次阅读 2020-08-29 16:05:00
    8051的中断系统中断的概念中断系统的结构 中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂停中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕...
  • 微型计算机原理及应用学习笔记 8086/8088的中断编辑整理:贵州自考网 发表时间:2013-12-05 【大 中 小】8086/8088有一个简单而灵活的中断系统,每个中断都有一个中断类型码(Type Code),以供CPU进行识别,8086/...
  • 2、某一个中断源申请中断,相应中断标志位置1,系统自动置1,程序可通过检查中断申请标志位0 还是1,判断有无中断产生 二、中断允许标志寄存器IE (申请外部中断之后要开允许,不开允许外部中断是不能接受中断的) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,926
精华内容 38,770
关键字:

中断允许标志

友情链接: dist.rar