收藏 分享(赏)

微机原理第2章(1).ppt

上传人:jinchen 文档编号:5377966 上传时间:2019-02-25 格式:PPT 页数:86 大小:1.14MB
下载 相关 举报
微机原理第2章(1).ppt_第1页
第1页 / 共86页
微机原理第2章(1).ppt_第2页
第2页 / 共86页
微机原理第2章(1).ppt_第3页
第3页 / 共86页
微机原理第2章(1).ppt_第4页
第4页 / 共86页
微机原理第2章(1).ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

1、第二章8086微处理器,8086 CPU概述8086 CPU内部结构8086存储器组织8086输入/输出组织8086堆栈8086 CPU引脚及功能8086最大/最小工作模式8086总线时序,2.1 8086/8088概述,高性能的第三代微处理器,8086 封装在标准40条引脚双列直插式管壳内(DIP),内含29000个晶体,有16位数据线和20条地址线。 工作频率:8086为5M HZ , 8086-2为8M HZ , 8086-1为10M HZ 8088CPU与8086异同:准16位微处理器,其内部寄存器、内部运算器以及内部操作都与8086基本相同,不同之处是外部的区别,8088外部数据总线

2、为8位。 推出8088原因:兼容已有的一整套intel外围设备接口芯片。,分析直接寻址的范围,可访问的输入/输出接口地址范围,1M 64K,一、8086CPU的内部结构组成8086CPU由两部分组成:指令执行部件(EU,Execution Unit)总线接口部件(BIU,Bus Interface Unit),2.2、 8086CPU的内部结构,8086CPU的内部结构,执行部件(EU)主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。,总线接口部件(BIU)主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主

3、要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或IO端口读取操作数参加EU运算或存放运算结果等。,EU和BIU的操作原则,l BIU中的指令队列有2个或2个以上字节为空时,BIU自动启动总线周期,取指填充指令队列。直至队列满,进入空闲状态。 l EU每执行完一条指令,从指令队列队首取指。系统初始化后,指令队列为空,EU等待BIU从内存取指,填充指令队列。 l EU取得指令,译码并执行指令。若指令需要取操作数或存操作结果,需访问存储器或I/O,EU向BIU发出访问总线请求。,l 当BIU接到EU的总线请求,若正忙(正在执行取指总线周期),则必须等待BIU

4、执行完当前的总线周期,方能响应EU请求;若BIU空闲,则立即执行EU申请总线的请求。 l EU执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列被自动清除,BIU根据本条指令执行情况重新取指和填充指令队列。 l 空闲状态,8086CPU与一般CPU区别,一般CPU工作方式8086CPU工作方式,取指,执指,取指,执指,取指,执指,取指,执指,取指,执指,取指,执指,通用寄存器专用寄存器段寄存器 标志寄存器FR 指令指针寄存器IP,二、 8086CPU的寄存器结构,指令执行部件(EU)设有 4个通用寄存器:AX BX CX DX 4个专用寄存器:SP BP SI DI,BH BL,C

5、H CL,DH DL,AH AL,AX BX CX DX SI DI BP SP,通用寄存器 AX(Accumulator Register)累加器一般用来存放参加运算的数据和结果,在乘、除法运算、I/O操作、BCD数运算中有不可替代的作用。 BX(Base Register)基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址,而AX,CX,DX则不能。,CX(Counter)将它称作计数寄存器,是因为它既可作数据寄存器,又可在串指令和移位指令中作计数用。 DX(Data Register)DX除可作通用数据寄存器外,还在乘、除法运算、带符号数的扩展指令中有特殊用途。,专用寄存器 SI(S

6、ource Index)源变址寄存器多用于存放源操作数存储单元的逻辑偏移地址,隐含的逻辑段地址在DS寄存器中,也可放数据。 DI(Destination Index)目标变址寄存器多用于存放目的操作数存储单元的逻辑偏移地址,隐含的逻辑段地址在DS寄存器中也可放数据。,BP(Base Pointer)基址指针用于存放内存的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。 SP(Stack Pointer )堆栈指针用于存放栈顶的逻辑偏移地址,隐含的逻辑段地址在SS寄存器中。,寄存器的特殊用途和隐含性质在指令中没有明显的标出,而这些寄存器参加操作,称之为“隐含寻址”。具体的:在某类指令中,某些通用寄

