计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc

上传人:仙人指路1688 文档编号:2882287 上传时间:2023-03-01 格式:DOC 页数:18 大小:1.30MB
返回 下载 相关 举报
计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc_第1页
第1页 / 共18页
计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc_第2页
第2页 / 共18页
计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc_第3页
第3页 / 共18页
计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc_第4页
第4页 / 共18页
计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计研制一台多累加器结构的实验计算机.doc(18页珍藏版)》请在三一办公上搜索。

1、 课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学 生 姓 名学 号题 目研制一台多累加器结构的实验计算机内容及要求:利用FD-CES实验仪提供的硬件资源,通过设计(包括整机结构设计、指令设计、微指令设计、微程序设计、调试程序设计等)、组装、调试三个步骤研制一台微程序控制的实验计算机。设计总要求:1 实验计算机整机应由如下几个模块组成:运算器、指令部件、内存、微程序控制器、总线缓冲电路、启停和时序控制电路。2 运算器采用单累加器多寄存器结构。3 操作数寻址方式采用以下几种:直接地址寻址 (addr)-A,或(A)-addr寄存器直接寻址 (Ri)-A,或 (A)-Ri寄存器间接寻

2、址 (Ri)-A,或 (A)-(Ri)立即数寻址 data-A,或data-Ri4 指令系统按16条指令规模设计,主要设计如下几条指令:MOV A,#dataLDA addrSTA addrJC addrRLC AHALT5 用所设计的指令编写调试程序:将内存某个单元(addr1)中内容乘以2,若出现进位,则将进位和结果分别存放到单元(addr3、addr2)中;否则将结果存放到单元(addr2)中,然后用停机指令停机,从控制台检查addr2存放的结果。任务交付:1.程序源代码;2课程设计论文及电子文档。进度安排:第17周:布置课程设计任务,查阅资料,分组设计。第18周:实验室组装和调试。第1

3、9周:验收、答辩,编写课程设计报告。指导教师(签字):年 月 日学院院长(签字):年 月 日目录一实验计算机设计31.整机逻辑框图设计,并画出整机的逻辑框图。32.指令系统的设计。43微操作控制部件的设计。64设计组装实验计算机接线表145编写调试程序:16二实验计算机的组装16三实验计算机的调试161.调试前准备162.程序调试过程18四心得体会18五参考文献18题目 研制一台多累加器的计算机一 实验计算机设计1.整机逻辑框图设计,及整机的逻辑框图此模型机是由运算器,控制器,存储器,输入设备,输出设备五大部分组成。1.运算器又是有299,74LS181完成控制信号功能的算逻部件,暂存器LDR

4、1,LDR2,及三个通用寄存器R0,R1,R2等组成。2.控制器由程序计数器PC、指令寄存器、地址寄存器、时序电路、控制存储器及相应的译码电路组成。3.存储器RAM是通过CE和W/R两个微命令来完成数据和程序的的存放功能的。4输入设备是由置数开关SW控制完成的。5.输出设备有两位LED数码管和W/R控制完成的LR0 LR1 LR2寄存器Ax Bx CxR0-G R1-G R2-G数据总线(D_BUS)ALU-GALUM CNS3S2S1S0暂存器LT1暂存器LT2LDR1LDR2移位寄存器M S1 S0G-299输入设备DIJ-G微控器脉冲源及时序指令寄存器LDIR图中所有控制信号LPCPC-

5、G程序计数器LOADLAR地址寄存器存储器 6116CEWE输出设备D-GW/RCPU 图 1 整机的逻辑框图图1-1中运算器ALU由U7-U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。微控器部分控存由U13-U15三片2816构成。除此之外,CPU的其他部分都由EP1K10集成。存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H-FFH。输出设备由底板上的四个LED数码管及其译码、驱动构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。在开关方式下,输入设备由16位电平

6、开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。本系统的数据总线为16位,指令、地址和程序计数器均为8位。当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低8位有效。2.指令系统的设计2.1数据格式 数据格式:采用定点补码表示法表示数据,字长为8位,格式如下:76 5 4 3 2 1 符 号 尾 数 表1 数据格式其中第7位符号位,数值表示范围是:-1X12.2指令格式:(1)算术逻辑指令 设计9条单字长算术逻辑指令,寻

7、址方式采用寄存器直接寻址。其格式如下:7 6 5 43 21 0OP-CODErsrd 表2寻址方式其中OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:Rs或rd选定寄存器00R001R110R2 表3寄存器表9条算术逻辑指令的名称、功能和具体格式见表3。(2)存储器访问及转移指令 设计的2条访问指令,即存数(STA),取数(LDA),2条转移指令,即无条件转移(JMP),结果为零或有进位转移指令(BZC),指令格式如下: 7 65 43 21 000MOP-CODErdD 表4 存储器的访问表其中OP-CODE为操作码,rd为寄存器。M为寻址模式,D为位移量,D随M的不同其

