【微机原理与接口技术】学习笔记7 中断和可编程中断控制器8259A

8 篇文章 53 订阅
订阅专栏


8.1 中断

8.1.1 中断概念和分类

1. 中断的定义和功能

中断定义:计算机在执行正常程序过程中,暂时中止当前程序的运行,转到中断处理程序去处理临时发生的事件,处理完后又恢复原来程序的运行,这个过程称为中断(Interrupt)。

中断功能:

  • 使CPU和外设在部分时间内并行工作,大大提高CPU的利用率;
  • 在实时控制系统中,现场数据可及时接收处理,避免丢失;
  • 故障的处理,如电源掉电、奇偶校验错、运算中溢出错等;
  • 利用中断指令,直接调用大量系统已编写好的中断服务程序实现对硬件的控制

2. 中断源和中断分类

引起中断的原因或能发出中断请求的来源称为中断源。
8086有两种中断源,中断分为两大类:
1)外部中断或硬件中断,从不可屏蔽中断引脚 NMI 和可屏蔽中断引脚 INTR 引入;
2)内部中断或软件中断,是为解决CPU运行过程中出现的一些意外事件或便于程序调试而设置的。

我们这门课,学习 8259A 主要是处理 INTR

图8.1 IBM PC机中 8086 的中断分类和中断源

1)外部中断

不可屏蔽中断NMI,处理较紧急的情况,如存储器或I/O校验错、掉电、协处理器异常中断请求等,不受中断标志IF的影响。
可屏蔽中断由 8259AINT 引脚输出,连到CPU的INTR上。只有当CPU的 FLAGSIF=1 时,才允许响应此类中断请求
8259A的输入引脚 IR0~IR7 可引入 8 级中断:时钟、键盘、串行通信口COM1和COM2、硬盘、软盘、打印机。经芯片内部判别后,将优先级高的中断请求信号送到 INT 引脚。

2)内部中断

(1) 除法错中断
执行除法运算指令时,如除数为0或商超过了结果寄存器能容纳的范围,则产生除法错中断。

(2) 单步中断
单步标志 TF 置1,指令执行完后,产生单步中断。结果是将CPU的内部寄存器和有关存储器的内容显示出来,便于跟踪程序的执行过程,实现动态排错。
8086没有直接使TF标志置1或清0的指令,如何使 TF 标志置1或清0?使TF标志置1的程序段:

PUSHF		  ;标志寄存器FLAGS入栈
POP AX		  ;AX←FLAGS内容
OR  AX, 0100H ;使AX(即标志寄存器)的
			  ;D8=1,其余位不变
PUSH AX		  ;AX入栈
POPF		  ;FLAGS寄存器←AX

用类似方法将标志寄存器与 FEFFH 相与,可使 TF 标志清0,从而禁止单步中断

(3) 溢出中断
溢出标志 =1 ,则可由溢出中断指令 INTO 产生中断类型号为 4 的溢出中断。若OF=0 ,不会产生中断。
带符号数加、减指令后应安排一条 INTO 指令,一旦溢出就能及时向CPU提出中断请求,CPU响应中断后可进行相应的处理。

(4) 软件中断指令 INT n
中断类型号 n=0~255 。它可以安排在程序的任何位置上。

(5) 断点中断
程序运行到断点时便产生中断,像单步中断一样,查看各寄存器和有关存储单元的内容
断点可设在程序任何地方并可以设多个断点,设置的方法是插入一条 INT 3 指令。利用断点中断可以调试一段程序,比单步中断的调试速度快得多。

3. 中断向量表

(1)中断响应和返回

  • CPU响应中断时,首先要把 CS、IP 寄存器的值(断点)以及标志寄存器 FLAGS 的值推入堆栈保护
  • 然后找到中断服务程序的入口地址(中断向量),转去执行相应的中断服务程序
  • 中断服务程序结束时,执行中断返回指令 IRET 返回正常程序继续执行。

如何寻找中断服务程序的入口地址,是中断处理过程中的一个重要环节。

(2)中断向量表
中断向量表用来存放中断服务程序的入口地址

  • 8086可处理 2560~FFH)类中断,每类中断有一个入口地址(中断向量),包含 CSIP ,共 4 个字节。因此存储 256 个地址,需要占用 1K 字节,它们位于内存 00000~003FFH 的区域中(早年的8086/8088)。
  • 将中断类型号 n 乘以 4 就能找到规定类型的中断向量,规定 IP 在前,CS 在后。
  • 类型号为 0~4 的专用中断:0-除法错中断、1-单步中断、2-不可屏蔽(NMI)中断、3-断点中断和4-溢出中断,它们的中断向量分别存放在 00H04H08H0CH10H开始的4个连续单元中。

举例说明中断类型号n中断向量表的关系。

例8.1 类型号 n=44H 的中断服务程序的入口地址为 3600:2000H ,它们在中断向量表中应如何存放?
分析:中断类型号 n=44H=01000100B ,它的中断服务程序的入口地址应放在 44H*4 开始的4个字节单元中。44H*4=01 0001 0000B= 0110H。从0110H开始存放 3600:2000H

例8.2 若在中断向量表中,(0040H)=240BH,而 (0042H)=D169H,如图8.4所示,试问这4个单元中的内容对应的中断类型号 n= ?该中断服务程序的起始地址是什么?
分析:中断服务程序的入口地址从 0040H 单元开始存放,其类型号n=40H/4=10H(右移 2 位)。由图可知,中断类型号为 10H 的中断服务程序的入口地址=D169:240BH

4. 中断优先级和中断嵌套

(1) 中断优先级

按中断源的重要性实时性,排出响应中断的次序,这种次序称为中断优先级。 在8086中,中断优先级从高到低的次序为:

除法错、INT n、INTO		;最高级,同一行的有同等优先级
NMI					    ;次高级
INTR					;较低级(由8259A引入)
单步中断					;最低级
(2) 中断嵌套

CPU响应中断时,一般先响应优先级高的,后响应优先级低的中断请求。如CPU正在执行中断服务程序时,有优先级较高的中断源提出请求,则将正在处理的中断暂时挂起,先为高级中断服务,服务完后再返回较低级中断,称为中断嵌套。

如何实现中断嵌套?

  • 机器进入中断服务程序后,硬件会自动关中断 CLI
  • 只有程序员手动用 STI 指令将中断打开后,才允许高级中断进入实现中断嵌套
  • 中断服程序结束前,必须用 EOI 命令结束该级中断,并用 IRET 指令返回到中断前的断点处继续执行原程序