7、存器有指定的特殊用法,编程时需遵循这些规定,将某些特殊数据放在特定的寄存器中,这样才能正确的执行这些指令。采用“隐含”的方式,能有效地缩短指令代码的长度。,2、段寄存器 总线接口部件BIU设有4个16位段寄存器 CS(Code Segment),代码段寄存器中存放程序代码段起始地址的高16位。 DS(Data Segment),数据段寄存器中存放数据段起始地址的高16位。 SS(Stack Segment),堆栈段寄存器中存放堆栈段起始地址的高16位。 ES(Extended Segment),扩展段寄存器中存放扩展数据段起始地址的高16位。,3、标志寄存器FR,标志寄存器FR中共有9个标志位

8、,可分成两类: 状态标志 表示运算结果的特征,它们是CF、PF、AF、ZF、SF和OF 控制标志 控制CPU的操作,它们是IF、DF和TF。,标志寄存器FR,FR中的状态标志,CF(Carry Flag):进位标志位CFl,表示本次运算中最高位(D15或D7)有进位(加法运算时)或有借位(减法运算时)。CF标志可通过STC指令置位,通过CLC指令复位(清除进位标志),还可通过CMC指令将当前CF标志取反。 PF(Parity Flag):奇偶校验标志位PF1,表示本次运算结果中有偶数个“l”,PF0,表示本次运算结果中有奇数个“1”。,AF(Auxiliary Carry Flag):辅助进位

9、标志位。AFl,表示运算结果的8位数据中,低4位向高4位有进位(加法运算时)或有借位(减法运算时),这个标志位只在十进制运算中有用。 ZF(Zero Flag):零标志位ZF1,表示本次运算结果为零,否则即运算结果非零时,ZF0。,SF(Sign Flag):符号标志SF1,表示本次运算结果的最高位(第7位或第15位)为“l”,否则SF0。 OF(Overflow F1ag):溢出标志,FR寄存器的控制标志,IF(Interrupt Flag):中断标志位IF1,表示允许CPU响应可屏蔽中断。IF标志可通过STI指令置位,也可通过CLI指令复位。 DF(Direction Flag):方向标志

10、位在串操作指令中,若DF0,表示串操作指令地址指针自动增量;DF1,表示地址指针自动减量。DF标志位可通过STD指令置位,也可通过CLD指令复位。 TF(Trap Flag):单步标志位,4、指令指针寄存器 IPIP :BIU要取指令的地址。,两个存储体采用字节交叉编制方式,2.4、 8086存储器组织,8086/8088系统有20根地址总线,它可以直接寻址的存储器单元数为220=1Mb 而微处理器中所有的寄存器都是16位的 如何实现16位的存储单元存放20位的地址空间? 存储器分段由于CPU内部的寄存器都是16位的,为了能够提供20位的物理地址,系统中采用了存储器分段的方法。规定存储器的一个

11、段为64KB,由段寄存器来确定存储单元的段地址,由指令提供该单元相对于相应段起始地址的16位偏移量。这样,系统的整个存储空间可分为16个互不重叠的逻辑段。存储器的每个段的容量为64KB,并允许在整个存储空间内浮动,即段与段之间可以部分重叠、完全重叠、连续排列,非常灵活。,与存储单元地址相关的几个概念 物理地址:一个存储单元的实际地址(20位)。物理地址与存储单元是一一对应关系。(20202H) 逻辑地址:是指段地址和偏移地址,是指令中引用的形式地址。一个逻辑地址只能对应一个物理地址,而一个物理地址可以对应多个逻辑地址。(2000:0202H) 段地址:是指一个段的起始地址,最低4位为零,一般将

