登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』DSP技术与应用实践教程

書城自編碼: 3005701
分類:簡體書→大陸圖書→計算機/網絡行业软件及应用
作者: 刘伟、李莹、薛玉利
國際書號(ISBN): 9787302466611
出版社: 清华大学出版社
出版日期: 2017-06-01
版次: 1 印次: 1
頁數/字數: 194/314000
書度/開本: 32开 釘裝: 平装

售價:HK$ 54.5

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
争吵的恋人:我们为什么相爱,又为什么争吵
《 争吵的恋人:我们为什么相爱,又为什么争吵 》

售價:HK$ 70.8
秘史:英国情报机构的崛起
《 秘史:英国情报机构的崛起 》

售價:HK$ 81.6
李鸿章及其时代:中西方世界的历史撞击
《 李鸿章及其时代:中西方世界的历史撞击 》

售價:HK$ 70.8
剑桥罗马骑士等级史(历史学堂)
《 剑桥罗马骑士等级史(历史学堂) 》

售價:HK$ 273.6
脉络:小我与大势
《 脉络:小我与大势 》

售價:HK$ 103.8
权势转移:近代中国的思想与社会(修订版)
《 权势转移:近代中国的思想与社会(修订版) 》

售價:HK$ 93.2
欧洲四千年
《 欧洲四千年 》

售價:HK$ 93.2
孙中山与海南(1905—1913)
《 孙中山与海南(1905—1913) 》

售價:HK$ 92.0

 