8.1.2 中断的响应与处理过程

1. 中断响应过程

可屏蔽中断的响应和处理流程如图:

每条指令执行完,CPU都要查 NMIINTR 脚上是否有中断请求,若无,继续取下一条指令执行。如有则响应中断,硬件自动完成关闭中断和保护断点操作,将下条要执行指令的 CSIP(即断点)推入堆栈;然后寻找中断服务程序的入口地址,找到后就转入相应的中断服务程序。最后,恢复现场,开中断,返回断点。

2. 8086的中断响应与处理

1)中断查询

CPU在执行完每条指令后,会顺序检查是否有 软中断、NMI、INTR和单步中断 ,如有,则进入中断响应周期。

2)中断响应

根据不同的中断源形成不同的中断类型码n,再在中断向量表中,根据 n 找到各自的中断服务程序的入口地址,转入相应的中断处理程序

例如 n=2 ,则形成中断类型码 2 ,再在中断向量表中找到 n*4=2*4=8 开始的连续4个字节单元,从中取出 CS:IP ,转去执行可屏蔽中断

重点介绍从 INTR 引脚引入的可屏蔽中断的类型码是如何形成的。CPU响应 INTR 中断后,要执行两个连续的中断响应 INTA 总线周期,其时序图如图:

第一个 INTA ‾ \overline {\text{INTA}} INTA 周期,CPU使数据线 D7~D0 浮空,T2~T4 期间向 8259A 发第1个中断响应信号 INTA ‾ \overline {\text{INTA}} INTA ,表示CPU已响应此中断禁止其它总线控制器竞争总线

第二个 INTA ‾ \overline {\text{INTA}} INTA 周期,8259A 收到第二个 INTA ‾ \overline {\text{INTA}} INTA 信号后,将中断类型号 n 置于数据总线上,由此找到中断服务程序的入口地址

8259AIR7~IR0 上可引入 8 级中断,形成 88 位中断类型码,其中高 5D7~D3 由用户通过对8259A编程来确定,在 PC/XT 机中为 00001 ;低 3D2~D0IR7~IR0 的序号来决定, 见表8.1。高5位确定后,8 级中断类型码就确定了。

3)中断处理和返回

(1) 由硬件自动完成以下工作

  • FLAGS 的内容入栈;
  • 保护单步标志 TF
  • IF 标志,关中断,中断处理过程中禁止其它中断进入;
  • TF 标志,使CPU不会以单步形式执行中断处理程序;
  • 保护断点,CS:IP 入栈。

(2) 进入中断服务
进入中断处理后,若在处理过程中又有 NMI 进入,NMI 中断处理后,会清除CPU中锁存的 NMI 请求信号,使加在CPU上的 NMI 只会被CPU识别一次;

接下来执行用户编写的中断服务程序,包含保护现场,中断处理和恢复现场程序。

(3) 执行用户编写的中断返回指令 IRET
CS:IP 出栈,恢复断点,恢复 FLAGS 的内容,返回主程序,继续执行下一条指令。


8.2 可编程中断控制器8259A的工作原理

8.2.1 8259A的引脚信号和内部结构

中断控制器8259A的引脚:

可接收 8 级中断,经 48 位寄存器判别后,优先级最高的中断请求信号从 INT 脚输出,送CPU的 INTR 脚请求可屏蔽中断。

内部结构:(1根地址,说明只占用了两个端口地址;D7-D0 8位数据)

  • 中断请求寄存器 IRR \text{IRR} IRR (Interrupt Request Register)

    • 外部8级中断请求信号IR7~IR0 脚上引入,有请求时相应位置 1 。例如 IR7、IR5、IR2 上有请求, IRR \text{IRR} IRR 将置成 10100100
    • 中断响应时相应位清 0
    • 中断请求信号可为高电平或上升沿触发,编程定义。
  • 中断屏蔽寄存器 IMR \text{IMR} IMR (Interrupt Mask Register)
    存放中断屏蔽信息,每 1 位与 1IR 位对应,置 1 禁止对应中断请求进入系统。用来有选择地禁止某些设备请求中断。

  • 中断服务寄存器 ISR \text{ISR} ISRInterrupt Service Register
    保存正处理的中断请求。任一中断被响应而执行其服务程序时,相应位置 1 ,直到处理结束。多重中断情况下,会有多个位置 1

  • 优先级判决器 PR \text{PR} PRPriority Resolver

    • 判别请求寄存器 IRR \text{IRR} IRR 里中断的优先级,把优先级最高的中断请求选进服务寄存器 ISR \text{ISR} ISR 中去。
    • 多重中断出现时, PR \text{PR} PR 判定新出现的中断能否去打断正在处理的中断,优先服务更高的中断级别
  • 控制电路
    包含一组初始化命令字寄存器 ICW1~ICW4 和一组操作命令字寄存器 OCW1~OCW3 ,管理 8259A 的全部工作。

    • 根据 IRR \text{IRR} IRR 设置和 PR \text{PR} PR 判定,发控制信号。
    • INT 脚向CPU发中断请求信号接收CPU或总线控制器8288送来的中断响应信号 INTA ‾ \overline {\text{INTA}} INTA
    • 中断响应 ISR \text{ISR} ISR 相应位置 1 ,并发送中断类型号 n ,经数据总线缓冲器送到 D7~D0
    • 中断服务程序结束时,按编程规定方式结束中断。
  • 数据总线缓冲器
    8259A 与CPU的接口,CPU经它向 8259A 写控制字接收 8259A 送出的中断类型号,还可从中读出状态字(中断请求、屏蔽、服务寄存器的状态)和中断查询字

  • 读/写控制电路
    接收CPU的 RD ‾ \overline {\text{RD}} RD WR ‾ \overline {\text{WR}} WR 、地址、片选 。一片 8259A 只占两个I/O地址,XT机中 A0 接地址 A0 ,口地址为 20H、21H 。与8086连时,A0 脚接地址 A1A0 的0/1选偶/奇地址口。

  • 级联缓冲器/比较器

    • 一片 8259A 最多引入 8 级中断,超过 8 级要用多片 8259A 构成主从关系,级联使用。
      从片输出 INT 接主片 IRi 。主从片的 3 条级联信号线 CAS2~CAS0 并接。
    • SP ‾ / EN ‾ \overline {\text{SP}} /\overline {\text{EN}} SP/EN主从定义/缓冲器方向;双功能
      • 缓冲方式:输出,控制缓冲器传送方向;
      • 非缓冲方式:输入;定义主从片,1:主片,0:从片
    • 多片时,8259A 必须经驱动器与数据总线相连工作于缓冲方式;少量 8259A 系统中,8259A直接与数据总线相连工作于非缓冲方式