12、其有效数字16位存放在段寄存器中。(2000H) 偏移地址:段内存储单元相对段地址的距离(16位)。同一个段内,各个存储单元的段地址是相同的,偏移地址是不同的。(0202H) 物理地址的计算方法 物理地址=段地址+偏移地址=段寄存器内容10H+偏移地址 取指令物理地址=(CS)10H+(IP) 堆栈操作物理地址=(SS)10H+(SP)/(BP的表达式) 存储器操作数物理地址=(DS)/(ES)10H+偏移地址,物理地址的计算方法,存储器分段的特点 (1)在程序代码量、数据量不是太大的情况下,可使它们处于同一段内,即使它们在64Kb的范围内,这样可以减少指令长度,提高指令运行速度; (2)内存

13、分段为程序的浮动分配创造了条件; (3)物理地址与逻辑地址并不是一一对应的; 2000:0202H=2010:0102H=20202H (4)各个分段之间可以重叠。 特殊的内存区域8088/8086系统中,有些内存区域的作用是固定的,用户不能随便使用,如: 中断矢量区:00000H003FFH共1K字节,用以存放256种中断类型的中断矢量,每个中断矢量占用4个字节,共2564=1024=1K; 显示缓冲区:B0000HB0F9FH约4000(25802)字节,是单色显示器 的显示缓冲区,存放文本方式下,所显示字符的ASCII码及属性码;B8000HBBF3FH约16K字节,是彩色显示器的显示缓

14、冲区,存放图形方式下,屏幕显示象素的代码。 启动区:FFFF0HFFFFFH共16个单元,用以存放一条无条件转移指令的代码,转移到系统的初始化部分。,CS、DS、SS和其他寄存器组合指向存储单元的示意图,8086存储体的结构8086将1M字节存储体分为两个库,每个库的容量都是512K字节。其中与数据总线D15D8相连的库全由奇地址单元组成,称高字节库或奇地址库, 并用BHE信号作为库选信号;另一个库与数据总线的D7D0相连,由偶地址单元组成,称低字节库或偶低址库,利用A0作为库选信号。显然,只需A19A1共19位地址用来作为两个库内的单元寻址。,8086存储体的结构在组成存储系统时,总是使偶地

15、址单元的数据通过AD0AD7传送,而奇地址单元的数据通过AD8AD15传送,显然,并不是所有总线周期都存取总线高字节,只有存取规则字,或奇地址的字节,或不规则字的低八位,才进行总线高字节传送。,2.2 8086系统的储存器组织,一、8086存储器结构8086系统中的存储器是一个最多1M个8位数量的字节序列,即可寻址的存储空间为1M字节,系统为每个字节分配一个20位的物理地址(对应16进制的地址范围从00000HFFFFFH)。,00000H,00001H,0000FH,FFFFFH,(一)、数据在内存的位置 字节、字、双字及其地址 (二)、8086CPU对字/字节的读操作 16位读 从偶地址读

16、,二、8086存储器的分体结构8086系统中,存储器是分体结构,1M字节的存储空间分成两个512K字节的存储体。一个是偶数地址存储体,一个是奇数地址存储体,两个存储体采用字节交叉编址方式,D0D7,D8D15,00000H,00002H,00004H,FFFFEH,00001H,00003H,00004H,FFFFFH,三、存储器的分段 为什么分段 8086存储器分4个段 段基地址与段寄存器 偏移地址的产生 逻辑地址、物理地址,段基地址和偏移地址组成了逻辑地址格式为:段基地址:偏移地址,60002H,00H,12H,60000H,0 0 0 0,段基地址(16位),段首地址, , ,物理地址=

17、段基地址16+偏移地址,物理地址的形成,8086分段的好处 1、解决了16位地址寄存器对20位物理地址的寻址问题 2、实现了程序代码的浮动装配 8086复位后程序运行的起始地址,段寄存器使用约定,四、堆栈段的使用 所谓堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据,其工作方式是“先进后出”或“后进先出”的方式。8086系统中的堆栈段是由段定义语句在存储器中定义的一个段,堆栈段容量小于等于64K字节。段基址由堆栈寄存器SS指定,栈顶由堆栈指针SP指定,堆栈地址由高向低增长,栈底设在存储器的高地址区。8086堆栈是递减型的“满”堆栈。,三、8086CPU的管脚及功能8086是16位CPU

