【大学课件】指令系统.ppt

上传人:本田雅阁 文档编号:3023957 上传时间:2019-06-27 格式:PPT 页数:71 大小:686.51KB
返回 下载 相关 举报
【大学课件】指令系统.ppt_第1页
第1页 / 共71页
【大学课件】指令系统.ppt_第2页
第2页 / 共71页
【大学课件】指令系统.ppt_第3页
第3页 / 共71页
【大学课件】指令系统.ppt_第4页
第4页 / 共71页
【大学课件】指令系统.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《【大学课件】指令系统.ppt》由会员分享,可在线阅读,更多相关《【大学课件】指令系统.ppt(71页珍藏版)》请在三一文库上搜索。

1、第5章 指令系统,5.1 指令系统的发展 5.2 指令格式 5.3 数据表示 5.4寻址方式(编址方式) 5.5 指令类型 5.6 指令系统的兼容性(略) 5.7 RISC和CISC(略) 5.8 指令系统举例(略) 5.9 机器语言、汇编语言和高级语言(略),http:/ 1. 了解指令格式、数据表示。 2. 掌握不同寻址方式(编址方式)中部件之间的动作关系,可能的时间分配。 3. 了解指令类型、指令系统的兼容性和精简指令系统计算机(RISC)、复杂指令系统计算机(CISC)的有关概念、特性等。,http:/ 2、指令格式 3、寻址方式,http:/ 指令系统的发展,计算机系统: 硬件(ha

2、rdware)+软件(software) 硬件: 中央处理机(CPU)、存储器、外部设备 软件: 程序 (最终转换成一系列机器指令后在计算机上执 行),指令系统的定义:一台计算机能直接识别并执行的机器指 令的集合。 指令系统的作用:指令系统是硬件设计的任务书,是软件设 计的基础,与计算机的性能有密切关系。,http:/ 20世纪50年代和60年代早期: 指令系统一般只有定点加减、逻辑运算、数据传送和转移等十几至几十条最基本的指令,而且寻址方式简单。 2.到60年代中、后期: 除了具有以上最基本的指令以外,还设置了乘除法运算指令、浮点运算指令、十进制运算指令以及字符串处理指令等,指令数多达一、二

3、百条,寻址方式也趋于多样化。 3. 60年代出现了系列(series)计算机。 原因:为了继承已有的软件,减少软件的开发费用. 系列计算机:是指基本指令系统相同,基本体系结构相同的一系列计算机。 如IBM370系列,VAX11系列,IBMPC(XTAT286386486Pentium)微机系列等。 优点:在旧机种上运行各种软件可以不加任何修改地在新机种上运行。(向下兼容),http:/ 指令系统的改进是围绕着缩小指令与高级语言的语义差异以及有利于操作系统的优化而进行的。 CISC(复杂指令系统计算机)的问题: (1)设计周期长,正确性难以保证且不易维护等; (2) 需要大量硬件支持的大多数较复

4、杂的指令却利用率很低,造成硬件资源的极大浪费。 为了解决这个问题,在70年代末人们提出了便于VLSI实现的精简指令系统计算机,简称RISC(精简指令系统计算机)。 CISC:Complex instruction set computer RISC: reduced instruction set computer,http:/ 指令格式,计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。 设计指令格式的要求: (1)使指令能给出足够的信息 (2)其长度又尽可能地与机器的字长相匹配,以便节省存储空间,缩短取指时间,提高机器的性能。,http:/ 指令格式,一条指令就是要机器

5、语言的一个语句,它是一组有意义的二进制代码,通常提供两方面的信息:一是指明操作的性质及功能,这一部分称为操作码。二是给出与操作数有关的信息,如:直接给出操作数本身或指明操作数的地址等。因为大多数情况下,指令中给出的是操作数的地址,因此,这一部分称为地址码。 指令的基本格式为:,操作码字段 地址码字段,http:/ .地址码结构 计算机执行一条指令所需要的全部信息都必须包含在指令中,对于一般的指令来说,除去操作码(OP)之外,指令还应包含以下信息: (1)第一操作数地址,用A1表示 (2)第二操作数地址,用A2表示 (3)操作结果存放地址,用A3表示 (4)下条将要执行指令的地址,用A4表示 这