8.2.2 8259A的工作方式

写入初始化命令字 ICW 和控制命令字 OCW ,对 8259A 设置不同的工作方式。

1. 设置优先级方式

1)全嵌套方式

最基本方式,初始化后自动进入

  • 从各 IRi 脚引入的中断请求具有固定优先级IR0~IR7 依次降低,IR0 最高。8259A 初始化后自动进入此方式。
  • 中断响应后,中断服务寄存器 ISR \text{ISR} ISR 的对应位 ISn1 ,并保持到中断结束,类型号 n 出现在 DB 上,然后进入中断处理
  • 由CPU发 EOI 命令结束中断,使 ISn 复位;也可发自动结束中断命令 AEOI
  • 处理过程中,高级中断打断低级中断禁止低级或同级中断进入
2)特殊全嵌套方式

同全嵌套方式,但允许同级中断进入

例8.3 同级中断举例。图中,从片 INT 脚接主片的 IR2,主片角度看,从片的 8 级中断为同级中断。若正在处理 IR3 ,则允许 IR0~IR2 进入, 即允许同级中断进入。必须在 IR3 中断处理程序中,用 STI 指令开中断,才允许从片中断嵌套。但全嵌套方式禁止同级中断进入。

3)优先级自动循环方式

各中断请求优先级相同IRi 服务完后成为最低级IRi+1 成最高级。初始优先级从高到低为 IR0~IR7

例8.4 参看下图的优先级自动循环方式示意图。

  • 图(a):初始状态 IR0 为最高级,若 IR1、IR3、IR6 同时请求中断,则 IRR \text{IRR} IRRIR1、IR3、IR6 均置 1
  • 图(b):IR1 先被服务,之后 IS1=0IR1 成最低级,IR2 为最高级,优先级顺序:IR2->IR7、IR0、IR1 。为 IR3 服务后 IS3=0IR3 最低,IR4 最高,依次类推。
4)优先级特殊循环方式

也称为设置最低优先级方式,与优先级自动循环方式类似,只是最低优先级由程序设置,并非 IR7 最低。IRi 设为最低后,IRi+1 便是最高。


2. 中断屏蔽方式

可用 CLI 指令关中断,禁止可屏蔽中断进入;开中断情况下,可将中断屏蔽寄存器 IMR \text{IMR} IMR 的相应位置1,来屏蔽某一级或某几级中断。有两种屏蔽方式:

1)普通屏蔽方式

IMR \text{IMR} IMR 中的某 1 位或某几位置 1 ,就可将相应的中断请求屏蔽。例如,令 IMR = 00100100 \text{IMR}=00100100 IMR=00100100 ,则 IR5IR2 上的中断请求被屏蔽。

2)特殊屏蔽方式

仅屏蔽本级中断,高级或低级中断允许进入。(关于优先级的改变)


3. 结束中断方式

中断响应后, ISR \text{ISR} ISR 的相应位 ISn1中断结束后应将 ISn0 ,表示结束中断。
2 种结束中断方式:自动和非自动,后者又分普通结束和特殊结束(EOI和SEOI)。

1)自动结束中断方式—AEOI

IRi 上中断响应后, ISR \text{ISR} ISR 相应位置 1 ,在CPU发来的中断响应信号 INTA ‾ \overline {\text{INTA}} INTA 的第 2 周期结束时, ISR \text{ISR} ISR相应位自动清 0,结束中断。

AEOI 方式,中断结束时(中断服务程序)不用对 8259A 发任何命令,通常在只有一片 8259A多个中断不会嵌套的情况下使用。

2)普通结束中断方式—EOI(End of Interrupt)

是常用的结束中断方式,用于全嵌套方式。当CPU处理完 1 个中断请求时,需向 8259AEOI 命令,8259A 收到 EOI 后,将 ISR \text{ISR} ISR 寄存器中优先级最高的中断,也就是刚服务过的中断ISn 清零,从而结束中断

3)特殊结束中断方式—SEOI

非完全嵌套方式下,用 ISR \text{ISR} ISR 寄存器无法确定当前正在处理哪级中断,也无法确定哪级中断是最后响应和处理的,不能用 EOI 方式结束中断,要用特殊方式。这时要用 OCW2 命令中的 L2~L0 来指定将 ISR \text{ISR} ISR 寄存器的哪 1 位清 0


4. 中断查询方式-POLL

使用一条 IN 指令读取中断查询字,就可查到 8259A 是否有中断请求以及哪个优先级最高。下图是中断查询字格式:


8.2.3 8259A的命令字及编程

为使 8259A 按预定方式工作,必须对它编程,由CPU向其控制寄存器发各种控制命令。控制命令有两类:

  • 初始化命令字 ICW1~ICW4 ,对 8259A 初始化;
  • 操作命令字 OCW1~OCW3 ,定义操作方式

在操作过程中,允许重设置操作命令字,动态改变 8259A 的控制方式。两类命令字被写入 8259A 的两个端口,一个为偶地址口8259AA0=0 ,另一个为奇地址口,A0=1 。在 XT 机中,偶/奇地址口为 20H21H

1. 初始化命令字ICW

初始化命令字 ICW1~ICW4 顺序写入控制口,设置 8259A 初始状态。8086系统中 ICW1ICW2ICW4 必须要有,ICW3 只在级联时用

(1) ICW_1 初始化命令字

A0=0,ICW1 写入偶地址口D4=1 标志位;IC4=1 需要设 ICW4 (8086必须写 ICW4 );
单片SNGL=1, 不要写入ICW3级联SNGL=0 ,要写入 ICW3
LIMT=1IRi 引入中断为电平触发,0 边沿触发;
A7~A5ADI 位用于8位CPU。

(2) ICW_2 中断类型码初始化

ICW2 紧跟 ICW1 写入,A0=1 ,写入奇地址口无标志位T7~T3 位用于确定中断类型码 n 的高 5 位,低 3D2~D0 则由 8259A 根据从 IR_i引入中断的引脚序号自动填入,从 IR0~IR7 的序号依次为 000~111,其初值可以置为 0