18、。它采用高性能的N沟道,耗尽型负载的硅栅工艺(HMOS)制造。由于受当时制造工艺的限制,部分管脚采用了分时复用的方式,构成了40条管脚的双列直插式封装,1、 8086的两种工作方式最小模式:系统中只有8086一个处理器,所有的控制信号都 是由8086CPU产生(MN/MX=1)。 最大模式:系统中可包含一个以上的处理器,比如包含协处理器8087。在系统规模比较大的情况下,系统控制信号不是由8086直接产生,而是通过与8086配套的总线控制器等形成(MN/MX=0)。,最小模式下的引脚说明 (1) AD15AD0 (Address Data Bus):地址/数据复用信号,双向,三态。在T1状态(

19、地址周期)AD15AD0上为地址信号的低16位A15A0;在T2 T3状态(数据周期)AD15AD0 上是数据信号D15D0。,三总线结构 数据线DB 地址线AB 控制线CD,(2) A19/S6A16/S3 (Address/Status):地址/状态复用信号,输出。在总周期的T1状态A19/S6A16/S3上是地址的高4位。在T2T4状态,A19/S6A16/S3上输出状态信息。,(3)BHE# /S7 (Bus High Enable/Status):数据总线高8位使能和状态复用信号,输出。在总线周期T1状态,BHE#有效,表示数据线上高8位数据有效。在T2T4状态BHE # /S7 输

20、出状态信息S7。S7在8086中未定义。,(4)INTR( Interrupt Request) 中断请求信号,由外部输入,电平触发,高电平有效。INTR有效时,表示外部设备向CPU发出中断请求,CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到有中断请求,并且当中断允许标志IF1时,则暂停执行下条指令转入中断响应周期。,(5) NMI( NonMaskable Interrupt Request)不可屏蔽中断请求信号。由外部输入,边沿触发,正跳沿有效。CPU一旦测试到NMI请求信号,待当前指令执行完就自动从中断入口地址表中找到类型2中断服务程序的入口地址,并转去执行。(6) R

21、D# (Read) 读信号, 三态输出,低电平有效,表示当前CPU正在读存储器或IO端口。,(7) WR# (Write) 写信号,三态输出,低电平有效,表示当前CPU正在写存储器或IO端口。 (8)READY 准备就绪信号。由外部输入,高电平有效,表示CPU访问的存储器或IO端口己准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期Tw,直到READY信号有效为止。,(9)TEST# 测试信号。由外部输入,低电平有效。当CPU执行WAIT指令时(WAIT指令是用来使处理器与外部硬件同步),每隔5个时钟周期对TEST进行一次测试,若测试到该信号无效,则CPU继续执行WAIT指令

22、,即处于空闲等待状态;当CPU测到TEST输入为低电平时,则转而执行WAIT的下一条指令。由此可见,TEST对WAIT指令起到了监视的作用。,(10)RESET 复位信号。由外部输入,高电平有效。RESET信号至少要保持4个时钟周期,CPU接收到该信号后,停止进行操作,并对标志寄存器(FR)、IP、DS、SS、ES及指令队列清零,而将CS设置为FFFFH。当复位信号变为低电平时,CPU从FFFF0H开始执行程序,由此可见,采用8086CPU计算机系统的启动程序就保持在开始的存储器中。,(11)MIO# (MemoryIO ) 存储器或IO端口访问信号。三态输出,MIO#为高电平时,表示当前CP

23、U正在访问存储器,MIO# 为低电平时,表示当前CPU正在访问IO端口。 (12)INTA# (Interrupt Acknowledge) 中断响应信号。向外部输出,低电平有效,表示CPU响应了外部发来的INTR信号。,(13)ALE(Address Latch Enable)地址锁存使能信号,输出,高电平有效。用来作为地址锁存器的锁存控制信号。 (14)DEN# (Data Enable)数据使能信号,输出,三态,低电平有效。用于数据总线驱动器的控制信号。,(15) DT/R#(Data Transmit/Receive):数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用