6、些信息可以在指令中明显给出,称为显地址,也可依照某种事先的约定,用隐含方式给出,称为隐地址。 下面介绍几种指令格式。,http:/ 格式: 含义: (A1)OP(A2)A3 (A4)=下一条将要执行指令的地址 说明: (Ai)表示存放在一地址Ai中的内容 优点:直观,下条指令的地址明显,不适合转移指令 缺点:指令太长,因为直接给出了后继指令地址,程序不能根据操作结果灵活转移,这种格式不切实际。,http:/ 为了压缩指令的长度,要以用一个程序计数器PC(program counter)来存放指令地址。每执行一条指令,PC就自动加1(该指令只占一个主存单元),指出将要执行的下一条指令,当遇到执行

7、转移指令时,则用转移地址修改PC的内容,这样,指令中就不必给出A4了。 格式: 含义: (A1)OP (A2)A3 (PC)+1 PC(隐含) 特点: 指令仍然很长,只在字长较长的大、中型机中使用,而小型、微型机中很少使用。,OP,A1,A2,A3,http:/ 要完全保留两个操作数。例:把第一操作数地址同时兼作存放结果的地址,这样即可得到二地址指令。 格式: 含义: (A1)OP (A2)A1 (PC)+1 PC(隐含) A1:目的操作数地址 A2:源操作数地址 特点:二地址指令在计算机中得到广泛的应用,但要注意:指令执行之后,目的操作数地址中原存的内容已被破坏了。 例: MOV AL,BL

8、,OP A1 A2,http:/ (2)功能: 1)单操作数运算 A1既是操作数的地址,又是结果存放的地址。 例:+1、-1、求反等 含义: OP(A1)A1 (PC)+1 PC(隐含) 例:INC AL DEC CL 2)双操作数 约定:隐含的一个操作数放在一个专用寄存中(AC-累加器) 含义: (AC)OP(A1)(AC) (PC)+1 PC(隐含) 例: MUL BL (AL)*(BL) (AX),OP A1,http:/ 零地址指令,格式: 无操作数:如空操作NOP、停机指令HLT 默认操作数:如读取标志指令LAHF,将标志寄存器FLAG的低8位送到AH寄存器中。,OP,http:/

9、零地址、一地址和两地址指令具有指令短,执行速度快,硬件实现简单等特点,多为结构较简单,字长较短的小型、微型机所采用; 而两地址、三地址和多地址指令具有功能强,便于编程等特点,多为字长较长的大、中型机所采用。,指令和数据的联系和区别: 联系:都是以二进制码的形式存储的。 区别: 指令的地址是由程序计数器(PC)规定的,而数据的地址是由指令规定的。在程序执行过程中,要避免修改指令,但可以修改数据。,http:/ 定长指令:便于控制 变长指令:合理利用存储空间 二.操作码格式 指令系统中的每一条指令都有一个唯一确定的操作码,指令不同,其操作码的编码也不同。为了能表示整个指令系统的全部指令,指令的操作

10、码字段应当具有足够的位数。 假定:指令系统有m条指令,指令的操作码字段的位数有N位,则m2N,即 Nlog2m. 我们希望用尽可能短的操作码字段来表达全部的指令。 指令操作码的编码可以分为以下两种形式。,5.2.2 指令操作码的扩展技术,http:/ 定长操作码 各指令的操作码的位置、位数固定相同(即操作码的长度固定,且集中放在指令字的一个字段中)。 特点:这种格式对于简化硬件设计,减少指令译码时间非常有利,在字长较长的大、中型机和超级小型机以及RISC上广泛采用。,2.扩展操作码(变长) 各指令操作码的位置、位数不固定,根据需要变化(即操作码的长度可变,且分散得放在指令字的不同字段中) 。

11、特点:这种格式能够有效地压缩程序中操作码的平均长 度,在字长较短的微型机上广泛采用。 如Z80、 Intel8086Pentium等,操作码的长度都是可变的。,http:/ 指令字长16位,可含有3、2、1或0个地址,每个地址占4位。(见教材P130131),操作码 地址码,15 12 11 8 7 4 3 0,0000 X Y Z 1110 X Y Z,1111 0000 Y Z 1111 1110 Y Z,三地址指令 15条,二地址指令 15条,1111 1111 0000 Z 1111 1111 1110 Z,一地址指令 15条,1111 1111 1111 0000 1111 1111