8、定义也不相同,寻址定义如下:寻址模式M有效地址E说 明00E=D直接寻址01E=(D)间接寻址10E=(R1)+DR1变址寻址11E=(PC)+D相对寻址 表5寻址模式表 注:本机规定变址寄存器R1指定为寄存器R2。(3)I/O指令 输入(IN)和输出(OUT)指令采用单字节指令,格式如下7 6 5 43 21 0OP-CODEaddrrd 表6 I/O操作码表其中,当OP-CODE=0100且addr=10时,从“数据输入电路”中的开关组输入数据;当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。 2.3指令系统本实验共有7条基本指令,其中算术逻辑指令9

9、条,访问内存指令和程序控制指令2条。输入输出指令2条。下面列出了各条指令的格式、汇编符号和指令功能。 汇编符号指令的格式功 能MOV rd,rs ADD rd,rs SUB rd,rs 1000 rs rd 1001 rs rd 1010 rs rd rs rd rs+rd rdrd-rs rdINC rdAND rd,rsNOT rdROR rd 1011 rd rd 1100 rs rd 1101 rd rd 1110 rd rd rd+1 rdrsrd rdrd rd rd ROL rd 1111 rd rd rd MOV D,rd 00 10 00 rd D rd D MOV rd,

10、D 00 10 01 rd D D rd MOV rd, D 00 00 01 rd D D rd JMP D 00 00 10 00 DIN rd, KINOUT DISP,rd 0100 10 rd 0100 01 rd KIN rd rd DISP 表7 指令格式3微操作控制部件的设计。3.1微指令编码的格式设计设计三个控制操作微程序:存储器读操作(MRD):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。存储器写操作(MWE):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“10”时,按“

11、单步”键,可对RAM连续写操作。启动程序(RUN):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行 24232221201918171615 14 1312 11 109 8 7654321S3S2S1S0MCnWE1A1BF1F2F3uA5uA4uA3uA2uA1uA0 表8 本系统的微程序字长共24位,其控制顺序其中uA5-uA0为6位的后续的微地址,F1、F2、F3为三个译码字段,分别由三个控制位译码出多位。F3字段包含P1-P4四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程

12、序转入相应的位地址入口,从而实现微程序的顺序、分支、循环运行。3.2微操作控制信号设计微指令中个控制位的含义如下:S3、S2、S1、S0、M、CN是控制运算器的逻辑和算术运算的微命令。WE是写内存的微命令,状态“1”有效。1A、1B是输入电路选通、内存RAM选通、输出LED选通控制微命令,分别对应状态“11”、“10”、“01”。 状态“00”为无效。F1、F2、F3为三个译码字段,分别由三个控制位经指令译码电路74138译码输出8种状态,前7种状态分别对应一组互斥性微命令中的一个,状态“111”为无效。F3字段包含P1- P4四个测试字位。其功能是根据机器指令代码及相应微指令代码进行译码测试

13、,使微程序转入相应的微地址入囗,从而实现微程序的顺序、分支、循环运行。 F1字段F2字段F3字段15 14 13选择12 11 10选择9 8 7选择0 0 0LDRi0 0 0RAG0 0 0P10 0 1LOAD0 0 1ALU-G0 0 1AR0 1 0LDR20 1 0RCG0 1 0P30 1 1自定义0 1 1自定义0 1 1自定义1 0 0LDR11 0 0RBG1 0 0P21 0 1LAR1 0 1PC-G1 0 1LPC1 1 0LDIR1 1 0299-G1 1 0P 41 1 1无操作1 1 1无操作1 1 1无操作 表9 、三个字段的编码方案控制操作为P4测试,它以C

14、A1、CA2作为测试条件,出现了写机器指令、读机器指令和运行机器指令3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。机器指令的执行过程如下:首先将指令在外存储器的地址送上地址总线,然后将该地址上的指令传送至指令寄存器,这就是“取指”过程。之后必须对操作码进行P1测试,根据指令的译码将后续微地址中的某几位强制置位,使下一条微指令指向相应的微程序首地址,这就是“译码”过程。然后才顺序执行该段微程序,这是真正的指令执行过程。在所有机器指令的执行过程中,“取指”和“译码”是必不可少的,而且微指令执行的操作也是相同的,这些微指令称为