24、8286或8287作为数据总线的驱动器,用DT/R#信号来控制数据驱动器的数据传送方向。当DT/R#1时,进行数据发送;DT/R#0时,进行数据接收。,(16)HOLD(Hold Request) 总线请求信号。由外部输入,高电平有效器向CPU请求使用总线。 (17)HLDA(Hold Acknowledge) 共享总线的处理总线请求响应信号。向外部输出,高电平有效。,(18)MN/MX(Minimum/Maximum Mode Control):最大最小模式控制信号,输入。MN/MX1(5V),CPU工作在最小模式。MN/MX0(接地), CPU则工作在最大模式。 (19) GND 地。 (

25、20) VCC 电源,接5V。,最大模式下的引脚说明当8086CPU工作在最大模式系统时,有8个管脚重新定义 。(1)S2#、S1#、S0#(Bus Cycle Status,最小模式为M/IO#、DT/R#、DEN#):总线周期状态信号,输出。这三个信号的组合表示当前总线周期的类型。在最大模式下,由这三个信号输入给总线控制器8288,用来产生存储器、I/O的读写等相关控制信号。如下表:,(2)LOCK# 封锁信号。三态输出,低电平有效。LOCK有效时表示CPU不允许其它总线主控者占用总线。这个信号由软件设置。当在指令前加上LOCK前缀时,则在执行这条指令期间LOCK保持有效,即在此指令执行期

26、间,CPU封锁其它主控者使用总线。(3)QS1、QS0(Instruction Queue Status,最小模式为ALE、INTA#):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,以便从外部对芯片的测试。,(4)RQ#/GT0# ,RQ#/GT1# (RequestGrant)总线请求信号请求同意信号。双向,低电平有效,当该信号为输入时表示其它主控者向CPU请求使用总线;当为输出时表示CPU对总线请求的响应信号。两条线可同时与两个主控者相连,同时,RQ#/GT0#优先级高于RQ#/GT1#。,(5)QS1、QS0(Instruction Queue St

27、atus):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,以便从外部对芯片的测试。,8086/8088微处理器最小模式和最大模式,为了尽可能适应各种各样的使用场合,在设计8086 CPU芯片时, 使它们可以在两种模式下工作,即最小模式和最大模式。 最小模式所谓最小模式,就是系统中只有一个8086/8088微处理器,在这种情况下,所有的总线控制信号,都是直接由CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于小规模的微机应用系统。 MN/MX端接+5V,决定了工作模式; 有一片8284A,作为时钟信号发生器; 有三片8282或74LS273,用来作

28、为地址信号的锁存器; 当系统中所连的存储器和外设端口较多时,需要增加数据总线的驱动能力,这时,需用2片8286/8287作为数据总线收发器。,最大模式所谓最大模式,是指系统中至少包含两个微处理器,其中一个为主处理器,即8086/8086CPU,其它的微处理器称之为协处理器,它们是协助主处理器工作的。 该模式适用于大中型规模的微机应用系统。 最小模式所拥有的配置; 有一片8288总线控制器来对CPU发出的控制信号进行变换和组合,以得到对存储器或I/O 端口的读/写信号和对锁存器8282及数据总线收发器8286的控制信号。 有8259A(可选)用以对多个中断源进行中断优先级的管理,但如果中断源不多

29、,也可以不用中断优先级管理部件。,最大模式与8086/8088CPU配合工作的协处理器有两类,一类是数值协处理器8087另一类是输入/输出协处理器8089。8087是一种专用于数值运算的协处理器,它能实现多种类型的数值运算,如高精度的整型和浮点型数值运算,超越函数(三角函数、对数函数)的计算等,这些运算若用软件的方法来实现,将耗费大量的机器时间。换句话说,引入了8087协处理器,就是把软件功能硬件化,可以大大提高主处理器的运行速度。8089协处理器,在原理上有点象带有两个DMA通道的处理器,它有一套专门用于输入/输出操作的指令系统,但是8089又和DMA控制器不同,它可以直接为输入/输出设备服