12、 1111 1111,零地址指令 16条,可表示61条指令,http:/ (方法二)指令字长16位,可含有3、2、1或0个地址,每个地址占4位。(见教材P130131),操作码 地址码,15 12 11 8 7 4 3 0,0000 X Y Z 1110 X Y Z,1111 0000 Y Z 1111 1101 Y Z,三地址指令 15条,二地址指令 14条,1111 1110 0000 Z 1111 1111 1110 Z,一地址指令 31条,1111 1111 1111 0000 1111 1111 1111 1111,零地址指令 16条,可表示76条指令,http:/ 就是使用频度(即

13、指令在程序中的出现概率)高的指令应分配短的操作码;使用频度低的指令相应地分配较长的操作码。(霍夫曼编码法) 作用:有效地缩短操作码在程序中的平均长度,节省存储器空间,缩短了经常使用的指令的译码时间,因而可以提高程序的运行速度。,http:/ 指令长度与字长的关系,字长:指计算机能直接处理的二进制数据的位数,它是计算机的一个重要技术指标。 作用:字长决定了计算机的运算精度,字长越长,计算机的运算精度越高。,一般机器的字长都是字节长度(即8位)的l,2,4或8倍数,也就是8,16,32或64位。如80年代微型机的字长多为8位,16位和32位,大中型机的字长多为32位和64位,因此,一个字中可以存储

14、1,2,4或8个字符。随着集成度的提高,机器字长也在增长,16位微机已趋于淘汰。,http:/ 指令的长度通常为字节的整数倍。,地址码长度决定了指令直接寻址能力。 这对于字长较短(8位或16位)的微型机来说,远远满足不了实际需求。 扩大寻址能力的方法: 1)增加机器字长来增加地址码的长度; 2)采用地址扩展技术,把存储空间分成若干段,用基址加位移量的方法来增加地址码的长度。,http:/ 在同一台计算机中可能既有短格式指令又有长格式指令,但通常是把最常用的指令(如算术逻辑运算指令、数据传送指令)设计成短格式指令,以便节省存储空间和提高指令的执行速度。,http:/ 数据表示,1.操作数的类型

15、逻辑(布尔)数、定点数(整数)、浮点数(实数)、十进制数、字符串、数组等 2.操作数的存储方式 一个数据的位数1字节或1个字的宽度,这个数据就需要存储在相邻的多个字节的位置上。按照高位数据和低位数据在存储器中的存储次序,可分为大数端(big endian)和小数端(little endian)两种存储方式。 将最低字节存储在最小地址位置的存储方式称为小数端方式。 将最低字节存储在最大地址位置的存储方式称为大数端方式。 许多新型计算机系统结构都同时支持大数端和小数端数据存储方式。,http:/ 在32位数据类型中存储为000F4240H。,(1)小数端存放,40 42 0F 00,0 1 2 3

16、,存储器地址编号,(2)大数端存放,00 0F 42 40,0 1 2 3,http:/ 为便于硬件实现,一般要求多字节数据对准边界,如P132图52(a)所示。当所存数据不能满足此要求时,则填充一个至多个空白字节。 也有的计算机不要求对准边界,但可能增加访问存储器次数,而且还有可能要对高低字节的位置进行调整。,http:/ 例:一个32位的字 在按字对齐方式下,它的地址应当是4的倍数,即其地址的二进制码的最低两位为00,这样它占据的存储器位置是地址为:4n、4n+1、4n+2、4n+3(n为自然数)。在32位宽的存储中,这个字可以一次读取或写入。,在不按字对齐方式下,它的地址就如出现:4n-

17、1、 4n、4n+1、4n+2的情况。这样的数据在32位宽的存储 中,需要分两次读取或写入。,http:/ 2 1 0,数据字的存储地址为8,0,4,8,12,16,字节地址,3 2 1 0,数据字的存储地址为9 分两次读/写,http:/ 寻址方式(P133),存放操作数的部件:ALU的某个寄存器、存储器、指令 程序的指令代码:一般在存储器中 寻址方式:根据指令中给出的地址码字段寻找真实的操作数以及下一条要执行的指令地址的方式。,http:/ 例:MOV AX,2000,寻址方式字段,A有效地址,http:/ 例:MOV AX,BX 优点:地址码短,从寄存器中存取数据比从存储器中存取快得多.