15、公用微指令。3.3微程序顺序控制方式设计3.3.1微程序控制部件组成原理1 运算器单元(ALU UINT)运算器单元由以下部分构成:两片74LS181构成了并串型8位ALU;两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。ALU的S0S3为运算控制端,Cn为最低进位输入,M为状态控制端。ALU的输出通过三态门74LS245连到数据总线上,由ALU-B控制该三态门。2 寄存器堆单元(REG UNIT)该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。三个寄存器的输入输出均以连入数据总线,由LDRi和RS-B根据机器指令进行选通。3 指令寄存器单

16、元(INS UNIT)指令寄存器单元中指令寄存器(IR)构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR控制其选通。4 时序电路单元(STATE UNIT)用于输出连续或单个方波信号,来控制机器的运行。5 微控器电路单元(MICROCONTROLLER UNIT)微控器主要用来完成接受机器指令译码器送来的代码,使控制转向相应机器指令对应的首条微代码程序,对该条机器指令的功能进行解释或执行的工作。由输入的W/R信号控制微代码的输出锁存。由程序计数器(PC)和地址寄存器(AR)实现程序的取指功能。6 逻辑译码单元(LOG UNIT)用来根据机器指令及相应微代码进行译码使微程序转入

17、相应的微地址入口,从而实现微程序的顺序、分支、循环运行,及工作寄存器R0、R1、R2的选通译码。7 主存储器单元(MAIN MEM)用于存储实验中的机器指令。8 输入输出单元(INPUT/OUTPUT DEVICE)输入单元使用八个拨动开关作为输入设备,SW-B控制选通信号。输出单元将输入数据置入锁存器后由两个数码管显示其值。 图2 微程序控制原理图3.3.2微程序入口地址形成方法由于每条机器指令都需要取指操作,所以将取指操作编制成一段公用微程序,通常安排在控存的0号或特定单元开始的一段控存空间内。每一条机器指令对应着一段微程序,其入口就是初始微地址。首先由“取指令”微程序取出一条机器指令到I

18、R中,然后根据机器指令操作码转换成该指令对应的微程序入口地址。这是一种多分支(或多路转移)的情况,常用三种方式形成微程序入口地址。(1)一级功能转移如果机器指令操作码字段的位数和位置固定,可以直接使操作码与入口地址码的部分位相对应。例如,某计算机有16条机器指令,指令操作码用4位二进制数表示,分别为0000、0001、1111。现以字母Q表示操作码,令微程序的入口地址为Q11B,例如000011B为MOV指令的入口地址,000111B为ADD指令的入口地址,001011B为SUB指令的入口地址。由此可见,相邻两段微程序的入口地址相差4个单元(2)二级功能转移 若各类指令的操作码的位数和位置不固

19、定时,需采用分级转移,第一次先按指令类型标志转移,以区分出指令属于哪一类,如单操作数指令、双操作数指令等。在每一类机器指令中的操作码的位数和位置应当是固定的,第二次即可按操作码区分出具体是哪条指令,以便转移到相应微程序入口。 (3)通过PLA电路实现功能转移 可编程逻辑阵列PLA实质上是一种译码-编码阵列,具有多个输入和多个输出,PLA的输入是机器操作码和其他判别条件,PLA的输出就是相应微程序的入口地址,这种方法对于变长度、变位置的操作码的处理更为有效而且转移速度较快。3.3.3控存的下地址确定方法在转移到一条机器指令对应的微程序入口地址后,则开始执行微程序,每条微指令执行完毕时,需根据其中

20、的顺序控制字段的要求形成后继微指令地址。 (1)增量方式(顺序-转移型微地址) 这种方式和机器指令的控制方式相类似,它也有顺序执行、转移和转子之分。顺序执行时,后继微地址就是现行微地址加上一个增量(通常为“1”);转移或转子时,由微指令的顺序控制字段产生转移微地址。因此,微程序控制器中应当有一个微程序计数器(PC)。为了降低成本,一般情况下部是将微地址寄存器AR改为具有计数功能的寄存器以代替PC。在非顺序执行微指令时,用转移微指令实现转移。转移微指令的顺序控制字段分成两部分:转移控制字段(BCF)与转移地址字段(BAF) “起始和转移地址发生器”的功能有两个:其一是当一条新的机器指令装入IR时