ICW2 的高 5 位内容是可以任选的,一旦高 5 位确定,一块芯片的 8 个中断请求信号 IR0~IR7 的中断类型号也就确定了。

例8.4 在 PC/XT 机中,ICW2的高 5T7~T3=00001B ,若从 IR5 上引入中断请求,则其中断类型码 n= ? 如何设置 ICW2 ?
分析:从 IR5 上引入的中断类型号的低 3D2~D0=101B ,由于高 5 位是 00001B ,所以从 IR5 上引入的中断类型码 n=00001 101B=0DH ,表示是硬盘中断请求。设置 ICW2 的指令为:

MOV	AL, 00001000B
OUT 21H, AL

据此可知,若 ICW2 的高 5 位为 01110B ,则该 8259A 引入的 8 级中断的中断类型号 n = 01110000B ~ 01110111B = 70H~ 77H ,这是为 PC/AT 机设置的 ICW2

(3) ICW_3 级联初始化

ICW3 只在级联时使用。图8.15是 ICW3 的格式和 8259A 主从结构连接图。
(a) 主片 ICW3 格式。Si=0IRi 上未接从片;Si=1 接有从片。
(b) 从片 ICW3 格式。低 3 位指明从片接主片哪个引脚,ID2~ID0 = 000~111 表示 IR0~IR7 引脚。

例8.5 用 38259A 按主从结构连接,如图8.15(c)。主片口地址为 20H/21H , 从片1口地址为 A0H/A1H ,从片 2B0/B1H 。试求出 38259AICW3 ,并编程将 ICW3 写入各芯片的奇地址口中。
分析:

  • 主片 IR2IR7 接从片,故主片 ICW3=10000100B=84H
  • 从片 1 接主片 IR2 ,故从片 1ICW3=00000010B=02H
  • 从片 2 接主片 IR7 ,故从片 2ICW3=00000111B=07H

对各芯片写入初始化命令字 ICW3

MOV    AL, 84H		;主片程序
OUT    21H, AL
MOV    AL, 02H		;从片1程序
OUT    0A1H, AL
MOV    AL, 07H		;主片2程序
OUT    0B1H, AL

如图中所示的级联系统:

  • 主片的 ICW3=24H00100100
  • 从片 1ICW3=02H00000010
  • 从片 2ICW3=05H00000101

只有 A 有申请(与单片系统相同):

  • 从片1: IRR=00H \text{IRR=00H} IRR=00H
  • 从片2: IRR=00H \text{IRR=00H} IRR=00H
  • 主片: IRR 6 = 1 \text{IRR}_6=1 IRR6=1 INT = 1 \text{INT}=1 INT=1,收到 INTA ‾ \overline {\text{INTA}} INTA,主片 ISR 6 = 1 \text{ISR}_6=1 ISR6=1 ,送 IR6 的类型号。

A、B、C 同时申请:

  • 从片1: IRR 7 = 1 \text{IRR}_7=1 IRR7=1
  • 从片2: IRR 4 = 1 \text{IRR}_4=1 IRR4=1
  • 主片: IRR 6 \text{IRR}_6 IRR6 IRR 2 \text{IRR}_2 IRR2 IRR 5 \text{IRR}_5 IRR5 同时为1, INT=1 \text{INT=1} INT=1 (转发 IR2 的请求)
  • 过程:
    • 第1个 INTA ‾ \overline {\text{INTA}} INTA,主片 ISR 2 = 1 \text{ISR}_2=1 ISR2=1 并送 IR2 的级联代码;从片 2 与自己的识别码比较不同,无操作;从片 1 :相同, ISR 7 = 1 \text{ISR}_7=1 ISR7=1
    • 2 INTA ‾ \overline {\text{INTA}} INTA:从片 1 送出 IR7 的类型号,主片不送
    • 最后,送两个 EOI 命令,给主片送 EOI 的条件——从片 ISR=00H \text{ISR=00H} ISR=00H
(4) ICW4

8086系统 ICW4 必须设置,写入奇地址口。无级联时 ICW4 应在 ICW2 后写入,级联时它在 ICW3 后写入。图8.16 ICW4 的格式:

ICW4 各位的含义:

  • D7~D5=000,为标志位;
  • SFNM=1 ,设置特殊全嵌套方式(Special Fully Nested Mode),否则为一般全嵌套方式;
  • BUFM/S 配合使用决定缓冲或非缓冲方式等;
  • AEOI=1,选择 AEOI 方式,即自动结束中断方式;
    AEOI=0,为非 AEOI (非自动结束中断)方式,须在中断服务程序中安排操作命令字 OCW2,选择所需的方式结束中断;
  • μ PM=1 \mu \text{PM=1} μPM=1,选择8086系统。

整个初始化流程如下:

例8.6 在 PC/XT 机中,只使用一片 8259AROM BIOS 中对 8259A 进行初始化的程序为:

MOV 	AL, 00010011B  ;ICW1:边沿触发,
					   ;单级,要ICW4
OUT  	20H, AL
                         
MOV  	AL, 00001000B  ;ICW2:中段类型号
					   ;基值为08H
OUT   	21H, AL

MOV  	AL, 00001001B  ;ICW4:全嵌套,
					   ;缓冲,非AEOI
OUT 	21H, AL

2. 操作命令字OCW

8259A 工作期间,可写入操作命令,让它按需要方式工作。

  • 可写入 3 个操作命令字 OCW1~OCW3 ,用来发非 AEOI 方式结束中断的命令、优先级循环命令中断查询命令,还可设置或撤销 AEOI 循环命令、设置或撤销特殊屏蔽方式、读内部寄存器的状态,功能比较复杂,尤其是 OCW2
  • OCW 在应用程序内部设置,没有规定写入顺序,但写入的端口地址有规定:OCW1 必须写入奇地址口OCW2OCW3 要求写入偶地址口
(1) OCW1 中断屏蔽字

OCW1 也称中断屏蔽字,直接对中断屏蔽寄存器 IMR \text{IMR} IMR 的各位进行置 1 或清 0 。当 Mi 位置 1 ,相应 IRi 的中断请求将被屏蔽,清 0 则允许中断。

屏蔽某个 IRi 中断,并不影响其它脚上的中断请求。允许随时读出 IMR \text{IMR} IMR 的内容,供CPU分析。