18、 寄存器寻址方式可以缩短指令长度、节省存储空间,提高指令的执行速度,在计算机中得到广泛应用。,OP R,指令,操作数,寄存器R,http:/ 例:MOV AX,50BX,在MASM中这叫寄存器相对寻址,http:/ 物理地址)和扩大寻址空间(基址位移量)等问题。 注2:通常基址寄存器中的值只能由系统程序设定,由特权指令执行,而不能被一般用户指令所修改,因此确保了系统的安全性。,http:/ 例:MOV AX,tableSI,http:/ 有些计算机的指令系统的变址寄存器由自动增量或自动减量功能。,http:/ 根据地址码取出的是寄存器地址还是存储器地址,间接寻址又可分为寄存器间接寻址和存储器间

19、接寻址两种方式。 例:MOV AX,BX 间接寻址有一次间址和多次间址两种情况。 对于存储器一次间址情况,需访问两次存储器才能取得数据,第一次从存储器读出操作数地址,第二次读出操作数。,http:/ AX,BX int *p;(一级间址) int *p;(二级间址),http:/ 直接寻址:JMP near ptr A1 间接寻址:JMP dword ptr 2000,http:/ 主要用于转移指令,执行本条指令后,将转移到(PC)+disp,(PC)为程序计数器的内容。 例: JMP SHORT PTR L1 相对寻址有两个特点: (1)转移地址不是固定的,它随着PC值的变化而变化,并且总是

20、与PC相差一个固定值disp,因此无论程序装入存储器的任何地方, 均能正确运行,对浮动程序很适用。 (2)位移量可正、可负,通常用补码表示。如果位移量为n位,则这种方式的寻址范围在(PC)-2(n-1)到(PC)+2(n-1) -1之间。 计算机的程序和数据一般是分开存放的,程序区在程序执行过程中不允许修改。在程序与数据分区存放的情况下,不用相对寻址方式来确定操作数地址。,http:/ 例: 其汇编符号记为:MOV Ri,#1536 这种方式的特点是取指时,操作码和一个操作数同时被取出,不必再次访问存储器,提高了指令的执行速度,但不能修改,通常用于寄存器或存储单元赋初值或提供一个常数等。,ht

21、tp:/ 堆栈操作使用一种特殊的数据传送指令,即压入指令(PUSH)和弹出指令(POP)。 若采用“向上生成”的堆栈,其操作过程如下: 压入指令:PUSH OPR,是把OPR(设长度为一个字节) 压入堆栈。其操作是: (SP)1 SP ; OPR (SP) 。 弹出指令:POP OPR,是从堆栈弹出一个数据(长度为一个字节)送OPR,操作是: (SP)OPR ;(SP)+1 SP 。,http:/ 例如在一条指令中可以同时实现基址寻址与变址寻址,其有效地址为: 基址寄存器内容+变址寄存器内容+指令地址码A,假如用户用高级语言编程,根本不用考虑寻址方式,因为这是编译程序的事。 但若用汇编语言编程

22、,则应对它有确切的了解,才能编出正确而又高效的程序。此时应认真阅读指令系统的说明书,因为不同计算机采用的寻址方式是不同的,即使是同一种寻址方式,在不同的计算机中也有不同的表达方式或含义。,http:/ 指令类型(P137),指令系统决定了计算机的基本功能,因此指令系统的设计是计算机系统设计中的一个核心问题。,5.5.1 指令的分类及功能,一台计算机的指令系统通常有几十条至几百条指令, 按其所完成的功能可分为:算术逻辑运算指令、 移位操作指令、浮点运算指令、十进制运算指令、 字符串处理指令、向量运算指令、数据传送指令、 转移指令、堆栈操作指令、输入输出指令、特权 指令等。 下面分别说明各类指令的