21、,它就形成机器指令的微程序段的起始地址且装入PC,而且随着节拍电位信号的到来,PC自动地增加一个增量,以便连续地从CM中读出微指令,相应的微操作控制信号按规定顺序发送到CPU的各个部分。第二个功能是当微指令指示其测试状态标志、条件代码或机器指令的某些位时,它就对指定的条件进行测试,若满足转移条件,就把新的转移地址装入PC,实现转移;否则不装入新地址,微程序就顺序执行。所以,每次从CM中取出一条新的微指令时,PC都增加,只有下列情况例外: 遇到END微指令时,就把“取指”微程序的入口地址装入PC,开始取指令周期; 当一条新的指令装入IR时,就把该指令的微程序的入口地址装入PC; 遇到转移微指令且

22、满足转移条件时,就把转移地址装入PC。 增量方式的优点是简单,易于掌握,编制微程序容易,每条机器指令所对应的一段微程序一般安排在CM的连续单元中;其缺点是这种方式不能实现两路以上的并行微程序转移,因而不利于提高微程序的执行速度。 (2)断定方式 断定方式与增量方式不同,它不采用PC,微指令地址由微地址寄存器AR提供。在微指令格式中,设置一个下地址字段,用于指明下一条要执行的微指令地址。当一条微指令被取出时,下一条微指令的地址(即下地址字段)送AR。它相当于每条微指令都具有转移微指令的功能。采用这种方法就不必设置专门的转移微指令,但增加了微指令字的长度。 (3)增量方式与断定方式的结合 这种控制

23、方式中,微地址寄存器AR有计数的功能(断定方式中的微地址寄存器AR无计数功能),但在微指令中仍设置一个顺序控制字段,这是一种增量方式与断定方式相结合的方式。其顺序控制字段一般由两部分组成:顺序地址字段和测试字段。3.3.4微程序在控存中的分布情况3.4微程序设计:3.4.1写出每条指令对应的微程序流程图控制开关 00 P(4)测试 MWE(01) MRD(00) RUN(11) PC AR,PC+1 11 PC AR,PC+1 10 13 (D_INPUT) D_BUS LT1 14 RAM D_BUS LT1 12 01 LT1 RAM 74 LT1 LED 73 图3 微程序流程图 图4

24、微程序流程图3.4.2写出每段微程序中各微指令的二进制编码、16进制编码 微地址S3S2S1 S0 M CN WE 1A 1BF1F2F3UA5-UA0000000000000000111111110001000000001000000000101101101000010000010000000010 110111111111101000110000000010 101111111100101000111000000010 101111 111100101001000000000000 101 101 101001010001001000000000 101101 10100110000101

25、0000000010 100111111111011001011000000000111111111000001001100000000011 100111111111100010000000000000101101 101100101010010000000000 101101101000111010011000000000 101 101 101000110010100000000000111111100010101010101000000101111 010111000001010111000000011 000111111000001011000000000000 000 000111

26、000001011001000000000100 000111101010011010000000000 100 000111101100011011000000000 100 000111110010011100000000000 100 000111110011011101000000000 100 000111110110011110001100000 111 000111110111011111001100000 000 000111111001100000000000110111100111000001100001000000010 0001111110000011000100000

27、00010 001 111 101000001100101000000000111 111 100100000101010000000000010010111101011101011100101000000001111000001101100000000000010100111101101101101011000000000 0011110000011100100000000000000011110000011100110000000000100101111101011101011011100000000011110000011101100000110000000011110000011101

28、11001000000111110111111000111000000000000000110111000001111001000100000111110111111010111010000000000000110111000001111011000001101111001111001000111100111111110111001111001001111101000000010110111000010000 表10为根据本实验程序流程图设计的二进制微代码表3.4.3写出每段微程序在控存中的存放位置。 微地址(八进制)微地址(二进制)微代码(十六进制)00000000007F880100000

29、1005B4202000010016FFD03000011014FC404000100015F2005000101015FC606000110014FC707000111015F2010001000005B4A11001001005B4C12001010014FFB13001011007FC11400110001CFFC15001101014FCE160011100025CF170011119453E520010000005B4321010001005B4522010010005B4D23010011005B6624010100018FC12501010102F5C126010110007FD

30、6270101113C03C1300110000001C1310110010041EA320110100021EC330110110041F2340111000041F3350111010041F6360111103001F7370111113001F940100000010FC1411000010379C142100010011F4143100011007EA444100100007FC14510010184492046100110014FE747100111002BE850101009459E951101001944920521010100025EB531010119403FE541011

31、000049ED551011010449EE561011100C49EF571011110049F0601100000C7F31611100019403C1621100100003C1631100110025F56411010004134165110101B803C1661101100C03C167110111287DF870111000000DC171111001187DFA72111010000DC17311101106F3C874111100FF73C975111101016E10761111100041C1 表11二进制代码表4设计组装实验计算机接线表 图5 单片机键盘实验连线图5编写