例8.7 某系统只允许键盘(IR1)中断,其余位均屏蔽,8259A 口地址 20H/21H,试写入中断屏蔽字。如系统中要新增键盘中断,其余屏蔽位不变,如何设置屏蔽字。
只允许键盘中断的程序段为:

MOV  AL, 11111101B          ;D1=0,IR1没被屏蔽,
	            			;其余均被屏蔽
OUT  21H, AL

新增键盘中断的程序段为:

IN   AL, 21H        		;用IN指令读屏蔽字
AND  AL, 11111101B       	;仅D1清0,其余位不变
OUT  21H, AL             	;写入修改后的屏蔽字
(2) OCW2 优先级循环和中断结束

OCW2 设置优先级循环方式中断结束方式的命令字:

OCW2 各位有单独的含义:

  • D4D3=00,是 OCW2 的标志位。和 ICW1 进行区分。
  • RRotate) :R=1,优先级按循环方式设置,否则为非循环方式。
  • SLSpecific Level):SL=1OCW2 中的 L2~L0 有效,否则无效。
  • EOIEnd of Interrupt) :结束中断命令。EOI=1,当前 ISR \text{ISR} ISR 寄存器相应位清 0 。当 ICW4 中的 AEOI=0 ,即非自动结束中断时,可用它来结束中断。
  • L2~L0SL=1 时,配合 RSLEOI 设置来确定一个中断优先级的编码,L2~L0 的编码000~111,分别与 IR0~IR7 相对应。

R、SL、EOI 组合设置,具有不同的意义:
(1) R SL EOI=001 ,发 EOI 命令
在中断服务程序结束时,IRET 指令前,发 EOI 命令结束中断,将服务寄存器中刚服务过的 ISn 位清 0 ,结束中断。设置命令的方法是将 00100000B=20H 输出到 8259A偶地址口中。EOI命令是最常用的中断结束命令
例8.9 在PC机的中断服务程序中设置中断结束命令,使相应的 ISn0 。程序段如下:

MOV   AL, 20H         		;OCW2的EOI命令
OUT   20H, AL         		;发EOI命令

(2) R SL EOI=011 ,发 SEOI 命令
在中断服务程序结束时,发特殊结束中断命令 SEOI ,到底结束哪一级中断由 L2~L0 指定,将相应的 ISn0
例8.10 发特殊结束中断 SEOI 命令,结束 5 级中断。

MOV   AL, 01100101B   ;OCW2的SEOI命令, L2~L0=101
OUT   20H, AL         ;将IS5清0, 结束5级中断

(3) R SL EOI=101 ,发 EOI 循环命令
采用 EOI 方式结束中断,将刚服务过的优先级最高的 ISn0 ,同时将刚结束的中断请求 IRi 的优先级设为最低级,使 IRi+1 置为最高级,将优先级置为自动循环方式

(4)R SL EOI=100 ,设置 AEOI 循环命令
使 8259A 采用自动结束中断方式结束中断,CPU响应中断时,在中断总线周期的第二个 INTA ‾ \overline {\text{INTA}} INTA 脉冲结束时,将 ISR \text{ISR} ISR 寄存器的相应位清 0 ,并使优先级置为自动循环方式

(5) R SL EOI=000 ,发清除 AEOI 循环方式命令

(6) R SL EOI=111 ,发 SEOI 循环命令
采用特殊结束中断方式结束中断,使 ISR \text{ISR} ISR 寄存器中由 L2~L0 指定的相应 ISn 位清 0,并置优先级为自动循环方式

例8.11 发 OCW2 命令,结束 2 级中断,并置优先级为自动循环方式

MOV  AL, 11100010B   ;OCW2的SEOI循环命令, 
				     ;L2~L0=010
OUT  20H, AL       	 ;IS2=0结束2级中断, 优先级
			  		 ;IR2最低, IR3为最高

(7) R SL EOI=110 ,设置最低优先级循环命令
L2~L0 指定的中断请求 IRi 设置为最低优先级其余按循环方式给出。(对应优先级特殊循环)

例8.12 要求发OCW2命令,使IR3设为最低优先级,优先权按循环方式给出。

MOV  AL, 11000011B    ;将IR3置为最低优先级, IR4置为最高优先级
OUT  20H, AL

(8) R SL EOI=010 无效命令字

(3) OCW3 特殊屏蔽和中断查询

OCW3 的格式如图所示。(下图的 D7 其实是 0 不是 R)

OCW3 命令字含义:

  • D4D3位=01OCW3 的标志位( 20H 端口,标志为进行区分)。
  • D6D5=11设置特殊屏蔽方式D6D5=10 时撤销该方式。
  • P 位是中断查询(Poll)位,若 P=18529A 发中断查询命令,紧接着用 IN 指令读取中断查询字。查询字格式见图。
  • RR 位为读寄存器RR=1,允许读 IRR \text{IRR} IRR ISR \text{ISR} ISR 寄存器的内容。进一步查看 RIS;若 RIS=0,下次 IN 指令读取 IRR \text{IRR} IRR 内容;若 RIS=1 ,则读取 ISR \text{ISR} ISR 内容。RR=0为无效命令。

例8.13 编写读取中断屏蔽字 (21H)、中断查询字(20H)及中断服务寄存器的程序段。
读取中断屏蔽字的程序段:

IN AL, 21H   ;从奇地址口读IMR, 获得中断屏蔽字

读取中断查询字的程序段:

MOV AL, 00001100B  ;OCW3, P=1, 发查询命令
OUT 20H, AL        ;OCW3写入偶地址口
IN  AL, 20H        ;AL←中断查询字。若AL=
				   ;10000110B,表示有中断请求, 且IR6上的优先级最高

读取中断服务寄存器 ISR \text{ISR} ISR 的程序段:

MOV	AL 00001011B 	;OCW3, RR-RIS=11,
					;下次读ISR
OUT 20H, AL        	;OCW3写入偶地址口
IN  AL, 20H        	;AL←ISR内容

特定屏蔽方式(开放高级和低级中断)设置方法(在某一个中断的中断服务程序中设置的,把我的中断优先级屏蔽掉,允许中断嵌套;设置后一直有效,直到清除):
① 用 OCW1 屏蔽当前中断
② 用 OCW3 设置特定屏蔽方式

清除方法:
① 用 OCW3 清除特定屏蔽方式
② 用 OCW1 开放当前中断

如在 IR3 的服务程序中使用,IR0-2 开放,IR3-7 关闭。比 IR3 优先级低的中断的服务程序必须送指定 EOI

