第章INTELX系列微处理器.ppt

上传人:sccc 文档编号:5283434 上传时间:2023-06-22 格式:PPT 页数:86 大小:2.52MB
返回 下载 相关 举报
第章INTELX系列微处理器.ppt_第1页
第1页 / 共86页
第章INTELX系列微处理器.ppt_第2页
第2页 / 共86页
第章INTELX系列微处理器.ppt_第3页
第3页 / 共86页
第章INTELX系列微处理器.ppt_第4页
第4页 / 共86页
第章INTELX系列微处理器.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《第章INTELX系列微处理器.ppt》由会员分享,可在线阅读,更多相关《第章INTELX系列微处理器.ppt(86页珍藏版)》请在三一办公上搜索。

1、第4章 Intel80X86 系列微处理器,4.1 8086/8088 微处理器概述4.2 8086/8088 内部寄存器结构4.3 8086/8088 的存储器组织和I/O组织4.4 8086/8088 的内部结构4.5 8086/8088 外特性引脚信号及其功能4.6 8086/8088 最小工作模式及其系统结构4.7 8086/8088 最大工作模式及其系统结构4.8 8086/8088 总线时序4.9 INTEL 80286 到 Pentium CPU,4.1 8086/8088 微处理器概述,1978年Intel公司推出了首枚16位微处理器8086,以后英特尔生产的80X86系列微处

2、理器,均与其兼容。1979年Intel公司推出了成本较低的Intel8088微处理器。1981年IBM公司选择8088微处理器作为核心来设计IBM PC微计算机系统,推向市场后获得了巨大的成功,为后来的80 x86系列微处理器成为主流微计算机的处理核心打下了基础。,4.1 8086/8088 微处理器概述,4.2 8086/8088 内部寄存器结构,了解CPU内部寄存器结构并掌握其使用方法是进行汇编语言程序设计的关键和基础。8086/8088 内部有14个16位的寄存器,可供程序直接使用。按功能分为三组:通用寄存器组(8个)、段寄存器组(4个)和控制寄存器组(2个)。,4.2 8086/808

3、8 内部寄存器结构,4.2.1 通用寄存器组4.2.2 段寄存器组4.2.3 控制寄存器组,4.2.1通用寄存器组,数据寄存器地址指针和变址寄存器,8086/8088 CPU有8个通用寄存器。这8个寄存器可以分为两类:数据寄存器和地址指针与变址寄存器。,一、数据寄存器,数据寄存器包括4个16位寄存器AX、BX、CX和DX,通常用于存放参与运算的操作数和运算结果。每一个数据寄存器又可将高、低8位分别作为两个独立的8位寄存器使用。它们的高8位分别记作AH、BH、CH、DH,低8位分别记作AL、BL、CL、DL。,二、地址指针和变址寄存器,地址指针和变址寄存器包括4个16位寄存器SP、BP、SI和D

4、I。它们主要是用来存放或指示操作数的偏移地址。其中SP、BP为地址指针寄存器,SI、DI为变址寄存器。SP堆栈指针:存放堆栈栈顶的偏移地址。堆栈操作指令PUSH和POP根据该寄存器得到操作数的偏移地址。BP基址寄存器:存放堆栈中数据的偏移地址。SI源变址寄存器:用来存放源数据区的偏移地址。DI目标变址寄存器:用来存放目的数据区的偏移地址。所谓变址寄存器,是指它存放的地址在串操作指令中可以按照要求自动增加/减少。,4.2.2 段寄存器组,8086/8088 CPU的存储器采用分段管理,为此,8086/8088 内部设置了4个16位的段寄存器,CS代码段寄存器、DS数据段寄存器、SS堆栈段寄存器和

5、ES附加段寄存器,分别用于存放代码段、数据段、堆栈段和附加段的段基地址。关于这4个寄存器的使用详见“4.3 8086/8088 的存储器组织和I/O组织”。,4.2.3 控制寄存器组,IP指令指针FLAGS标志寄存器,8086/8088 CPU包含2个16位的控制寄存器:指令指针IP和标志寄存器FLAGS。,一、IP 指令指针,IP 用于存放下一条要执行的指令的偏移地址。程序运行中,IP 的内容自动修改,始终指向下一条要执行的指令地址。IP 起着控制指令执行流程的作用,是一个十分重要的控制寄存器。正常情况下,程序不能直接修改 IP的内容,但当需要改变程序执行顺序时,如遇到中断指令或调用指令时,