23、功能。,http:/ ):+、-、*、/ ADD、ADC、SUB、SBB、MUL、IMUL、DIV、IDIV 例:ADD AX,BX (2)逻辑:与、或、非(求反)、异或(按位加)等有些计算机还设置有位操作指令,如位测试(测试指定位的值)、位清除(把指定位清零)、位求反(取某位的反值)指令等。 AND、OR、NOT、XOR、BIT、CLI等 例如: AND AX,BX,http:/ AL,1,http:/ 在人机交互作用时,输入输出的数据都是以十进制形式表示的。在某些数据处理系统中输入输出的数据很多,但对数据本身的处理却很简单。在不具有十进制运算指令的计算机中,首先将十进制数据转换成二进制数,

24、再在机器内运算;尔后又转换成十进制数据输出。因此,在输入输出数据频繁的计算机系统中设置十进制运算指令能提高数据处理的速度。,http:/ 早期的计算机主要用于科学计算和工业控制,指令系统的设置侧重于数值运算,只有少数大型机才有非数值处理指令。而随着计算机的不断发展,应用领域不断扩大,计算机更多地应用于信息管理、数据处理、办公室自动化等领域,这就需要有很强的非数值处理能力。因此,越来越重视非数值指令的设置,甚至像Intel8086微处理器都配置了这种指令,使它能够直接用硬件支持非数值处理。 一般包括字符串传送、字符串比较、字符串查询、字符串转换等指令。,http:/ 对于存储器来讲,数据传送包括

25、了对数据的读(相当于取数指令)或写(相当于存数指令)操作。数据传送时,数据从源地址传送到目的地址,而源地址中的数据保持不变,因此实际上是数据复制。 数据传送指令一次可以传送一个数据或一批数据,如Intel8086的MOVS指令,一次传送一个字或字节,而当加上重复执行前缀(REP)后,一次可以把多达64KB的数据块从存储器的一个区域传送到另一个区域。 有些机器设置了数据交换指令,完成源操作数与目的操作数互换,实现双向数据传送。,http:/ 按转移的性质,转移指令分为无条件转移、条件转移、过程调用与返回、陷阱(trap)等几种。,http:/ AX 堆栈(stack)是由若干个连续存储单元组成的

26、先进后出(first in last out,简称FILO)存储区,第一个送入堆栈中的数据存放在栈底,最近送入堆栈中的数据存放在栈顶。栈底是固定不变的,而栈顶却是随着数据的入栈和出栈在不断变化。为了表示栈顶的位置,有一个寄存器或存储器单元用于指出栈顶的地址,这个寄存器或存储器单元就称为堆栈指针(stack pointer,简称SP)。任何堆栈操作只能在栈顶进行。,http:/ 压入指令:PUSH 把指定的操作数送入栈顶 弹出指令:POP 把栈顶的数据取出 在一般的计算机中,堆栈从高地址向低地址扩展,即栈底的地址总是大于或等于栈顶的地址(也有少数计算机刚好相反)。,http:/ AX,sp,pu

27、sh ax,Sp,AL,AH,高地址,低地址,进栈方向,(sp) (SP)-2 (sp)+1,(sp) (AX),http:/ 、OUT 计算机所处理的一切原始数据和所执行的程序(除了固化在ROM中的以外)均来自外部设备的输入,处理结果需通过外部设备输出。 输入输出指令的一般格式如下:,操作码,寄存器名,外部设备中的寄存器地 址或设备码,其长度一般为816位, 可以表示25664K个设备寄存器,http:/ 输出指令刚好相反,是把REG寄存器中的数据送到A地址所指定的外部设备寄存器中。 此外,IO指令还可用来发送和接收控制命令和回答信号,用以控制外部设备的工作。 有些计算机采用外部设备与存储器

28、统一编址的方法把外部设备寄存器看成是存储器的某些单元,任何访问存储器的指令均可访问外部设备,因此不再专设IO指令。,http:/ 一般来说,在单用户、单任务的计算机中不一定需要特权指令,而在多用户、多任务的计算机系统中,特权指令却是必不可少的。它主要用于系统资源的分配和管理,包括改变系统的工作方式、检测用户的访问权限、修改虚拟存储器管理的段表、页表和完成任务的创建和切换等。 在某些多用户的计算机系统中,为了统一管理所有的外部设备,输入输出指令也作为特权指令,不允许用户直接使用。需输入输出时,可通过系统调用,由操作系统来完成。,http:/ (2)多处理机指令 (3)控制指令 包括等待指令、停机