32、调试程序:要写出调试程序、每条指令所对应的机器码(16进制编码)、程序在内存中的存放位置。地址(十六进制) 指令(十六进制) 助记符00 44 IN R001 45 IN R1 02 86 MOV R1,R003 A1 SBC R0,R104 C2 AND R0,R2 05 061H STA addr,R106 59 OUT R107 5A OUT R208 0800 JMP09 01 0A 0注:其中STA、LDA、JMP为双字长(16位),其余为单字长指令。对于双字长指令,第一字为操作码,第二字为操作数;对于单字长指令只有操作码,没有操作数二实验计算机的组装连接硬件系统,如图5连线图三实验

33、计算机的调试1.调试前准备1、按照实验指导说明书连接硬件系统 2、启动实验软件,打开实验课题菜单,选中实验课题打开实验课题参数对话窗口:微指令操作: 图6 读写微指令格式 1)写:在编辑框中输入实验指导书中的微指令程序(格式:两位八进制微地址+空格+六位十六进制微代码),或直接打开随机附带的程序EX8.MSM,将实验箱上的K4K3K2K1拨至“0010”写状态,然后按写入按钮,微程序写入控制存储器电路; 2)读:将实验箱上的K4K3K2K1拨至“0100”读状态,在“读出微地址”栏中填入两位八进制地址,按读出按钮,则相应的微代码显示在“读出微代码”栏中; 3)保存:按保存按钮,微程序代码保存在

34、一给定文件(*.MSM)中; 4)打开:按打开按钮,打开已有的微程序文件,并显示在编辑框中 机器指令操作: 图7 读写机器指令格式 1)写:在编辑框中输入实验指导书中机器指令程序(格式:两位十六进制地址+空格+2位或 4位十六进制代码),或直接打开随机附带的程序EX8.ASM,将实验箱上的K4K3K2K1拨至 “0101”运行状态,拨动“CLR”开关对地址和微地址清零,然后按写入按钮,机器指令写 入存储器电路;注:对于8位机,十六进制代码为2位;对于16位机,十六进制代码可以是2位,也可以是4位。 2)读:将实验箱上的K4K3K2K1拨至“0101”运行状态,在“读出指令地址”栏中填入两位十六

35、进制地址,拨动“CLR”开关对地址和微地址清零,然后按读出按钮,则相应的指令代码显示在“读出指令代码”栏中。 3)保存:按保存按钮,机器指令程序保存在一给定文件(*.ASM)中。 4)打开:按打开按钮,打开已有的机器指令程序文件,并显示在编辑框中。 5)单步:在运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次单步按钮,执行一条微指令。可从实验箱的指示灯和显示LED观察单步运行的结果。 6)连续:在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按连续按钮,可连续执行程序。可从实验箱的指示灯和显示LED观察连续运行的结果。 7)停止:在连续运行程序过程中,可

36、按停止”按钮暂停程序的执行。此时地址和微地址并不复位,仍可以从暂停处单步或连续执行.2.程序调试过程在进行机器指令的操作时,完成对数据的写读之后,保存机器指令后可进行单步运行,也可以进行连续运行。在单步运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次单步按钮,执行一条微指令。从实验箱显示LED观察单步运行的结果。在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按连续按钮,可连续执行程序。从实验箱显示LED观察连续运行的结果。如:输入0.15LED显示:0.68四心得体会 通过此次计算机组成原理的课程设计,使我从中收获了许许多多,深化了对运算器部件的组成、

37、设计、控制和使用等方面的知识和简单运用,掌握了运算器外部电路的设计思想和方法,学会了一些简单的逻辑变量设计和逻辑函数推导,同时也真正的使自己从本质和更深地层次上认识、理解了计算机中运算器的运行原理,进而扩展到对计算机整机的理性认识。在学习、研究这条道路上,永远没有尽头,计算机的组成原理渊博而深远,我现在只是在其中的运算器部件上有了些许的认识,计算机是人类智慧的结晶,其中的每个部件都凝聚了无数智者的超凡思想了辛勤汗水,我想,我也将在以后的学习、生活、工作中继续深入地去专研计算机组成的内部原理,最终在自己的思维中建立其完整的计算机整机组成概念和原理,从而真正地为将来走出社会投入到与计算机相关的工作领域服打下坚实的知识、技能基础!参考文献白中英著 计算机组成原理第四版 北京:科学出版社 2008杨雨彤著 计算机组成原理实验指导书 沈阳:沈阳理工大学 2010马秀丽,刘念著 EL-JY-II型计算机组成原理实验系统实验指导书 沈阳理工大学信息学院应用教研室 200

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号