6、IP 中的内容将被自动修改。,二、FLAGS 标志寄存器,FLAGS 用于存放指令执行结果的特征和 CPU 工作方式。其内容通常称为处理器状态字(Processor Status Word,PSW)。FLAGS 是一个16位寄存器,实际使用了9位。9个标志分为状态标志和控制标志两类。,图4.3 标志寄存器,1、状态标志,CF:进位标志。有进位或借位时,CF=1;否则 CF=0。PF:奇偶标志。低8位有偶数个“1”,PF=1;否则 PF=0。AF:辅助进位标志。D3位有进位或借位时,AF1;否则AF0。ZF:零标志。结果为零,ZF1;否则 ZF0。SF:符号标志。结果为负数,SF1;否则 SF0

7、。OF:溢出标志。发生溢出,OF1;否则 OF0。,6个状态标志位用来表示运算结果的特征。状态标志位的置位或清零,由CPU根据运算过程和运算结果自动设置。,2、控制标志,3个控制标志是用来控制CPU的工作方式的标志。IF:中断允许标志。用来控制对外部可屏蔽中断的响应。如果IF1,则允许CPU响应外部可屏蔽中断请求;否则CPU不响应外部可屏蔽中断请求。DF:方向标志。用来控制串操作指令的执行。如果DF1,则串操作指令的地址自动减量修改,串数据的传送过程是从高地址到低地址进行;否则,串操作指令的地址自动增量修改,串数据的传送过程是从低地址到高地址进行。TF:陷阱标志,又称单步标志。当TF1时,微处

8、理器就进入单步工作方式,每执行完一条指令便自动产生一个内部中断(称为单步中断),转去执行一个中断服务程序,可以借助中断服务程序来检查每条指令的执行情况;如果TF0,则CPU正常(连续)执行指令。,4.3 8086/8088 的存储器组织和I/O组织,4.3.1 存储器的分段管理4.3.2 物理地址与逻辑地址4.3.3 物理地址的形成4.3.4 堆栈4.3.5 存储器组织4.3.6 I/O组织,4.3.1存储器的分段管理,为了实现对1MB单元的寻址,8086/8088系统采用了存储器分段技术。存储器分段技术具体实现方法是:将1MB的存储空间分成许多逻辑段,每段最长64K字节单元,段内可以使用16

9、位地址码进行寻址。每个逻辑段在实际存储空间中的位置是可以浮动的,逻辑段的起始地址可由段寄存器的内容来确定。实际上,段寄存器中存放的是段起始地址的高16位,称之为段基地址,逻辑段起始地址的低4位为0。,图4.4 逻辑段在物理存储器中的位置,各个逻辑段在实际的存储空间中可以完全分开,也可以部分重叠,甚至完全重叠。段的起始地址的计算和分配通常是由操作系统完成的,并不需要普通用户参与。,4.3.2 物理地址与逻辑地址,物理地址:信息在存储器中实际存放的地址,它是CPU访问存储器时实际输出的地址。8086/8088系统的物理地址是20位,存储空间为2201M字节单元,地址范围从00000H到FFFFFH

10、。CPU和存储器交换数据时所使用的就是20位的物理地址。逻辑地址:编程时所使用的地址,由段基地址和偏移量两部分构成。程序设计时所涉及的地址是逻辑地址而不是物理地址。编程时不需要知道产生的代码或数据在存储器中的具体物理位置。这样可以简化存储资源的动态管理。段基地址(段地址或段基址):段的起始地址的高16位。偏移量(偏移地址):所访问的存储单元距段的起始地址之间的字节距离。,在8086/8088计算机系统中,每个存储单元可以看成具有两种地址:物理地址和逻辑地址。,4.3.2 物理地址与逻辑地址,给定段基地址和偏移量,就可以在存储器中寻址所访问的存储单元。在8086/8088系统中,段基地址和偏移量