29、指令、空操作指令、开中断、关中断、置条件码指令等。,http:/ 双字长运算(子程序举例),有时候,需对双字长操作数进行运算,而机器本身并没有双字长指令,这样就需要通过子程序予以实现。,1双字长加法运算 假设在寄存器R1,R2和R3,R4分别存放两个双字长操作数,其中R1,R3为高位。加法运算可分为两种情况讨论:,(1)假设机器设置有ADD(加法指令)和ADC(加进位的加法指令),则执行下列两条指令后在R3、R4中得到运算结果。 指 令 操 作 说 明 K:ADD R2,R4 ;低位相加,R4(R3)+(R4),并根据运算结果置进位位C K+1:ADC R1,R3 ;高位相加,并加进位位C,

30、R3(R1)+(R3)+C,http:/ 指 令 操 作 说 明 K:ADD R2,R4;低位相加,R4(R2)+(R4),并根据运算结果置进位位C K+1:BCC K+3;如C=0,程序转移到K+3,如C=1,顺序执行下一条指令 K+2:ADD #1,R1 ; R1(R1)+1 K+3:ADD R1,R3;高位相加,R3(R1)+(R3) 在R3、R4中得到运算结果。,http:/ 假设在R1,R2和R3,R4分别存放双字长被减数和减数,其中R1,R3为高位,R2,R4为低位。求两数之差。 现举例说明,设操作数字长为4位,那么双字长为8位,且设定为不带符号位的正数. 被减数X:0010 11

31、00, 减数Y:0001 1010。 计算得:-Y补=11100110 X-Y补X+-Y补 00101100+11100110=00010010。,http:/ 低位 0 0 l 0 1 1 0 0 +) 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 进位,在上例中低位向高位产生进位信号。但在计算机中对低位进行减法运算时因低位够减,所以不产生借位,即C0。 高位部分实际上相当于补码相减。,http:/ 1110,则(-Y)补=11100010, (X-Y)补=X+(-Y)补=00101100+11100010 =00001110。 高位 低位 0 0 l 0 1 1 0 0

32、+) 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 在上例中,低位无进位信号,但此时低位不够减,向高位借位,所以C=1。高位部分相当于反码相减。,http:/ (1)低位相减:若不够减,置C1; 够减,置C0。 (2)高位相减:若上次运算后,C=0,减数取补码; C=1,减数取反码。 一般机器中设置有按补码运算的减法指令。,假如机器没有设置减反码指令,则程序可安排如下: 指 令 操 作 说 明 K: SUB R2,R4 ; R4(R2)-(R4),并根据运算结果置借位C K+1:BCC K+3; 若C=0,转移到K+3 K+2:ADD #1,R3 ;R3(R3)+1 K+3:

33、 SUB R1,R3 ;R3(R1)-(R3) 在R3、R4中得到两数之差。,http:/ 某指令系统指令长16位,每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令有K条,无操作数指令有L条,问单操作数指令最多可能有多少条? 2 基址寄存器的内容为2000H(H表示十六进制),变址寄存器内容为03A0H,指令的地址码部分是3FH,当前正在执行的指令所在地址为2B00H,请求出变址编址(考虑基址)和相对编址两种情况的访存有效地址(即实际地址)。,http:/ 接上题 (1) 设变址编址用于取数指令,相对编址用于转移指令,存储器内存放的内容如下: 地址 内容 00

34、3FH 2300H 2000H 2400H 203FH 2500H 233FH 2600H 23A0H 2700H 23DFH 2800H 2B00H 063FH 请写出从存储器中所取的数据以及转移地址。 (2) 若采取直接编址,请写出从存储器取出的数据。,http:/ 在下面有关寻址方式的叙述中,选择正确答案填入( )内。 根据操作数所在位置,指出其寻址方式:操作数在寄存器中,为(A)寻址方式;操作数地址在寄存器中称为(B)寻址方式;操作数在指令中,称为(C)寻址方式;操作数地址(主存)在指令中,为(D)寻址方式。操作数的地址,为某一寄存器中的内容与位移量之和则可以是(E)、(F)、(G)寻址方式。 供选择的答案: A、B、C、D、E

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1