30、务,使主处理器不再承担这类工作。所以,在系统中增加8089协处理器之后,会明显提高主处理器的效率,尤其是在输入/输出操作比较频繁的系统中。,2.8 8086的操作和总线时序,什么是时序?时序是计算机操作运行的时间顺序。 为什么要研究时序? 进一步了解在微机系统的工作过程中,CPU各引脚上信号之间的相对时间关系; 深入了解指令的执行过程; 在程序设计时,选择合适的指令或指令序列,以尽量缩短程序代码的长度及程序的运行时间; 对于学习各功能部件与系统总线的连接及硬件系统的调试,都十分有意义,因为CPU与存储器、I/O端口协调工作时,存在一个时序上的配合问题; 更好地处理微机用于过程控制及解决实时控制

31、的题。,几个基本概念 指令周期:一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。 总线周期:是指CPU与存储器或外设进行一次数据传送所需要的时间。 时钟周期:又称为T状态,是一个时钟脉冲的重复周期,是CPU处理动作的基本时间单位。它是由主频来确定,如8086的主频为5MHz,则一个时钟周期为200ns。 等待周期:是在一个总线周期的T3和T4之间,CPU根据Ready信号来确定是否插入TW,插入几个TW。 空闲周期:是指在二个总线周期之间的时间间隔(总线处在空闲状态)。若为3个时钟周期,则空闲周期为3个Ti。时钟周期(T)作为基本时间单位,一个等

32、待周期TW=T;一个空闲周期Ti=T;一个总线周期通常由四个T组成,分别称为T1T2 T3 T4 ;一个指令周期由一到几个总线周期组成。,典型的8086/8088总线周期序列T1状态,发地址信息; T2状态,总线的高4位输出状态信息; T3状态,高4位状态信息,低16位数据信息; T3之后,可能插入TW; 在T4状态,结束。,8086/8088微机系统的主要操作 系统的复位与启动操作; 暂停操作; 总线操作;(I/O读、I/O写、存贮器读、存贮器写) 中断操作; 最小模式下的总线保持; 最大模式下的总线请求/允许。,在下降沿将地址锁存在8282,有效,地址指向内存单元,CPU接收8286发送的

33、数据,典型的总线时序图最小模式下的写周期时序,典型的总线时序图最小模式下的写周期时序,典型的总线时序图最大模式下的读周期时序,典型的总线时序图最大模式下的写周期时序,典型的总线时序图中断响应周期时序,典型的总线时序图系统复位时序RESET是外部引入CPU的信号,高电平有效,脉冲宽度不低于4个时钟周期。每当RESET有效时,CPU便结束当前的操作,使系统回到初始状态,即: (a)使所有的三态输出线被置成高阻状态,输出控制信号失效; (b)除CS=FFFFH外,指令队列和其他所有的寄存器被清零; (c)CPU从FFFF0H单元读取指令,执行操作; (d)对系统进行测试,引入DOS。,典型的总线时序

34、图最小模式下的总线保持,利用HOLD和HLDA信号实现总线保持,典型的总线时序图最大模式下的总线请求/允许,8086/8088微处理器本章要点,8086/8088微处理器的结构。 8086/8088微处理器的结构特点,要求达到“识记”层次。 8086/8088微处理器的寄存器结构,要求达到“领会”层次。 8086/8088系统中的存储器分段与物理地址的形成,要求达到“领会”层次。 8086/8088微处理器的引脚功能和相关知识,要求达到“综合应用”层次。 8086/8088总线分时复用的特点。 8086/8088常用控制信号的功能,这些控制信号的应用。 8086/8088存储器的组织结构,段地址偏移地址等概念的综合应用。 8086/8088两种工作方式最小方式与最大方式的区别。 8086/8088微处理器的总线时序,要求达到“领会”层次。 三种周期指令周期、总线周期和时钟周期的区别及联系。 8086/8088几种主要的总线周期时序图,有关信号的时序关系。,

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

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报