...           ;IR0-2开放,IR3-7关闭; 下面设置特殊屏蔽方式
CLI			  ;关中断
IN  AL, 21H	  ;读入中断屏蔽字
OR  AL, 08H   ;屏蔽第3个引脚 0000_1000
OUT 21H, AL   ;送出去
MOV AL, 68H   ;0_11_01_0_00特殊屏蔽字
OUT 20H, AL   ;发特殊屏蔽字
STI        	  ;开中断
...			  ;IR0-2开放,IR4-7开放,IR3关闭    
 
CLI        	  ;关中断; 下面关闭特殊屏蔽方式
MOV AL, 48H   ;0_10_01_0_00
OUT 20H, AL   ;清除特殊屏蔽方式
IN  AL, 21H   ;读入中断屏蔽字
AND AL, 0F7H  ;开放自己,IMR3=0
OUT 21H, AL   ;送出去
STI        	  ;开中断
...         
MOV AL, 20H   ;EOI命令
OUT 20H, AL   
RET  

8.3 8259A应用举例

早期PC机——单片系统端口地址:20H、21H

  • 边沿触发
  • 完全嵌套
  • 固定优先级;
  • 非缓冲
  • 中断类型号08H~0FH

初始化编程:

MOV  AL, 13H    
OUT  20H, AL    ;ICW1
MOV  AL, 08H 
OUT  21H, AL    ;ICW2
MOV  AL, 01H    
OUT  21H, AL    ;ICW4

286以上PC机——双片级联系统:

  • 从片连在主片的 IR2 上,主从级联信号互连
  • 端口地址,主片:20H、21H;从片:0A0H、0A1H
  • 边沿触发;
  • 完全嵌套;
  • 固定优先级;
  • 非缓冲;
  • 中断类型号,主片:08H~0FH;从片:70H~77H

初始化编程(主)

MOV  AL, 11H  ;000_1_0_0_01
OUT  20H, AL
MOV  AL, 08H
OUT  21H, AL
MOV  AL, 04H
OUT  21H, AL
MOV  AL, 01H
OUT  21H, AL

初始化编程(从)