11、都是16位的。段基地址由16位的段寄存器CS、DS、SS和ES提供;偏移量通常由BX、BP、SP、SI、DI、IP或这些寄存器的组合形式来提供。例如,8086/8088开机后执行的第一条指令的逻辑地址由CS和IP两个寄存器给出,其逻辑地址表示为FFFFH:0000H,对应的物理地址为FFFF0H。,4.3.3 物理地址的形成,8086/8088访问存储器时的20位物理地址可由逻辑地址转换而来。转换方法:将段寄存器中的16位段基地址左移4位(低位补0),再与16位的偏移量相加,即可得到所访问存储单元的物理地址。计算公式:物理地址段基地址16+偏移量 上式中的“段基地址16”在微处理器中是通过将段

12、寄存器的内容左移4位(低位补0)来实现的,得到的是20位的段的起始地址。段的起始地址与偏移量相加的操作由20位地址加法器来完成,,图4.5 8086/8088物理地址的产生,【例4.1】设代码段寄存器CS中的内容为4232H,指令指针寄存器IP中的内容为0066H,即CS4232H,IP0066H,则访问代码段存储单元的物理地址计算如下:,所以,访问代码段存储单元的物理地址为42386H。,【例4.2】设数据段寄存器DS的内容为1234H,基址寄存器BX的内容为0023H,即DS1234H,BX0023H,则访问数据段存储单元的物理地址计算如下:,所以,访问数据段存储单元的物理地址为12363

13、H。,4.3.4 堆栈,堆栈是存储器中的一个特殊的数据存储区,采用“后进先出”的原则存放数据,通常它的一端(栈底)是固定的,另一端(栈顶)是浮动的,信息的存入和取出都只能在浮动的一端进行。堆栈主要用来暂时保存程序运行时的一些地址或数据信息。例如:当CPU执行调用指令时,用堆栈保存程序的返回地址(亦称断点地址);在中断处理时,通过堆栈“保存现场”和“恢复现场”;有时也利用堆栈为子程序传递参数。,4.3.5 存储器组织,8086CPU 有四个逻辑段,分别是代码段、数据段、堆栈段和附加段。代码段:用于存放指令代码。代码段寄存器CS存放代码段的段基地址,偏移量由指令指针IP提供。数据段和附加段:用于存

14、放操作数。数据段寄存器DS存放数据段的段基地址,附加段段寄存器ES存放附加段的段基地址。堆栈段:堆栈段用于暂时保存程序运行中的一些数据和地址信息。,4.3.6 I/O组织,8086/8088 I/O端口为64KB,因此只需要16跟地址线A15A0。对I/O端口寻址时不需要使用段寄存器,高位地址A19A16输出0。,4.4 8086/8088 的内部结构,8086/8088微处理器由两个独立的部件构成,一个是总线接口部件BIU(Bus Interface Unit),另一个是执行部件EU(Execution Unit)。,4.4.1总线接口部件BIU,BIU负责完成微处理器内部与外部(内存储器和

15、I/O端口)的信息传送,即负责取指令和存取数据。BIU由以下5个部分组成:4个16位的段寄存器:CS、DS、SS和ES,分别用于存放当前代码段、数据段、附加段和堆栈段的段基地址。16位指令指针IP:用于存放下一条要执行的指令的偏移地址。20位物理地址加法器:用于将来自于段寄存器的16位段地址左移4位后与来自于IP寄存器或EU提供的16位偏移地址相加,形成一个20位的物理地址。6/4字节的指令队列:用于存放预取的指令,减少等待时间,避免取指令和取操作数发生冲突,从而提高运行效率。总线控制逻辑:用于产生并发出总线控制信号,以实现对存储器和I/O端口的读写控制。它将CPU的内部总线与16位的外部总线