編輯推薦:
作为信号处理领域应用*广泛的DSP芯片,美国TI公司TMS320C5000系列DSP具有典型的特点,应用领域广泛。本书以C5000系列DSP为平台,采用轻松易懂的语言,介绍了C54x芯片的硬件结构、软件编程和应用实例。本书结构清晰、内容完整、举例丰富、实用性强,*特色在于理论够简、强调实用。对掌握DSP技术所需要的软硬件理论作了基本介绍,使读者在设计和开发之前具备必要的理论,后面将主要篇幅放在DSP的应用上。引入大量信号处理系统、通信系统实例,介绍了DSP在其中的应用,包括如何利用汇编语言、C语言和MATLAB语言对DSP进行设计、仿真。本书的另一个特色是资源丰富,书中包括每章大量的习题、所有实例的源代码、常用设计语言的安装和使用方法介绍,使读者可以更容易、更快速地掌握DSP系统的设计、开发和应用。与本书配套的电子资源,读者可以从清华大学出版社网站下载使用。
內容簡介:
本书以内容够用、理论够简、强调实践为基本思路,结合实例,以实用为目标讲述DSP技术。首先介绍DSP技术的硬件结构和指令系统等相关理论知识,为读者提供一定的专业基础知识,然后重点介绍利用汇编语言和C语言对TMS320C54x系列DSP进行应用程序开发的实例,着重强调DSP技术的实践应用。
本书可作为高等院校DSP技术相关课程的教学参考书,也可以作为自学者学习DSP技术的辅导材料。
目錄
目录
第1章DSP概述1
1.1数字信号处理1
1.2DSP芯片2
1.2.1DSP芯片的特点2
1.2.2DSP芯片的分类5
1.2.3常用的DSP芯片6
1.2.4DSP芯片的选择7
1.2.5DSP芯片的应用8
习题19
第2章TMS320C54x系列DSP的硬件结构12
2.1基本结构12
2.1.1C54x芯片的主要特点12
2.1.2C54x芯片硬件基本结构13
2.2总线结构14
2.3中央处理器15
2.3.1算术逻辑运算单元16
2.3.2累加器17
2.3.3桶形移位寄存器18
2.3.4乘法累加单元19
2.3.5比较选择存储单元20
2.3.6指数编码器21
2.3.7CPU状态和控制寄存器21
2.4存储器23
2.4.1存储器地址和空间分配23
2.4.2程序存储器23
2.4.3数据存储器24
2.4.4IO存储器25
2.5中断系统25
2.5.1中断类型25
2.5.2中断寄存器27
2.5.3中断流程28
2.6片内外设29
习题231
第3章DSP系统设计与开发34
3.1DSP系统的构成34
3.2DSP系统的设计过程34
3.3DSP系统的硬件开发35
3.4DSP系统的软件开发36
3.4.1编程语言的选择36
3.4.2软件开发工具与环境36
习题339
第4章CCS集成开发环境41
4.1CCS简介41
4.2CCS v5的安装42
4.3CCS v5的使用46
4.3.1CCS v5的窗口47
4.3.2新建工程文件49
4.3.3导入已有的工程文件51
4.3.4调试工程54
习题454
第5章TMS320C54x汇编语言程序设计55
5.1汇编语言概述55
5.2寻址方式57
5.3指令系统59
5.3.1数据传送指令62
5.3.2算术运算指令66
5.3.3逻辑运算指令71
5.3.4程序控制指令74
5.3.5并行操作指令78
5.3.6重复操作指令79
5.4汇编语言程序设计实例80
5.5TMS320C54x应用程序开发实例85
5.5.1数字滤波器的DSP实现85
5.5.2快速傅里叶变换的实现92
5.5.3QPSK的调制与解调98
5.5.4FSK调制与解调107
习题5112
第6章TMS320C54x C语言程序设计115
6.1C语言简介115
6.2C54x DSP的C语言编程118
6.2.1C54x DSP支持的C语言数据类型118
6.2.2系统的初始化118
6.2.3函数的调用119
6.2.4堆栈的使用120
6.2.5寄存器的访问121
6.2.6存储器的访问121
6.2.7IO空间的访问122
6.3TMS320C54x C语言程序开发实例122
6.3.1IIR滤波器的DSP实现123
6.3.2FIR滤波器的DSP实现128
6.3.3快速傅里叶变换的实现134
6.3.4卷积算法的DSP实现138
6.3.5相关算法的DSP实现141
6.3.6离散余弦变换的DSP实现144
6.3.7自适应滤波器LMS算法实现149
6.4用C语言和汇编语言混合编程152
6.4.1独立编写C程序和汇编程序153
6.4.2C程序与汇编语言相互访问数据153
6.4.3C程序中直接嵌入汇编语句155
习题6155
第7章MATLAB在DSP设计中的应用157
7.1MATLAB概述157
7.1.1MATLAB软件的安装157
7.1.2MATLAB的软件环境162
7.1.3MATLAB的基本操作163
7.2CCSLink简介168
7.2.1CCSLink的功能及特点168
7.2.2CCSLink的配置169
7.2.3CCSLink的组件内容170
7.2.4CCSLink的连接对象171
7.2.5CCSLink的函数174
7.3MATLAB实现DSP基本算法177
7.3.1相关算法的仿真177
7.3.2快速傅里叶变换的仿真180
7.3.3离散余弦变换的仿真181
7.3.4IIR滤波器的仿真183
7.3.5FIR滤波器的仿真185
习题7188
第8章现代DSP系统设计189
8.1DSP Builder及其设计流程189
8.2利用DSP Builder设计实例190
习题8194
参考文献195
內容試閱
前言
数字信号处理(DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科,其以数字的形式对信号进行加工处理,以便提取有用的信息并进行有效的传输与应用。随着计算机技术和信息技术的飞速发展,DSP技术已经在信号处理、通信系统、控制系统等多个领域得到广泛应用。为了适应DSP技术的发展,很多高校都开设了与DSP技术相关的课程,但是目前关于这方面的书大部分都是以介绍DSP技术的理论知识为主,以实践应用介绍为主的书籍较少。本书以美国TI公司在信号处理领域广泛应用的TMS320C54x芯片为对象编写此书,力求将DSP的软件和硬件基础进行简要介绍,重点突出如何利用汇编语言、C语言和MATLAB语言将数字信号处理中的常用算法在DSP中实现。本书共分8章。第1章对DSP进行概述,主要介绍DSP的定义,DSP的研究内容和实现方法,DSP芯片的特点、分类、选择和应用等。第2章介绍TMS320C54x系列DSP的硬件结构,包括基本的硬件结构、总线结构、中央处理器、存储器、中断系统以及片内外设等。第3章介绍DSP系统设计和开发的基本方法和过程,包括DSP系统的构成、设计过程、软硬件开发流程等。第4章介绍CCS集成开发环境,包括CCS的安装和使用方法。第5章介绍TMS320C54x汇编语言程序设计方法,包括汇编语言的寻址方式、指令系统以及利用汇编语言进行DSP程序开发的典型实例。第6章介绍TMS320C54x C语言程序设计方法,包括C语言的使用方法、利用C语言进行DSP程序开发的典型实例以及利用C语言和汇编语言进行混合编程的方法。第7章介绍了MATLAB软件在DSP设计中的应用,包括MATLAB软件的基本使用方法、CCSLink的使用方法以及如何利用MATLAB语言实现DSP中的常见算法。第8章介绍现代DSP系统设计,以Altera公司的DSP Builder为例,介绍其设计流程和应用实例。每章后面都提供习题以供参考和巩固。本书由刘伟担任主编,第1~第5章由刘伟编写,第6章由李莹编写,第7和第8章由薛玉利编写,全书由刘伟统稿,南京大学的方元教授对本书提出了许多宝贵的意见。在编写的过程中,得到了上海师范大学天华学院领导和多位同事的支持和帮助,在此一并表示衷心的感谢。由于编者水平有限,疏漏在所难免,欢迎批评指正。
编者2017年4月


第5章TMS320C54x汇编语言程序设计C54x提供两种编程语言,即汇编语言和CC语言。对于完成一般功能的代码,这两种语言都可使用,目前使用较多的是CC语言,但对于一些运算量很大的关键代码,最好采用汇编语言来完成,以提高程序的运算效率。对于初学者,最好先以汇编语言作为入门编程工具来学习,这样易于深刻理解DSP的工作原理。因此,汇编语言程序设计是应用软件设计的基础。下面结合例子简要介绍TMS320C54x汇编语言源程序设计的基本方法。5.1汇编语言概述TMS320C54x汇编语言源程序由源语句组成。这些语句可以包含汇编语言指令、汇编伪指令和注释。程序的编写必须符合一定的格式,以便汇编器将源文件转换成机器语言的目标文件。汇编语言程序以.asm为扩展名,可以用任意的编辑器编写源文件。一条语句占源程序的一行,长度可以是源文件编辑器格式允许的长度,但汇编器每行最多读200个字符。因此,语句的执行部分必须限制在200个字符以内。C54x的指令系统包含助记符指令和代数指令两种形式。助记符指令是一种采用助记符号表示的类似于汇编语言的指令;代数指令是一种比汇编语言更高级,类似于高级语言的代数形式指令。两种指令具有相同的功能,本章着重介绍助记符指令。C54x的助记符指令由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都用助记符表示。助记符指令源语句的每一行通常包含4个部分: 标号区、操作码区、操作数区和注释区。源代码的书写有一定的格式,初学者往往容易忽视。每一行代码分为三个区: 标号区、指令区和注释区。助记符指令语法格式为: \[标号\]\[: \]操作码\[操作数\]\[;注释\]如: LD#0FFh,A;将立即数0FF传送至A语句的书写的基本规则如下:1 所有语句必须以标号、空格、星号或分号或;开始,语句各部分之间必须用空格或Tab分开。2 一般区分大小写,除非加编译参数忽略大小写。3 所有包含汇编伪指令的语句必须在一行完成指定,如果源程序很长,需要书写若干行,可以在前一行用反斜杠字符\\结束,余下部分接着在下一行继续书写。下面对指令中各部分的作用及书写规则进行介绍。1. 标号所有汇编指令和大多数汇编伪指令都可以选用标号,主要用于定义变量、常量、程序标识时的名称,以供本程序或其他程序调用。注意:1 标号为可选项,若使用标号,必须顶格写,其后的冒号: 可任选;若不使用标号,则语句的第一列必须是空格、星号或分号。2 标号由字母、数字以及下画线或美元符号等组成,最多可达32个字符。3 标号分大小写,且第一个字符不能是数字。例如Start: .word 0Ah,3,7Start即为顶格写的标号,用于定义常量,供程序调用。2. 指令区指令区紧跟在标号区的后面,以空格或Tab格开。如果没有标号,也必须在指令前面加上空格或Tab,不能顶格。指令区由操作码和操作数组成。操作码是指令代码,操作数是指令中参与操作的数值或汇编伪指令定义的内容。如: Start: LD#0FFh,A;将立即数0FF传送至A其中,Start为标号,LD为操作码,0FFh为源操作数,A为目的操作数,此条指令完成的功能是将立即数0FF传送至累加器A。注意:1 操作数之间必须用逗号,分隔;2 操作数可以是常数、符号或表达式;3 操作数中的常数、符号或表达式可用来作为地址、立即数或间接地址;4 操作数可以有前缀,可以使用#、和@符号作为操作数的前缀。① 用#作为前缀使用#作为前缀,汇编器将操作数作为立即数处理。即使操作数是寄存器或地址,也将作为立即数。如果操作数是地址,汇编器将把地址处理为一个数值,而不使用地址的内容。例如: Label: ADD# 99, B操作数# 99是一个立即数。② 用作为前缀使用作为前缀,汇编器将操作数作为间接地址,即把操作数的内容作为地址。例如: Label: LD AR3, B操作数AR3指定一个间接地址。该指令将引导汇编器找到寄存器AR3的内容作为地址,然后将该地址中的内容装入指定的累加器B中。③ 用@作为前缀使用@作为前缀,汇编器将操作数作为直接地址,即操作数由直接地址码赋值。例如: Label: LD@ x, A将直接地址x中的内容装入指定的累加器A中绝对寻址;或者DP、SP的值加上x作为地址,将其内容放入A直接寻址。3. 注释区注释区用来说明指令功能的文字,便于用户阅读。注释区是可选项,在标号区、程序区之后,可单独一行或数行。如果注释在第一列开始时,前面必须标上或;,在其他列开始的注释前面必须以分号开头,另外还有专门的注释行,以开头,必须顶格开始。5.2寻 址 方 式寻址方式是指寻找指令所指定的参与运算的操作数的方法。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。C54x芯片的寻址方式可以分为两类: 数据寻址和程序寻址,其中数据寻址有7种方式,分别介绍如下。1. 立即寻址指令中含有执行指令所需的操作数,常用于初始化。操作数紧随操作码存放在程序存储器中。立即寻址的特点是指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,且数值不能改变。图5.1程序存储器立即寻址一般用于表示常数或对寄存器初始化。需要注意的是,在立即寻址的指令中,应在数值或符号前面加一个#,表示是一个立即数,以区别于地址。例如: LD#FF80h,A 如图5.1所示,立即数FF80是与操作码一起存在程序存储器中的,指令执行后,将立即数FF80加载到累加器A中。2. 绝对寻址由指令提供一个16位的操作数地址,利用16位地址来寻址操作数的存储单元。16位地址的表示形式可以是 16位符号常量,如89AB、1234;也可以是地址标号,如TABLE。绝对寻址的特点是指令中包含一个固定的16位地址,能寻址所有数据存储空间,但运行速度慢、需要较大的存储空间,因此,常用于对速度要求较低的场合。绝对寻址有以下4种类型。1 数据存储器地址dmad寻址,用于确定操作数存于数据存储单元的地址。例如: MVKDEXAM1,  AR5EXAM1为数据存储器的16位地址dmad值,指令将数据存储器EXAM1地址单元中的数据传送到AR5寄存器所指向的数据存储单元中。2 程序存储器地址pmad寻址,用于确定程序存储器中的一个地址。例如: MVPDTABLE,  AR2 TABLE是程序存储器的16位地址pmad值,指令将程序存储器TABLE地址单元中的内容传送到AR2寄存器所指向的数据存储单元中。3 端口PA寻址,用一个符号或一个数字来确定外部IO端口的地址。例如: PORTRFIFO,  AR5FIFO为IO端口地址PA,指令将一个数从端口为FIFO的IO口传送到AR5寄存器所指向的数据存储单元中。4 1k寻址,使用一个指定数据空间的地址来确定数据存储器中的一个地址。例如: LDPN, A把地址为PN的数据单元中的数据装到累加器A中,这种寻址可用于支持单数据存储器操作数的指令。注意: 1k寻址的指令不能与循环指令RPT,RPTZ一起使用。3. 累加器寻址以累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。该寻址方式主要用于完成程序存储空间与数据存储空间之间的数据传输。注意,只能使用累加器A寻址程序空间,Smem用来寻址数据空间。例如: READAx;将累加器A的内容作为地址读程序存储器,并存入数据存储单元x中4. 直接寻址寻址地址为DP或SP的值加上指令提供的偏移量进行寻址,所要寻址的数据存储器16位地址由基地址和偏移地址构成。数据存储器的低7位地址为偏移地址,数据页指针DP和堆栈指针SP提供基地址,使用DP还是SP由CPL值来决定。当CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;当CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。直接寻址的标识为: 在变量前加@,如@x;或者在偏移量前加@,如@5。指令格式如图5.2所示。图5.2指令格式直接寻址的优点是每条指令只需要一个字。因此,主要用于要求运算速度较快的场合。例如: 1RSBXCPL;CPL=0LD@x,A;DP x的低7位地址的内容给累加器A2 SSBXCPL;CPL=1LD@x,A;SP x的低7位地址的内容给累加器A5. 间接寻址间接寻址是根据辅助寄存器AR0~AR7给出的16位地址进行寻址的,每一个辅助寄存器都可以用来寻址64K字数据存储空间中的任何一个单元。两个辅助寄存器算术运算单元ARAU0和ARAU1可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。间接寻址的特点是通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址,共有16种修正地址的方式,主要用于需要按固定步长寻址的场合。例如: LDAR1,A;以辅助寄存器AR1所指的16位地址为地址,取该地址;的内容,传送给累加器A6. 存储器映像寄存器寻址存储器映像寄存器寻址是一种不考虑DP和SP为何值、以0为基地址来访问MMR的寻址方式,主要用于修改存储器映像寄存器的内容,但不影响DP或SP的值。7. 堆栈寻址堆栈是指当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。堆栈寻址是利用SP指针,按照先进后出的原则进行寻址,主要用来管理系统堆栈中的操作。5.3指 令 系 统C54x的助记符指令由操作码和操作数两部分组成,在进行汇编以前,操作码和操作数都是用助记符表示的。常用的符号以及运算符如表5.1和表5.2所示。表5.1指令系统中的符号及其含义序号符号含义1A累加器A2ALU算术逻辑运算单元3AR泛指通用辅助寄存器4ARx指定某一辅助寄存器AR0~AR75ARPST0中的3位辅助寄存器指针6ASMST1中的5位累加器移位方式位-16~157B累加器B8BRAFST1中的块重复操作标志9BRC块重复操作寄存器10BIT或bit_code用于测试指令,指定数据存储器单元中的哪一位被测试,取指范围为0~1511C16ST1中的双16位双精度算术运算方式位12CST0中的进位位13CC2位条件码0CC3 14CMPTST1中的ARP修正方式位15CPLST1中的直接寻址编辑标志位16cond表示一种条件的操作数,用于条件执行指令17\[d\],\[D\]延时选项18DABD地址总线19DARDAB地址寄存器20dmad16位立即数数据存储器地址0~65535 21Dmem数据存储器操作数22DPST0中的数据存储器页指针0DP511 23dst目的累加器A和B24dst_与dst相反的目的累加器25EABE地址总线26EAREAB地址总线27extpmad23位立即程序存储器地址28FRCTST1中的小数方式位29hiA累加器的高阶位AH或BH30HMST1中的保持方式位31IFR中断标志寄存器32INTMST1中的中断屏蔽位33K少于9位的短立即数34K33位立即数0K37 续表序号符号含义35K55位立即数-16K515 36K99位立即数0K9511 371K16位长立即数38Lmem利用长字寻址的32位单数据存储器操作数39Mmr,MMR 存储器映像寄存器40MMRx,MMRy 存储器映像寄存器,AR0~AR7或SP41nXC指令后面的字数,取1或242N指定状态寄存器,N=0为ST0,N=1为ST143OVAST0中的累加器A溢出标志 44OVBST0中的累加器B溢出标志 45OVdst指定目的累加器A或B的溢出标志 46OVdst_指定与Ovdst相反的目的累加器的溢出标志47OVsrc指定源累加器A或B的溢出标志48OVMST1中的溢出方式位49PA16位立即端口地址0PA65535 50PAR程序存储器地址寄存器51PC程序计数器52Pmad16位立即程序存储器地址0Pmad6553553Pmem程序存储器操作数54PMST处理器工作方式状态寄存器55prog程序存储器操作数56\[R\]舍入选项57rnd循环寻址58RC重复计数器59RTN快速返回寄存器60REA块重复结束地址寄存器61RSA块重复起始地址寄存器62SBIT用于指定状态寄存器位的4位地址0~1563SHFT4位移位值0~1564SHIFT5位移位值-16~1565Sind间接寻址的单数据存储器操作数66Smem16位单数据存储器操作数67SP堆栈指针寄存器68src源累加器A或B69ST0,ST1状态寄存器0,状态寄存器170SXMST1中的符号扩展方式位71T暂存器72TCST0中的测试控制标志73TOS堆栈顶部74TRN状态转移寄存器75TS由T寄存器的5~0位所规定的移位数-16~3176uns无符号数77XFST1中的外部标志状态位78XPC程序计数器扩展寄存器79Xmem16位双数据存储器操作数,用于双数据操作数指令80Ymem16位双数据存储器操作数,用于双数据操作数指令和单数据操作指令表5.2指令系统的运算符号序号符号运 算 功 能求值顺序1 -~!取正、取负、按位求补、逻辑负从右至左2%乘法、除法、求模从左至右3 -加法、减法从左至右4^指数从左到右5左移、右移从左到右6大于、大于等于从左到右8!=不等于从左到右9&按位与运算从左到右10按位异或运算从左到右11|按位或运算从左到右C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。按指令的功能可分成6大类: 数据传送指令、程序控制指令、算术运算指令、并行操作指令、逻辑运算指令和重复操作指令。
5.3.1数据传送指令数据传送指令是从存储器中将源操作数传送到目的操作数所指定的存储器中,包括装载指令、存储指令、条件存储指令、混合装载和存储指令。1. 装载指令即取数或赋值指令,用于将存储器内容或立即数赋给目的寄存器,共计21条。指令格式: 操作码源操作数\[,移位数\],目的操作数 其中操作码包括DLD、LD、LDM、LDR、LDU和LTD,最常用的是LD指令。各指令的格式和功能如表5.3所示。续表表5.3装载指令的格式与功能指令指 令 格 式指 令 功 能说明DLDDLD Lmem,dstdst=Lmem将Lmem所指定的单数据存储器中的32位数据送入累加器A或B中LDLD Smem,dstdst=Smem将Smem所指定的单数据存储器中的16位数据送入累加器A或B中LDSmem,TS,dstdst=Smem

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.