MOV  AL, 11H
OUT  0A0H, AL
MOV  AL, 70H
OUT  0A1H, AL
MOV  AL, 02H
OUT  0A1H, AL
MOV  AL, 01H
OUT  0A1H, AL
8259A中断服务器寄存于,8259A中断控制器
weixin_30709043的博客
07-30 1882
8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INT n指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。这些中断也都通过可编程中断控制器PIC(Programmable Interrupt Controller)进行控制,并传递给CPU。中文名8259A中断控制器兼容性PC/XT工作原理IMR传递8259A中断控制器总述编...
8086中断流程_8086CPU中断响应流程.ppt
weixin_39606361的博客
12-24 1455
四、8259A 的初始化命令字 8259A 初始化编程时,有四个初始化命令字ICW(Initialiation Command Word),即ICW1?ICW4 ;8259A工作期间,有三个操作命令字OCW(Operation Command Word),即OCW1~OCW3。 8259A 只有两个端口地址 A0= 0 偶地址端口 1 奇地址端口 因此,对8259A读/写操作时...
计算机组成原理中断接口实验,计算机组成原理实验4.2_实验报告
weixin_31304817的博客
07-15 931
学生报告 实验学 院:软 件 学 院 专 业:软 件 工 程 年 级:2010级 学 号: 24320102202460 学 生 姓 名: 高伟 ...
【微机接口】中断控制器8259A
最新发布
暮色年华的博客
11-11 1308
8259A
详解8259A
ZZHinclude的博客
12-03 170
链接地址
微机原理--复习笔记.doc
10-11
控制器自身由指令寄存器(IR)、指令译码器(ID)和可编程逻辑阵列(PLA)等组成,而寄存器包括程序计数器(PC)、地址寄存器(AR)、数据缓冲寄存器(DR)、指令寄存器(IR)、累加器(A)和标志寄存器(FLAGS),...
548、单片机原理与应用实验指导书.rar-教程与笔记习题
05-22
单片机,又称微控制器,是集成在单一芯片上的微型计算机系统,具有数据处理和控制功能。它广泛应用于各种电子设备中,如家用电器、汽车电子、工业自动化等。了解单片机的原理与应用,对于从事相关领域工作或学习电子...
IDEctrl.rar_嵌入式/单片机/硬件编程_Visual_C++_
08-11
标题中的“IDEctrl.rar”可能是指一个包含了与IDE(Integrated Drive Electronics)控制器相关的代码资源的压缩文件,主要用于嵌入式系统或单片机环境中的硬件编程。IDE是计算机硬件接口,用于连接硬盘和其他存储...
系统分析师学习笔记(十八)
cecily044的博客
05-10 671
嵌入式系统分析与设计 嵌入式系统概述 嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用的功能、可靠性、成本、体积和功耗等方面的要求,集可配置、可裁减的软硬件于一体的专用计算机系统。嵌入性、专用性和计算机系统是嵌入式系统的三个核心要素。 1.嵌入式系统的特点 (1)系统专用性强。嵌入式系统是针对具体应用的专门系统。它的个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。由于嵌入式系统总是用来完成某一特定任务的,整个系统与具体应用有机地结合在
系统分析师学习笔记(十七)
cecily044的博客
05-10 6475
新技术应用 中间件技术 中间件概述 1.中间件的功能 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于操作系统之上,管理计算资源和网络通信,实现应用之间的互操作。 (1)负责客户机与服务器之间的连接和通信,以及客户机与应用层之间的高效率通信机制。 (2)提供应用层不同服务之间的互操作机制,以及应用层与数据库之间的连接和控制机制。 (3)提供一个多层架构的应用开发和运行的平台,以及一个应用开发框架,支持模块化的应用开发。 (4)屏蔽硬件、操作系统、网络和数据
计算机组成原理实验报告-具有基本输入输出功能的总线接口.doc
05-15
具有基本输出输入功能的总线接口实验。存储器和输入、输出设备最终要挂到外部总线上,所以需要外部总线提供数据信号、地址信号推挤控制信号。数据总线用来传输各功能部件之间的数据信息,它是双向传输线。地址总线用来指出数据总线上的源数据或者目的数据在主存单元的地址或IO设备的地址。控制总线是用来发出各种控制信号的传输线。
074-王楠-计组实验四 .docx
06-08
(1) 理解总线的概念及其特性。 (2) 掌握控制总线的功能和应用。 (3)掌握中断控制信号线的功能和应用。 (4)掌握在系统总线上设计中断控制信号线的方法。 (5) 掌握 DMA 控制信号线的功能和应用。 (6) 掌握在系统总线上设计 DMA 控制信号线的方法。
8259A可编程中断控制器芯片中断过程
行者无疆的专栏
12-13 6409
8259A:可编程中断控制器芯片(PIC),它是可以用程序控制的中断控制芯片。单个的8259A能管理8级向量优先级中断。在不增加其他电路的情况下,最多可以级联成64级的向量优级中断系统。 8259A内部结构由8个部分组成: (1)数据总线缓冲器(DATA BUS BUFFER):将8259A连接到系统数据总线上,控制字和状态信息通过此传送。 (2)读/写控制逻辑(READ/WRITE
8259A的工作过程——CPU响应硬件中断的过程
qq_46907547的博客
12-22 2086
首先由中断请求寄存器寄存加到引脚IR0IR_0IR0​~IR7IR_7IR7​ 上的中断请求。 在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求被送到优先权电路判优。 经过优先权电路的判别,选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号。 CPU满足一定条件后,向8259A发出2个中断响应信号(负脉冲)。 8259A从引脚INTA收到第1个中断响应信号后,立即使中断服务寄存器中与被选中的中断源对应的那一位置1,同时把中断请求寄存器中的相应位清0。 从引脚INTA收到第2个中断响应信号后,.
[计算机组成原理]—3.系统总线(详细)
MengXin的博客
03-05 944
思维导图: 一、 总线的基本概念 1.单总线 2.面向 CPU 的双总线 3.以存储器为中心的双总线 二、总线的分类 1.片内总线 2. 系统总线 数据总线:双向 与机器字长、存储字长有关 地址总线:单向 与存储地址、 I/O地址有关 控制总线:有出 有入——中断请求、总线请求;存储器读、存储器写 3.通信总线 用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通...
8259的IRR、ISR、IMR的功能
热门推荐
酒中欢的博客
12-15 1万+
IRR是中断请求控制器。它保存从IR0-IR7来的中断请求信号。某一位有1就表示相应引脚上有中断请求信号。中断响应后,该IR输入线上的请求信号应该撤销。 ISR是中断服务寄存器。它用于保存正在服务的中断源。在中断响应时,判优电路把发出中断请求的中断源中优先级最高的中断源所对应的位设置为1,表示该中断源正在处理中。ISR某一位置1课阻止与它同级和更低优先级的请求被响应,但允许更高优先级的请求被响应。...
8086中断控制器8259A
qq_45494369的博客
08-07 6058
关于8259A的介绍 可编程中断控制器,用于可屏蔽中断管理。 单片8259A可管理8个外边中断源,通过级联,最多可以管理64个外部中断源。 中断请求寄存器IRR 保存8条外界中断请求信号IR0~IR7的请求状态,Di位为1表示IRi引脚有中断请求;为0表示无请求,中断处理后,及时撤销。 中断服务寄存器ISR 保存正在被8259A服务着的中断状态,ISi为1表示IRi中断正在服务中;为0表示没有被服务,收到EOI命令相应位被清除 中断屏蔽寄存器IMR 保存对中断请求信号IR的屏蔽状态,Di位为1表示IRi
中断架构-8529A
老鹰不捉小鸡
01-24 1609
中断相关概念 ♦中断源:引起中断的时间 或 发出中断的外设 ♦分类 ①外部中断 ▷可屏蔽中断(INTR引脚,一般是指interrupt的缩写,也就是中断)、 ✔外设 ✔受IF控制,N=8~255 (IF标志位) ▷不可屏蔽中断(NMI引脚) (你妈超凶,你必须听) ✔电源,内存错误等 ✔不受IF控制,N=2 ②内部中断 ▷CPU内部 ▷软件中断(指令错误) ▷异常(指令执行时发生错误) ●内部中断(异常,E...
第7章 中断控制器8259A
weixin_46716100的博客
12-29 9301
Intel 8259A是8088/8086微机系统的中断控制器件,它有对外设中断源进行管理,并向CPU转达中断请求的能力。 用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断 8259A的内部结构和工作原理 1、8259A的组成部分 中断请求寄存器IRR: 保存8条外界中断请求信号IR0~IR7的请求状态; Di位为1表示IRi引脚有中断请求;为0表示无请求。 中断服务寄存器ISR: 保存正在被8259A服务着的中断状态; Di位为1表示IRi中断正在服.
微机原理接口技术8259A中断控制器解析
微机原理接口技术这门课程中,我们学习了多个关键概念和技术,其中包括8259A可编程中断控制器8259A是Intel公司设计的一种用于处理和管理中断的芯片,它能够帮助微处理器协调多个中断源。读取8259A的状态是了解...
写文章

热门文章

  • 【VS Code】settings.json的两种配置位置(全局用户设置和工作区设置) 58650
  • 【离散数学】图论 第七章(3) 图的矩阵表示(邻接矩阵、可达矩阵、传递闭包求解算法) 32261
  • 【软件工程】软件需求说明书、概要设计说明书、详细设计说明书参考模板 28047
  • 【VS Code】文件夹(Folder)和工作区(Workspace)的使用 23020
  • 【C/C++】printf格式化输出-科学计数法形式的浮点数 20582

分类专栏

  • 最小瓶颈路 3篇
  • SQL 8篇
  • 构造 1篇
  • 正则表达式 1篇
  • 数位DP 2篇
  • 机器学习 1篇
  • 数据结构和算法学习 89篇
  • CCF 4篇
  • 树链剖分 2篇
  • 软件工程
  • 离散数学 28篇
  • AcWing
  • 设计模式 5篇
  • 云计算
  • Codeforces
  • 蓄水池抽样 1篇
  • 编程语言和语言哲学 113篇
  • 基础课程和实践项目 115篇
  • 编程环境和项目工具 41篇
  • PAT 39篇
  • 最小生成树 6篇
  • 网络流之最大流 1篇
  • LeetCode 735篇
  • 线性代数 1篇
  • 动态规划 84篇
  • LCS 3篇
  • 01背包 6篇
  • 多重背包
  • 完全背包 4篇
  • 树形DP 3篇
  • 设计 21篇
  • Linux 3篇
  • 外语学习
  • 日语学习
  • 英语学习
  • 模拟 52篇
  • 哈希 52篇
  • 哈希集合 12篇
  • 哈希映射 50篇
  • 回溯 18篇
  • 分治 4篇
  • 树-二叉树 45篇
  • 树-线索二叉树 1篇
  • 树-完全二叉树 1篇
  • 树-KD树 1篇
  • LCA 1篇
  • 数组 115篇
  • 队列 7篇
  • 循环队列 2篇
  • 双向队列 2篇
  • 25篇
  • 链表 39篇
  • 双向链表 4篇
  • 字符串 111篇
  • 字符串哈希 2篇
  • 字典树 9篇
  • KMP 10篇
  • Manacher 2篇
  • 并查集 16篇
  • 种类并查集 5篇
  • 带权并查集 1篇
  • 树-二叉搜索树 22篇
  • 平衡树-AVL树 1篇
  • 平衡树-Treap 2篇
  • 优先队列-二叉堆 16篇
  • 优先队列-左式堆 1篇
  • 区间数据结构-ST表 2篇
  • 区间数据结构-莫队 4篇
  • 区间数据结构-树状数组 13篇
  • 区间数据结构-线段树 7篇
  • 单调栈/队列 14篇
  • 集合 9篇
  • 映射 5篇
  • 记忆化搜索 17篇
  • 搜索 5篇
  • 枚举 17篇
  • BFS/DFS 111篇
  • 排列组合 14篇
  • 二分与三分 52篇
  • 滑动窗口 17篇
  • 双指针 48篇
  • 双向广搜 1篇
  • 图论 20篇
  • 图的连通性 3篇
  • 最短路 8篇
  • 拓扑排序 9篇
  • 二分图 6篇
  • 关键路径 1篇
  • 贪心 67篇
  • 分块 2篇
  • 排序 51篇
  • 计数排序 3篇
  • 基数排序 1篇
  • 归并排序 2篇
  • 希尔排序 1篇
  • 快速排序 6篇
  • 脑筋急转弯 9篇
  • 数学 95篇
  • 数论 11篇
  • 素数筛 1篇
  • 组合数学 5篇
  • 快速幂与矩阵快速幂 7篇
  • 约瑟夫环问题 3篇
  • 博弈论 3篇
  • 高精度 3篇
  • 有理数 1篇
  • 01字典树 5篇
  • 模运算 5篇
  • STL 2篇
  • 位操作 51篇
  • 递归/递推 35篇
  • 算法技巧-离线 1篇
  • 算法技巧-哨兵 1篇
  • 算法技巧-倍增法 2篇
  • 算法技巧-随机化 5篇
  • 算法技巧-离散化 2篇
  • 算法技巧-前缀和 49篇
  • 算法技巧-差分 9篇
  • 算法技巧-二进制压缩 3篇
  • 计算几何 6篇
  • 算法技巧-打表 9篇
  • 刷题日志与精进之路 11篇
  • HDU 32篇
  • LintCode 3篇
  • POJ 21篇
  • 洛谷 41篇
  • Code War 2篇
  • CodeUp 2篇
  • 牛客网 2篇
  • Aizu Online Judge 1篇
  • =====小项目===== 11篇
  • Console知识 2篇
  • 信息管理 1篇
  • 图形游戏 9篇
  • 控制台游戏 3篇
  • 网络爬虫 6篇
  • 虚拟实习体验项目
  • 财务报表分析 1篇
  • 读书笔记 11篇
  • 计算机组成 2篇
  • 编译原理 2篇
  • 操作系统 14篇
  • 微机原理 8篇
  • 数字逻辑 11篇
  • 数据库系统 21篇
  • 汇编语言 5篇
  • 财务管理 1篇
  • 计算机网络 32篇
  • 计算机体系结构 5篇
  • 计算机考试 3篇

最新评论

  • 【VS Code】Windows10下VS Code配置Prolog语言环境

    波波疯狂敲代码: 怎么中文化呀表情包表情包

  • 【算法学习】图论专题 判断无向图中环的存在、环的输出

    weixin_43371500: 请问是用VS环境编译的吗?但是用VS2022编译会显示错误,也即bool visited[numVertexes]; ,E0028 表达式必须含有常量

  • 【离散数学】集合论 第四章 函数与集合(3) 鸽巢原理

    2301_80144607: 例四里面是:至少有5人出生在星期一或者至少有五人出生在星期二或者至少有5人出生在星期三……或至少有5人出生在星期天,直接说“总可以挑出5人出生在星期天”是不是有一点问题或者不严谨

  • 【离散数学】集合论 第四章 函数与集合(3) 鸽巢原理

    2301_80144607: 例4是不是有点问题

  • 【数据库基础】关系代数之除法

    鹿角海棠0241: 谢谢

最新文章

  • LeetCode 2390. 从字符串中移除星号【栈】1347
  • LeetCode 2073. 买票需要的时间【一次遍历+数学】1325
  • LeetCode 1014. 最佳观光组合【枚举右维护左,数组】1730
2024
10月 2篇
09月 5篇
08月 9篇
06月 1篇
05月 9篇
04月 2篇
03月 2篇
02月 1篇
01月 11篇
2023年239篇
2022年84篇
2021年388篇
2020年621篇
2019年73篇
2018年70篇

目录

目录

分类专栏

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家上海仿铜玻璃钢雕塑供应商白银城市玻璃钢雕塑多少钱黄圃玻璃钢雕塑铜仁贵阳玻璃钢雕塑定制佛山玻璃钢革命人物雕塑玻璃钢天猫雕塑厂家普陀区拉丝玻璃钢雕塑性价比高浙江户外玻璃钢雕塑销售厂家山东室内雕塑玻璃钢德阳玻璃钢雕塑摆件施工价格金华玻璃钢陶瓷雕塑厂家舟山荷花玻璃钢雕塑杭州商场美陈生产厂家濮阳花朵玻璃钢雕塑价格零售罗马柱玻璃钢雕塑义乌城市玻璃钢雕塑无锡黑白玻璃钢花盆湖南玻璃钢雕塑甘南玻璃钢雕塑梅州玻璃钢卡通雕塑玻璃钢雕塑工厂联系方式杭州抽象玻璃钢雕塑批发临沂公仔玻璃钢雕塑商场公交站美陈拍照天水仿真人物玻璃钢雕塑安装辽宁商场创意商业美陈价格太原玻璃钢仿铜雕塑苏州玻璃钢雕塑公司商场美陈粉色云朵深圳蛋型玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化