16、相连,是CPU与外部进行数据交换的通路。,4.4.2执行部件EU,执行部件EU的功能就是负责指令的执行。EU由以下几部分组成:算术逻辑单元ALU:ALU完成16位或8位的二进制数的算术/逻辑运算,绝大部分指令的执行都由ALU完成。在运算时,数据先传送至16位的暂存寄存器中,经ALU处理后,运算结果可通过内部总线送入通用寄存器或由BIU存入存储器。标志寄存器FLAGS:它用来反映CPU最后一次运算结果的状态特征或存放控制标志。FLAGS为16位,其中7位未用。通用寄存器组:它包括4个数据寄存器AX、BX、CX、DX,其中AX又称累加器,4个地址指针和变址寄存器,即基址寄存器BP、堆栈指针寄存器S

17、P、源变址寄存器SI和目的变址寄存器DI。EU控制系统:它接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发送相应的控制命令,以完成每条指令所规定的操作。,4.4.3 BIU与EU的动作协调原则,总线接口部件(BIU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务。每当8086的指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BIU就会自动把指令取到指令队列中。其取指的顺序是按照指令在程序中出现的前后顺序。每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行该指令。在

18、执行指令的过程中,如果需要访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向后的另一程序段中的指令代码。,4.5 8086/8088外特性引脚信号及其功能,8086/808

19、8CPU采用40个引脚的双列直插式封装形式。为了减少芯片的引脚,8086/8088CPU采用了引脚复用技术,因此部分引脚具有双重功能。这些双功能引脚的功能转换分两种情况:一种是采用了分时复用的地址/数据和地址/状态引脚;另一种是根据不同的工作模式定义不同的引脚功能。,4.5.1 8086外特性引脚信号及其功能,电源、地和时钟信号系统复位和准备好信号地址、数据和状态信号 中断信号读、写选通信号模式选择信号最小工作模式下的专用信号最大工作模式下的专用信号,一、电源、地和时钟信号,VCC电源端:接入的电压为+5V10%。GND接地端:两条GND均应接地。CLK时钟信号:输入,提供CPU和总线控制的基

20、本定时脉冲。8086CPU要求时钟信号是占空比为33的非对称性的脉冲信号。,二、系统复位和准备好信号,RESET 复位信号:输入,高电平有效,用来停止CPU的现行操作,完成CPU内部的复位过程。该信号必须由低到高,并且至少要保持4个时钟周期的高电平,才能完成复位CPU。READY 准备就绪信号:输入,高电平有效,用来确认CPU访问的存储器或I/O设备是否完成数据传送。该信号是为了CPU与低速的存储器或I/O设备之间实现速度匹配所设置的。当READY为高电平时,表示内存或I/O设备已准备就绪,可以立即进行一次数据传输。TEST#测试信号:输入,低电平有效。该信号用于协调8086 CPU与8087

21、协处理器的操作。,表4.1 复位后内部寄存器状态,三、地址、数据和状态信号,ADl5AD0 地址数据复用总线:双向,三态,分时复用。在总线周期的T1状态,输出地址;在总线周期的T2T4状态,作为数据线使用。A19/S6A16/S3 地址/状态复用线:输出,三态,分时复用。在总线周期的T1状态,用来输出地址的最高4位,在总线周期的其他状态用来输出状态信息。BHE#/S7 总线高字节允许/状态信号S7:输出,三态,分时复用。在总线周期的T1状态,有效时表示选择高8位数据。在总线周期的其他状态用来输出状态,S7未定义。S7未定义。S6总是为0。S5表明中断允许标志的当前设置情况。如果IFl,则S51

22、,表示当前允许可屏蔽中断;如果IF0,则S50,表示当前禁止一切可屏蔽中断。S4和S3状态的组合指出当前正使用哪个段寄存器。,表4.2 S4、S3代码组合与段寄存器的关系,四、中断信号,INTR 可屏蔽中断请求信号:输入、高电平有效。当该信号变为高电平时,表示外部设备有可屏蔽中断请求。CPU在每个指令周期的最后一个T状态检测此引脚,一旦测得此引脚为高电平,并且中断允许标志位IF=1,则CPU在当前指令周期结束后,转入中断响应周期。NMI 非屏蔽中断请求信号:输入,上升沿有效。该中断请求不能用软件进行屏蔽,不受中断允许标志IF的控制。当该引脚上电平有由低到高的变化,就会在当前指令结束后引起中断。

23、NMI中断通常由电源掉电等紧急情况引起。INTA#中断响应信号:(最小工作模式下的专用信号)输出,低电平有效,在最小模式下,CPU响应可屏蔽中断后发给请求中断设备的应答信号,是对中断请求信号INTR的响应。,五、读、写选通信号,RD#读信号:输出,三态,低电平有效,表示CPU正在对存储器或I/O端口进行读操作。在读总线周期的T2,T3,TW状态,均保持低电平。WR#写信号(最小工作模式下的专用信号):输出,三态,低电平有效,表示CPU正在对存储器或I/O端口进行写操作。在写总线周期的T2,T3,TW状态,均保持低电平。,六、模式选择信号,8086CPU有两种工作模式:最小工作模式和最大工作模式

24、。MN/MX#模式选择信号:用于选择CPU工作在最大工作模式还是最小工作模式。当此引脚接+5V(高电平)时,CPU工作于最小工作模式;若接地(低电平),CPU工作于最大工作模式。最小工作模式:系统中只有8086一个微处理器,系统中的所有总线控制信号都直接由8086产生。最大工作模式:系统中含有两个或两个以上微处理器,其中一个是主处理器8086,其它为协处理器,总线控制信号由芯片8288产生。由于在不同工作模式下,引脚2431有着不同的名称和定义,因此称为专用引脚信号,除了引脚2431外,其它引脚信号称为公共引脚信号。,七、最小工作模式下的专用信号,HOLD 总线保持请求信号:输入,该信号是最小

25、模式系统中除主CPU以外的其他总线控制器(如DMA控制器)申请使用系统总线的请求信号。HLDA 总线保持响应信号:输出,该信号是对HOLD的响应信号。WR#写信号。M/IO#存储器/IO访问控制信号:输出。高电平时访存,低电平时访问IO。DEN#数据允许信号:输出,作为双向数据总线收发器8286的选通信号。它在每一次存储器访问或I/O访问或中断响应周期有效。DT/R#数据发送/接收控制信号:输出,三态,使用8286作为数据总线收发器时,8286的数据传送方向由控制。数据发送时1;数据接收时0。ALE 地址锁存允许信号:输出、提供给地址锁存器8282的控制信号。INTA#中断响应信号。,八、最大

26、工作模式下的专用信号,S2#,S1#,S0#总线周期状态信号:输出,三态,这三个信号组合起来指出当前总线周期所进行的操作类型。RQ#/GT1#,RQ#/GT0#总线请求信号总线请求允许信号:这两个引脚是双向的,信号为低电平有效。这两个信号是最大模式系统中主处理器8086和其他协处理器(如8087,8089)之间交换总线使用权的联络控制信号。LOCK#总线封锁信号:输出,三态,低电平有效。当为低电平时,表明此时CPU不允许其他总线主设备占用总线。QS1,QS0指令队列状态信号:输出,QS1,QS0两信号用来指示CPU内指令队列的当前状态,以使外部处理器(主要是协处理器8087)对CPU内指令队列

27、的动作进行跟踪。,4.5.2 8088与8086引脚的不同之处,8088CPU为准16位机,虽然其内部结构与8086基本相同,但是只能按8位与外部进行数据交换,因此8088的某些引脚信号与8086有所不同。不同的引脚包括:8088的地址/数据复用线为8条,即AD7AD0,而A15A8为单一的地址线;8088中无BHE#信号,引脚34为状态信号线SS0#。8086与8088的28号引脚在最小模式下都是用来选择存储器或I/O的,但二者选择电平相反。8088的存储器/IO控制线为 IO/M#,即该信号为高电平时是I/O端口访问;为低电平时是存储器访问。这与8086的信号刚好相反。,4.6 8086/

28、8088最小工作模式及其系统结构,4.6.1 8284A时钟发生器4.6.2 总线分离与缓冲4.6.3 最小工作模式下控制核心单元的组成,4.6.1 8284A时钟发生器,8086/8088 系统采用 Intel 8284A 作为时钟发生器。8284A 将晶体振荡器的振荡频率分频后,向 8086/8088 系统提供符合要求的时钟脉冲 CLK、PCLK 和 OSC 信号;同时为复位信号 RESET 和准备好信号 READY 进行同步。,一、8284A的引脚及其功能,8284A为18引脚双列直插式封装。主要引脚及其功能如下:OSC:晶振输出端。CLK:系统时钟信号输出端。PCLK:外设时钟信号输出

29、端。RES#:复位输入端。RESET:复位信号输出端。READY:准备好信号输出端。RDY1、RDY2:准备好信号输入端。AEN1#、AEN2#:对应RDY1、RDY2的允许控制信号输入端。Vcc:电源输入端。GND:接端地。,二、8284A的功能结构,8284A内部电路分为三大模块:时钟信号产生电路。RESET信号产生电路。READY信号产生电路。,三、时钟信号产生电路,在IBM PC/XT机中,8284A外接石英晶体振荡器的振荡频率fc为14.31818MHz,因此OSC、CLK和PCLK信号的频率分别为14.31818MHz、4.77MHz和2.385MHz。,四、RESET信号产生电路

30、,通过加电与按键复位电路产生的RES#信号经过8284同步后输出符合系统要求的RESET信号。,4.6.2总线分离与缓冲,8086/8088CPU 的地址总线和数据总线分时复用,然而IBM PC/XT机系统总线的地址总线和数据总线不是分时复用的,因此需要解决这一问题。利用 8 位锁存驱动器 Intel 8282 和 8 位双向数据收发器 Intel 8286 可以实现总线分离,并提高总线的负载能力。,一、系统地址总线的产生,锁存器实现系统地址总线,8086CPU最小工作模式下系统地址总线的形成,二、系统数据总线的产生,数据收发器形成数据总线,8086CPU 最小工作模式下数据地址总线的形成,4

31、.6.3最小工作模式下控制核心单元的组成,4.7 8086/8088 最大工作模式及其系统结构,4.7.1总线控制器 82884.7.2最大工作模式下控制核心单元的组成,4.7.1 总线控制器 8288,在最小工作模式下,总线控制信号由CPU本身产生,在最大工作模式下总线控制信号由总线控制器8288产生。8288根据CPU在执行指令时提供的状态信号,产生满足定时关系的存储器和I/O的读写信号及地址锁存和数据收发控制信号。,4.7.2最大工作模式下控制核心单元的组成,4.8 8086/8088 总线时序,4.8.1 时钟周期、总线周期和指令周期4.8.2 存储器与 I/O 的读操作总线时序4.8

32、.3 存储器与 I/O 的写操作总线时序,4.8.1时钟周期、总线周期和指令周期,8086/8088 CPU 采用同步控制方式,因此必须具有基准时钟信号,该信号的周期称为时钟周期。时钟周期是CPU的基本时间计量单位,它由计算机主频决定,例如8086主频为5MHz,则时钟周期为200ns。CPU执行一个总线(读/写)操作所需要的时间称为总线周期。或者说,总线周期是CPU从存储器或I/O端口存取一个字节(或一个字)所需要的时间。按照数据传输方向来分,总线操作可以分为总线读操作和总线写操作。总线读操作是指CPU从存储器或I/O端口读取数据;总线写操作是指CPU将数据写入存储器或I/O端口。8086/

33、8088CPU的一个基本的总线周期由4个时钟周期组成。CPU执行一条指令所需要的时间称为指令周期。8086/8088 CPU 完成一条指令需要一个或若干个总线周期。,4.8.2存储器与I/O的读操作总线时序,4.8.3存储器与I/O的写操作总线时序,4.9 INTEL80286 到 Pentium CPU,4.9.1 802864.9.2 803864.9.3 804864.9.4 Pentium(奔腾),图4.3 标志寄存器,图4.5 8086/8088物理地址的产生,4.6.3最小工作模式下控制核心单元的组成,4.8.2存储器与I/O的读操作总线时序,4.8.3存储器与I/O的写操作总线时序,作业,P69 1、5、6、7、9、19、20,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号