悦读乐园 -汇编语言与接口技术(第4版)
本书资料更新时间:2025-01-20 00:52:41

汇编语言与接口技术(第4版) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线

汇编语言与接口技术(第4版)精美图片
》汇编语言与接口技术(第4版)电子书籍版权问题 请点击这里查看《

汇编语言与接口技术(第4版)书籍详细信息

  • ISBN:9787302464730
  • 作者:暂无作者
  • 出版社:暂无出版社
  • 出版时间:2017-04
  • 页数:暂无页数
  • 价格:38.10
  • 纸张:胶版纸
  • 装帧:平装-胶订
  • 开本:16开
  • 语言:未知
  • 丛书:暂无丛书
  • TAG:暂无
  • 豆瓣评分:暂无豆瓣评分
  • 豆瓣短评:点击查看
  • 豆瓣讨论:点击查看
  • 豆瓣目录:点击查看
  • 读书笔记:点击查看
  • 原文摘录:点击查看
  • 更新时间:2025-01-20 00:52:41

寄语:

普通高等教育“十二五”*规划教材,普通高等教育“十一五”*规划教材,汇编语言与接口技术经典教材,特色突出,被多所高校用作教材。


内容简介:

本书共10章,以16位微处理器8088/8086为主线,介绍微处理器的结构、工作原理、指令系统等,同时兼顾32位以上微处理器80386、80486以及Pentium系列微处理器的相关内容。汇编语言以MASM 6.0为主,同时介绍了与MASM 5.X的区别,详细讲解了基于80x86的汇编程序设计方法。书中详细介绍了传统的接口技术,如并行、串行、定时、DMA、中断、模/数及数/模等接口技术。考虑到信息类相关专业学生的学习需求,本书专门增加了一章介绍存储器技术。第10章介绍*的高速串行接口USB接口。本书将微机原理、汇编语言、微机接口技术有机地融为一体,既适合课堂教学,又能紧跟*技术,拓宽学生的知识面。本书条理清楚,深入浅出,有丰富的实例,便于自学。

本书可以作为高等学校本科信息类相关专业的教材或参考书,也可以供广大工程技术人员参考。


书籍目录:

目录

 

第1章微型计算机概述/1

1.1微型计算机概念/1

1.2微处理器的产生和发展/2

1.3计算机系统组成/4

1.3.1硬件系统/5

1.3.2软件/6

1.4系统总线/8

1.4.1概述/8

1.4.2常用的微机系统总线技术/9

小结/10

习题/11第2章80x86微处理器/12

2.18086/8088微处理器/12

2.1.1内部结构/12

2.1.2寄存器组/15

2.1.3引脚信号及功能/18

2.1.4工作模式/22

2.1.5总线操作和时序/25

2.232位微处理器/32

2.2.1内部结构/32

2.2.2寄存器组/35

2.2.3引脚信号及功能/39

2.2.4工作模式/43

2.2.5总线操作/44

2.3Pentium微处理器/44

2.3.1Pentium微处理器的主要特点/45

2.3.2Pentium的发展/46

2.480x86存储器组织/47

2.4.18086/8088的存储器组织/472.4.232位微处理器存储器系统简介/50

小结/51

习题/51第3章80x86指令系统和寻址方式/53

3.18086指令系统概述/53

3.1.1数据类型/53

3.1.280x86指令的基本组成/55

3.28086/8088的寻址方式和指令系统/56

3.2.18086/8088的寻址方式/56

3.2.28086/8088的常用指令/61

3.380386的寻址方式和指令系统/78

3.3.180386的寻址方式/78

3.3.280386指令系统/80

3.480486/Pentium微处理器新增指令/90

3.4.180486引入的有关指令/90

3.4.2Pentium引入的有关指令/91

小结/92

习题/93第4章80x86汇编语言程序设计/97

4.1MASM宏汇编语句结构及开发过程/98

4.1.1汇编语言程序的语句类型和格式/98

4.1.2汇编语言的程序格式/99

4.1.3汇编语言程序的开发过程/101

4.2MASM汇编语言表达式和运算符/107

4.2.1常量、运算符及表达式/107

4.2.2变量及其属性/111

4.3程序段的定义和属性/119

4.3.1DOS的程序结构/119

4.3.2简化段定义的格式及其伪指令/120

4.3.3完整段定义的格式及其伪指令/125

4.4复杂数据结构/130

4.4.1结构/130

4.4.2记录/132

4.5宏汇编/133

4.5.1宏的定义和调用/134

4.5.2宏的参数/136

4.5.3与宏有关的伪指令/138

4.6常用的系统功能调用/140

4.6.1DOS的系统调用/140

4.6.2BIOS中断调用及实现/144

4.6.3Windows系统功能调用/147

4.7汇编语言顺序程序设计/149

4.8汇编语言分支程序设计/150

4.8.1无条件转移指令和条件转移指令/150

4.8.2分支结构程序设计实例/153

4.9汇编语言循环程序设计/157

4.9.1循环指令/157

4.9.2循环程序设计实例/158

4.10串处理程序设计/162

4.10.18086/8088串操作指令/162

4.10.280386位串操作指令/165

4.10.3串操作程序设计实例/165

4.11子程序设计/167

4.11.1子程序的定义与调用/167

4.11.2子程序的参数传递/173

4.11.3子程序的嵌套、递归与重入/177

4.11.4子程序的应用/179

4.12高级汇编语言程序设计/185

4.12.1条件控制伪指令/185

4.12.2循环控制伪指令/187

4.12.3过程声明和过程调用伪指令/190

4.13汇编语言与C语言混合编程/193

4.13.1C语言程序内嵌汇编指令/193

4.13.2汇编语言与C语言模块连接/196

小结/201

习题/202第5章存储器技术/209

5.1存储器概述/209

5.1.1存储器的发展及分类/209

5.1.2存储器主要技术指标/212

5.1.3存储器的基本结构框架/213

5.1.4存储系统的层次结构/213

5.2半导体随机存取存储器/215

5.2.1SRAM存储器/215

5.2.2DRAM存储器/217

5.2.3只读存储器/220

5.2.4新型存储器芯片/222

5.2.5主存容量的扩展/225

5.3高速缓冲存储技术/230

5.3.1Cache的基本原理/230

5.3.2Cache的管理/231

5.4虚拟存储技术/233

小结/235

习题/236第6章输入输出接口及数据传输控制方式/237

6.1接口概述/237

6.1.1接口的功能/237

6.1.2I/O端口及其编址方式/239

6.1.3I/O端口地址译码/239

6.1.4I/O操作指令/241

6.2CPU与外设数据的传输控制方式/242

6.2.1程序控制方式/242

6.2.2中断控制方式/245

6.2.3DMA方式/246

6.2.4数据传送控制方式的发展/246

小结/247

习题/247第7章串并行接口技术/248

7.1定时/计数器8253/8254/248

7.1.18253/8254的内部结构和引脚/248

7.1.28253/8254的工作方式/250

7.1.38253/8254的编程/254

7.1.48253/8254的应用实例/257

7.2并行通信接口8255A/259

7.2.18255A的内部结构和引脚/259

7.2.28255A的工作方式/260

7.2.38255A的编程/264

7.2.48255A的应用实例/266

7.3串行通信基础/269

7.3.1串行通信基本概念/270

7.3.2串行通信接口标准/271

7.4串行通信芯片8251A/275

7.4.18251A的内部结构和引脚/275

7.4.28251A的工作方式/278

7.4.38251A的编程/279

7.4.48251A的应用实例/284

小结/285

习题/286第8章中断和DMA技术/288

8.180x86中断系统/288

8.1.1中断操作和中断系统/288

8.1.2中断调用与返回指令/289

8.1.38086中断系统/290

8.1.480486的中断/293

8.2中断控制器8259A/294

8.2.18259A的内部结构和引脚/295

8.2.28259A的中断过程/297

8.2.38259A的工作方式/298

8.2.48259A的初始化和控制命令字/301

8.2.58259A的应用实例/308

8.3DMA控制器8237A/310

8.3.18237A的结构和外部引脚/311

8.3.28237A的工作原理/314

8.3.38237A的内部寄存器和命令/316

8.3.48237A的编程和应用/321

小结/322

习题/323第9章模拟接口技术/325

9.1模拟输入输出系统/325

9.1.1微机与控制系统接口/325

9.1.2模拟输入通道/326

9.1.3模拟输出通道/327

9.2数/模转换芯片及接口/327

9.2.1数/模转换原理/327

9.2.28位数/模转换器DAC0832/330

9.2.312位数/模转换器AD567/333

9.3模/数转换芯片及接口/336

9.3.1模/数转换原理/336

9.3.28位模/数转换器ADC0809/341

9.3.312位模/数转换器AD574/343

9.4A/D、D/A器件的选择/346

小结/348

习题/349第10章高速串行总线/350

10.1USB简介/350

10.2USB体系结构/353

10.3USB通信协议/357

10.3.1通信模型/357

10.3.2数据格式/358

10.3.3事务处理/360

10.3.4数据传输模式/362

10.4PC的USB应用及开发/363

10.4.1PDIUSBD12芯片特点/365

10.4.2PDIUSBD12芯片引脚/366

10.4.3PDIUSBD12的典型连接/367

10.4.4固件程序设计/367

10.4.5驱动程序设计/372

10.4.6应用程序设计/372

小结/374

习题/374

 

参考文献/375


作者介绍:

王让定,博士,宁波大学教授、博士生导师,浙江省高校中青年学科带头人,“计算机科学与技术”国家特色专业建设点负责人,浙江省高等学校省级教学团队负责人,宁波大学教学名师,校计算机科学与技术教学团队负责人。现兼任中国体视学学会理事,中国计算机学会开放系统专委会委员,中国电子学会通信学会多媒体信息安全专委会委员,浙江省高校计算机教学研究会副理事长,浙江省计算机应用与教育学会教育委员会副主任,浙江省物联网专业委员会副主任,浙江省高校计算机教学指导委员会委员,浙江省大学生软件设计竞赛组委会成员。主持了4项国家自然基金项目,获省科技进步奖2项、浙江省高校科研成果奖3项,获国家发明专利授权6项。在发表学术或教学研究论文80多篇,其中被SCI/EI/ISTP检索的论文有30多篇,主编国家“十一五”规划教材1部,国家“十二五”规划教材1部。


出版社信息:

暂无出版社相关信息,正在全力查找中!


书籍摘录:

第3章

80x86指令系统和寻址方式指令是计算机能接受的软件工作者命令的小工作单元,它终是由计算机内的电器元件状态来体现的,这一状态为译码器所识别,并经一定时间周期付诸实施,这种指令称为机器指令。一条机器指令应包含两部分内容: 一是要给出此指令要完成何种操作,这部分称为指令操作码;二是要给出参与操作的对象是什么,此部分称为操作数,在指令中可以直接给出操作数的值,或者操作数存放在何处,操作的结果应送往何处等信息。处理器可根据指令字中给出的地址信息求出存放操作数的地址——称为有效地址,然后对存放在有效地址中的操作数进行存取操作。指令中关于如何求出存放操作数有效地址的方法称为操作数的寻址方式。计算机按照指令给出的寻址方式求出操作数有效地址和存取操作数的过程称为寻址操作。计算机的指令系统就是指该计算机能够执行的全部指令的集合。本章首先介绍16位微处理器8086/8088的常用指令和寻址方式,在此基础上以80386为对象讲述32位微处理器的指令系统和寻址方式。对80x86的控制转移类指令、串操作与重复前缀指令、子程序调用与返回指令以及中断调用与返回指令的讲解将穿插在第4章的汇编语言程序设计以及第8章的中断和DMA技术中介绍,其目的就是为了使学习者更好地理解和应用这些指令。本章的主要内容如下: 8086指令系统概述。 8086的寻址方式和常用指令。 80386的寻址方式和指令系统。 80486/Pentium微处理器新增指令。3.18086指令系统概述〖1〗3.1.1数据类型计算机中的数是用二进制表示的,数的符号也是用二进制表示的。把一个数连同其符号在机器中的表示加以数值化称为机器数,实际上机器数是将符号“数字化”所得到的数。计算机执行指令过程中需要处理各种类型的机器数,可处理的数据类型有7种。1. 无符号二进制数无符号二进制数是指不带符号位的一个字节、字或双字的二进制数。2. 带符号二进制数带符号二进制数有正、负之分,均以补码形式表示。补码由符号位加数值两部分组成。带符号数的位表示符号位,位为0表示为正,位为1表示为负。正数的补码和原码相同,负数的补码是符号位保持不变(即为1),其余各位按位取反,再在末位加1。3. BCD码BCD码是用二进制数的形式表示的十进制数。计算机中BCD码有两种,分别是非压缩BCD码和压缩BCD码两种。前者用8位二进制数表示一位十进制数,那么一个字节能表示的十进制数的范围是0~9;后者用4位二进制数表示一位十进制数,那么一个字节能表示的十进制数的范围是0~99。例如,17的非压缩BCD码是0000000100000111B,即0107H;压缩BCD码是00010111B,即17H。4. 定点数和浮点数在计算机中,针对小数点的处理有两种表示方法,分别是定点数表示法和浮点数表示法。1) 定点数表示法定点数表示法就是小数点固定在某个位置上。在定点计算机中,一般将小数点定在位(即纯小数)或将小数点定在位(即纯整数)。2) 浮点数表示法浮点表示法就是小数点的位置不固定。浮点数在计算机中通常的表示形式为“2的正/负阶码次方×尾数”,其中阶码是一个正整数,尾数是一个小数,尾数的区间为[0.5,1],如果尾数不在此区间,则要进行规格化。规格化通过尾数左右移、阶码加减完成,其规则是: 尾数左移一次,阶码减1,尾数右移一次,阶码加1。5. 串数据计算机可以处理的串数据有以下几种: 位串,一串连续的二进制数。 字节串,一串连续的字节。 字串,一串连续的字。 双字串,一串连续的双字。6. ASCII码数据ASCII(American Standard Code for Information Interchange,美国信息交换标准码)是一种字符数据的常用表示方法。包括ASCII码字符、ASCII码数和ASCII控制符等。7. 指针类数据指针类数据包括近程指针和远程指针。前者为16位的偏移量,用于段内寻址、段内数据访问或转移;后者由16位段值和16位的偏移量组成,用于段间寻址、段间数据访问或段间转移。另外,在8086/8088处理机中,为了达到数据结构的灵活性和有效地使用内存,字数据不必定位于偶数地址,即允许不按2的倍数边界对齐。但是,对齐的字数据可以一次传送,而未对齐的字数据则需要两次传送。为了获得性能,一般将字操作对齐于偶地址。3.1.280x86指令的基本组成80x86的汇编指令由操作码和操作数两部分组成。操作码是指令的操作命令,操作数是指令的操作对象。汇编指令后要翻译成机器指令。1. 指令的操作码80x86的机器指令的操作码(OP)采用二进制代码表示本指令所执行的操作。在大多数指令的操作码中,常用某位指示图3.18086操作码格式某些具体操作信息。图3.1所示的8086操作码含有3个特征位,分别为W位、D位和S位。它们的含义如下:(1) W位是字操作标志位。当W=1时,表示当前指令进行字操作;当W=0时,表示当前指令进行字节操作。(2) D位是对目标操作数进行寄存器寻址的标志。对于双操作数指令(立即数指令和串操作指令除外),其中一个操作数必定由寄存器指出。这时,寄存器名通过后面的REG域指出,此外,要用D位指出寄存器所寻址的是源操作数还是目标操作数。如D=1,则寄存器所寻址的是目标操作数;如D=0,则寄存器所寻址的是源操作数。(3) S位是符号扩展位。一个8位补码可以扩展为16位补码。使所有高位等于低位字节的有效位(即符号位),这种扩展叫符号扩展,在加法指令、减法指令和比较指令中,S位和W位结合起来指出各种情况。例如,S=0,W=0时,为8位操作数;S=0,W=1时,为16位操作数。2. 机器指令格式80x86的机器指令为1~6B。一般用指令的个字节或者头两个字节表示指令的操作码和寻址方式,通常称为操作码域。操作码指出了执行这条指令时CPU要做什么操作,寻址方式则表示执行指令时所用的操作数的来源。图3.2给出了8086指令格式。图3.28086指令格式紧随在操作码域后的字节一般称操作数域。至于操作数域属于图3.2中的哪一种情况,要由指令前半部分的操作码和寻址方式确定。这里有几点需要指出:(1) 一条指令可以包含一个操作数,也可以包含一个以上的操作数。具有一个操作数的指令称为单操作数指令,单操作数指令中的操作数可能由指令本身提供,也可能由指令隐含地指出。(2) 若位移量或立即数为16位,那么在指令代码中,将低位字节放在前面,高位字节放在后面。(3) 80x86指令系统中大多数指令的操作码安排在个字节,但有几条指令是特殊的,其指令中的个字节不但包含操作码成分,而且还隐含地指出了寄存器名,从而整个指令只占一个字节,成为单字节指令。这些指令字节数少,执行速度快,用得也频繁。3. 指令的执行时间指令执行时间取决于时钟周期长短和执行指令所需要的时钟周期数。如果涉及内存操作,那么执行一条指令的时间为基本执行时间加上计算有效地址所需要的时间。8086的总线部件和执行部件是并行工作的,因此在计算指令的基本执行时间时都假定要执行的指令已经预先放在指令队列中,也就是说,没有计算取指时间。有些指令在执行过程中要多次访问内存,因此,访问内存的次数也是考虑指令执行总时间的重要因素。可见,执行一条指令所需的总时间为基本执行时间、计算有效地址的时间和为了读取操作数和存放操作结果需访问内存的时间之和。3.28086/ 8088的寻址方式和指令系统〖1〗3.2.18086/8088的寻址方式在计算机的存储器系统中存储着两类信息,一是数据,二是程序。这里所说的程序就是指令序列。8086/8088的寻址方式包括程序寻址方式和数据寻址方式。数据寻址方式是指获取指令所需的操作数或操作数地址的方式。程序的寻址方式是指在程序中出现转移和调用时的程序定位方式。1. 数据寻址方式数据寻址方式就是寻找参加运算的操作数的方式。80x86指令中所需的操作数来自以下3个方面。(1) 操作数包含在指令中。在取指令的同时,操作数也随之得到,这种操作数称为立即数。(2) 操作数包含在CPU的某个内部寄存器中,这种操作数称为寄存器操作数。(3) 操作数包含在存储器中,这种操作数称为存储器操作数。存储器操作数存放在内存单元中,在80x86微机系统中,任何内存单元的地址均由段基址和偏移地址(又称偏移量)组成,段基址由段寄存器提供,而偏移地址由以下4个基本部分组成。(1) 基址,8086/8088系统的基址寄存器为BX和BP。(2) 变址,8086/8088系统的变址寄存器为SI和DI。(3) 比例因子,采用1、2、4或8几种不同的比例因子。8086/8088系统中比例因子为1。(4) 位移量,即相对于某个存储单元的偏移量。这4个部分称为偏移地址的四元素。一般将这四元素按某种计算方法组合形成的偏移地址称为有效地址(Effective Address,EA)。它们的组合和计算方法为有效地址=基址 变址×比例因子 位移量根据80x86系统的存储器组织方式,指令中不能使用实际地址(即物理地址),而只使用逻辑地址或称为操作数的线性地址,因此在求得有效地址后,可由有效地址和段首址形成逻辑地址。这4种元素可优化组合出9种存储器寻址方式。图3.3给出这4种元素的优化组合的寻址计算方法。图3.38086/8088的操作数寻址方式1) 立即寻址,操作数为立即数8086/8088指令系统中,有一部分指令所用的8位或16位操作数由指令机器码提供,这种方式称为立即寻址方式,即操作数直接包含在指令机器码中,它紧跟在操作码的后面,与操作码一起放在代码区域中。例3.10AH,AL=7FHMOVAL,5H                     ;AX←5H立即寻址方式主要用于给寄存器或存储单元赋初值。因为操作数可以从指令中直接取得,不需要运行总线周期,所以立即数寻址方式的显著特点是执行速度快。2) 寄存器寻址,操作数为寄存器操作数寄存器寻址是指操作数包含在CPU内部的寄存器中。对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP,而对于8位操作数,寄存器可以为AH、AL、BH、BL、CH、CL、DH、DL。寄存器寻址的指令本身存放在存储器的代码段,而操作数则在CPU寄存器中。由于指令执行过程中不用访问存储器,因此执行速度很快。寄存器寻址可以进行16位操作数操作,也可进行8位操作数操作。例3.2MOVAX,BXMOVAH,AL3) 存储器寻址,操作数为存储器操作数(1) 直接寻址。直接寻址方式是在指令的操作码后面直接给出操作数的16位偏移地址,这个偏移地址也称有效地址(EA)。该有效地址与指令的操作码一起存放在内存的代码段,也是低8位在前,高8位在后。操作数隐含数据段操作,存放在内存的数据段(DS)区域中,在给定的16位有效地址的地方。例3.33000H×10H 2000H=32000H直接寻址一般多用于存取某个存储单元中的操作数,例如从一个存储单元取操作数,或者将一个操作数存入某个存储单元。(2) 寄存器间接寻址。寄存器间接寻址方式是指令中的操作数存放在存储器中,存储单元的有效地址由寄存器指出,这些寄存器可以是BX、BP、SI、DI之一,即有效地址EA=基址寄存器的内容或变址寄存器的内容,对寄存器指向的存储单元进行数据操作。这些用来存放存储器操作数偏移地址的寄存器称为地址指针。下面分别以BX、SI、DI进行寄存器间接寻址(BX、SI、DI作为地址指针)的方式与以BP进行寄存器间接寻址(BP作为地址指针)的方式为例进行说明。在以BX、SI、DI进行寄存器间接寻址时,隐含的数据段寄存器为DS;而在以BP进行寄存器间接寻址时,隐含的数据段寄存器为SS。例3.4DS×16 BXMOVBX,[SI]                             ;物理地址=DS×16 SIMOV[DI],DX                             ;物理地址=DS×16 DI例3.5SS×16 BP无论用BX、SI、DI或者BP作为间接寄存器,都允许段超越,即也可以使用上面所提到的约定情况以外的其他段寄存器。例3.6ES×16 BXMOVDS:[BP],DX                         ;物理地址=DS×16 BP(3) 相对寄存器寻址。相对寄存器寻址的有效地址EA=基址寄存器的内容或变址寄存器的内容±16位或8位位移量。以BX、SI、DI进行寄存器间接寻址(BX、SI、DI作为地址指针)的方式,隐含的段寄存器为数据段寄存器DS;而以BP进行寄存器间接寻址(BP作为地址指针)的方式,隐含的段寄存器为堆栈段寄存器SS。例3.7例3.8BX 08HMOVAX,[BX 100H]                   ;物理地址=DS×16 BX 100HMOVAL,[BP 08H]                     ;物理地址=SS×16 BP 08HMOV0200H[BP],AX                    ;物理地址=SS×16 BP 0200H(4) 基址、变址寻址。将基址寻址方式和变址寻址方式联合起来的寻址方式称为基址、变址寻址方式。有效地址EA=基址寄存器的内容 变址寄存器的内容。例3.9例3.10例3.111000H;转移地址在指令中给出CALL  1000H                               ;调用地址在指令中给出2) 段内间接寻址方式程序转移的地址存放在寄存器或存储单元中,这个寄存器或存储单元内容可用以上所述寄存器寻址或存储器寻址方式取得,所得到的转移有效地址用来更新IP的内容。由于此寻址方式仅修改IP的内容,所以只能在段内进行程序转移。例3.12TABLE]       ;转移地址由BP TABLE所指的存储单元给出3) 段间直接寻址方式这种寻址方式是在指令中直接给出16位的段基值和16位的偏移地址,用来更新当前的CS和IP的内容。例3.13〖KH2D]JMP   2500H:3600H            ;转移的段地址和偏移地址在指令中给出CALL  2600H:3800H            ;调用程序的段地址和偏移地址在指令中给出4) 段间间接寻址方式这种寻址方式是寻找指令中给出的存储器数据的地址,包括存放转移地址的偏移量和段地址。其低位字地址单元存放的是偏移地址,高位字地址单元中存放的是转移段基值。这样既更新了IP内容又更新了CS的内容,故称为段间间接寻址。例3.14表3.1段寄存器选择规定访 存 类 型默认段寄存器段超越前缀的可用性代码CS不可用PUSH、POP类代码SS不可用串操作的目标地址ES不可用以BP、SP间址的指令SS可用CS、DS、ES其他DS可用CS、SS、ES这种隐含选择规定可以被段超越运算符“:”改变。当在一条指令前面加上段超越运算符时,则由段超越运算符所指定的段寄存器取代默认的段寄存器。例3.15〖KH2D]MOVBX,ES:[DI];源操作数在ES指定的段中3.2.28086/8088的常用指令8086/8088的指令分为数据传送指令、算术运算指令、逻辑运算和移位指令、控制转移指令、串操作指令、程序控制指令和处理器控制指令等。本节主要介绍8086/8088常用的指令,对于控制转移指令、串操作指令、程序控制指令、I/O操作指令以及中断指令等将在后续章节中陆续讲解。1. 数据传送指令数据传送指令用于实现CPU的内部寄存器之间、CPU内部寄存器和存储器之间、CPU累加器AX或AL和I/O端口之间的数据传送,此类指令除了SAHF和POPF指令外均不影响标志寄存器的内容。需要注意的是,在数据传送指令中,源操作数和目标操作数的数据长度必须一致。1) MOV指令格式:MOV指令用于将一个操作数从存储器传送到寄存器,或从寄存器传送到存储器,或从寄存器传送到寄存器,也可以将一个立即数存入寄存器或存储单元,但不能用于存储器与存储器之间以及段寄存器之间的数据传送。MOV指令传送关系如图3.4所示。图3.4MOV指令的传送关系MOV指令有6种数据传输格式。(1) CPU的通用寄存器之间的数据传输。例3.16;相邻存储单元中(3) 立即数到通用寄存器的数据传输。例3.18〖KH2D]MOVAL,20H                 ;将立即数20H送到AL寄存器MOVSP,2000H               ;将立即数2000H送到SP寄存器(4) 通用寄存器和存储单元之间的数据传输。例3.19例3.20MOVES,[BX];BX寄存器所指内容传送到ESMOV[1000H],CS;将CS内容传送到地址为1000H所指的两个相邻存储器单元(6) 通用寄存器和段寄存器之间的数据传输。例3.21MOVAX,ES;将ES段地址传送到DS寄存器MOVDS,AX使用MOV指令时,必须注意以下几点: MOV指令可以传8位数据,也可以传16位数据,这取决于寄存器是8位还是16位,或立即数是8位还是16位。 MOV指令中的目标操作数和源操作数不能都是存储器操作数,即不允许用MOV实现两个存储单元间的数据传输。 不能用CS和IP作为目标操作数,即这两个寄存器的内容不能随意改变。 不允许在段寄存器之间传输数据,例如MOV DS,ES是错误的。 不允许用立即数作为目标操作数。 不能向段寄存器传送立即数。如果需要对段寄存器赋值,可以通过CPU的通用寄存器AX完成。例3.22MOVAX,1000H;将数据段首地址1000H通过AX传入DS寄存器MOVDS,AX2) 交换指令XCHG格式:→src功能: XCHG指令用于交换两个操作数。这条指令实际上起到了3条MOV指令的作用,指令中的两个操作数可以是两个寄存器操作数或一个寄存器与一个存储器操作数。交换指令可实现通用寄存器之间、通用寄存器与存储单元之间的数据(字节或字)交换。例3.23XCHGAL,BL;AL与BL寄存器的内容进行交换XCHGBX,CX;BX与CX寄存器的内容进行交换XCHGDS: [2200H],DX;DL寄存器与地址DS:2200H的内容进行交换;DH寄存器与地址DS:2201H的内容进行交换使用交换指令时应注意以下两点: 两个操作数不能同时为存储器操作数。 任一个操作数都不能使用段寄存器,也不能使用立即数。3) 取有效地址指令LEA格式: LEAr16,mem要求: r16为一个16位通用寄存器,mem为存储单元。功能: LEA指令的作用是将有效地址(在这里指地址偏移值)送通用寄存器,而不是将存储单元的内容送通用寄存器。例3.24LEABX,DS:1000H;将地址1000H送到BX,即(BX)=1000HLEABX,BUFFER;将存储变量BUFFER的变量地址传送到BXLEABX,[2728];将2728偏移地址送BXLEASP,[BP][DI];将[BP DI]寻址方式的偏移地址送SP在很多情况下,LEA指令可以用相应的MOV指令代替。例3.25LEABX,VARWORDMOVBX,OFFSET VARWORD这两条指令的执行效果是完全一样的。区别在于后者用伪指令OFFSET,由编译程序在编译时赋值;而前者在执行时赋值。注意: 两个操作数不能同时为存储器操作数。 任一个操作数都不能使用段寄存器,也不能使用立即数。4) 装入地址指令格式: LDS dest,src;将内存中连续4B内容送到DS和指定的通用寄存器LES dest,src;将内存中连续4B内容送到ES和指定的通用寄存器功能: LDS指令把src操作数所指的内存中连续4B单元内容的低16位数据存入dest指定的通用寄存器中,高16位存入DS中;LES指令把src操作数所指的内存中连续4B单元内容的低16位数据存入dest指定的通用寄存器中,高16位存入ES中。一个内存单元的逻辑地址用段基值和偏移量两个部分来描述,每个部分均为16位二进制数,即2B。因而一个内存单元的逻辑地址需要4B描述,这4B存放内存中,顺序为: 低2B为偏移量,高2B为段基值。因此,本指令可以看成是把内存中连续4个单元内存放的地址取出来,存入DS(或ES)和指定的通用寄存器中。注意: dest必须是通用寄存器之一,src必须是内存操作数。例3.26LDSDI,[2130H];将2130H和2131H单元的内容送DI;将2132H和2133H单元的内容送DS本例的操作如图3.5所示。图3.5LDS指令示意图例3.27EXDWORD DD 12345678HLDSSI,EXDWORD;指令执行后,将1234H送DS,5678H送SI5) 标志传送指令格式: LAHFSAHF功能: 标志传送指令有取标志指令LAHF和存标志指令SAHF,LAHF指令用于将标志寄存器的低8位送入AH,SAHF指令用于将AH的内容送入标志寄存器的低8位。6) 表转换指令XLAT格式: XLAT labelXLAT;AL←DS:((BX) (AL))功能: XLAT指令以转换表中的一个字节来替换AL寄存器中的内容,可用于码的转换。其中DS:BX指向转换表的首址,转换前AL内容为序号,转换后AL内容为对应的码。例如,将ASCII码转换为EBCDIC码,也可用于代码加密。例3.28将AL中的一个数字字符的ASCII码,经变换加密后从42H端口输出。表3.2给出了密码转换表。表3.2密码转换表明文码加密码明文码加密码0'5'5'6'1'7'6'8'2'9'7'0'3'1'8'2'4'3'9'4'有关程序段如下:AL,'0';将AL中ASCII字符转换成表XMIT_TABLE中的序号LDSBX,TAB_POINT    ;将表头地址指针送DS:BXXLATXMIT_TABLE       ;查转换表,将对应的加密码放入ALOUT42H,AL           ;从42H端口输出加密后的ASCII码TAB_POINTDD XMIT_TABLEXMIT_TABLE DB '5791368024'表3.2是程序中所用的转换表,若原AL的内容为字符'3',则执行此段程序后,AL中的内容为字符'1'。7) 堆栈操作指令堆栈的特性在第2章已经详细介绍过。堆栈是向下生成的,也就是说,压栈操作是先将SP减2,再将数据压入SS:SP指向的单元;弹出操作则先将SS:SP指向的数据弹出,再将SP加2。格式:PUSHsrcPOP dest功能: PUSH指令用于压入存储器操作数,寄存器操作数或立即数。注意,src和dest为16位的寄存器或存储单元,图3.6 给出了进栈和出栈操作示意图。图3.6进栈和出栈操作示意图例3.29PUSHAX;将AX的内容压入堆栈PUSH[2000H];将DS段逻辑地址为2000H的内容压入堆栈POP指令与PUSH指令相反,将栈顶的数据弹出到通用寄存器或存储器中。例3.30POPAX;将栈顶的内容弹出到AX寄存器POPM_ADD;将栈顶的内容弹出到M_ADD指定的存储器中注意: PUSH和POP指令只允许按字访问堆栈,即两类指令的操作数必须是16位寄存器或存储单元的操作数。 CS不能作为目标操作数。8) 符号扩展指令(1) 字节扩展指令。格式: CBW功能: 将AL中的单字节数的符号扩展到AH中。若AX<80H,则0→AH;若AL≥80H,则FFH→AH。例3.3101101111BCBW                              ;AH=00000000B,AL内容不变 MOVAL,0AFH                   ;AL=10101111BCBW                              ;AH=11111111B,AL内容不变(2) 字扩展双字指令。格式:CWD功能: 将AX中的单字节数的符号扩展到DX中。若AX<8000H,则0→DX;若AL≥8000H,则FFFFH→DX。例3.324F0AHCWD                              ;DX=0000H,AX内容不变MOVAX,0EF0AH                 ;AX=0EF0AH;CWD                              ;DX=0FFFFH,AX内容不变注意: 这两条符号扩展指令在带符号数的乘法和除法运算中十分有用,对标志位没有影响。2. 算术运算指令8086的算术运算指令包括加、减、乘、除4种基本运算指令,以及为适应进行BCD码十进制运算而设置的各种校正指令,共20条。在基本算术运算指令中,除加1、减1指令外,均为双操作数指令。双操作数指令的两个操作数必须有一个在寄存器中,双操作数指令的目标操作数不允许使用立即数,单操作数指令也不允许使用立即数。算术运算指令涉及的操作数从数据形式来讲有两种,即8位的操作数和16位的操作数,这些操作数可分为两类,即无符号数和带符号数。无符号数把所有的数位都当成数值位,因此8位无符号数表示的范围为0~255(或0~0FFH);16位无符号数表示的范围为0~65 535(或0~0FFFFH)。带符号数的位作为符号位: 0表示正号,1表示负号。计算机中的带符号数通常用补码表示,这样,8位带符号数表示的范围-128~ 127(或80H~7FH);16位带符号数表示的范围为-32 768~ 32 767(8000H~7FFFH)。1) 加法类指令(1) 不带进位的加法指令。格式:(src)功能: ADD指令用来对源操作数和目标操作数字节或字相加,结果放在目标操作数中。说明: ADD指令不允许两个存储器单元内容相加,两个操作数不能同时为存储器操作数。 ADD指令也不允许在两个段寄存器之间相加。 对标志位有影响,主要是CF、ZF、OF、SF标志位。例3.33(BX)例3.34ADDAX,0F0F0H设指令执行前(AX)=5463H,执行后,将得到结果(AX)=4553H,且CF=1,ZF=0,SF=0,OF=0。(AX)=0101010001100011 1111000011110000

1←0100010101010011→AXCF(2) 带进位标志的加法指令。格式:(src) (CF)功能: ADC指令和ADD指令的功能类似,区别在于ADC在完成两个字或两个字节数相加的同时,还要考虑进位标志CF的值,若进位位CF为1,则将结果加1。注意: src(源操作数)和 dest(目标操作数)不能同时为存储单元。段寄存器不能进行算术运算。例3.35(BX) (CF)ADCAL,4                       ;AL←(AL) 4 (CF)ADCEXTMEM,AX                   ;EXTMEM←(EXTMEM) (AX) (CF)ADCEXTMEM,23                      ;EXTMEM←(EXTMEM) 23 (CF)例3.36有两个4字节数分别放在FIRST和SECOND开始的存储区,低字节在低地址处,编写程序将两数相加,并将结果存入FIRST开始的存储区。;个数的低16位→AXADD  AX,SECOND           ;两数的低16位相加→AXMOV  FIRST,AX             ;低16位相加结果存入FIRST及FIRST 1单元MOV  AX,FIRST 2           ;个数的高16位→AXADC  AX,SECOND 2         ;两数的高16位连同低16位进位相加→AXMOV  FIRST 2,AX           ;高16位相加的结果存入FIRST 2及FIRST 3单元(3) 加1指令。格式:1要求: reg为8位或16位通用寄存器,mem为8位或16位存储单元。功能: 将源操作数加1,再送回该操作数。这条指令一般用于循环程序的指针修改,INC指令只有一个操作数。说明: 操作数可以是寄存器或存储单元,但不能为立即数。 INC指令影响标志位AF、OF、PF、SF和ZF,但不影响CF位。 INC指令将操作数视为无符号数。例3.371INCBX                             ;BX←(BX) 1INCBYTE PTR MEMLOC                ;MEMLOC←(MEMLOC) 12) 减法类指令(1) 不带借位的减法指令。格式:(src)功能: 将目标操作数减去源操作数,结果送到目标操作数,并根据结果设置标志。说明: SUB指令不允许两个存储器单元内容相减,两个操作数不能同时为存储器操作数。 SUB指令也不允许在两个段寄存器之间相减。 对标志位有影响,主要影响CF、ZF、OF、SF标志位。例3.38(BX)SUBSI,DS:[100H]                  ;SI的内容减去地址DS:[100H]和DS:[101H]所指内容→SISUBAL,30H                       ;AL←(AL)-30HSUBDS:[20H],1000H                ;地址DS:[20H]所指的字单元的16位;减去立即数1000H→DS:[20H]字单元SUBSS:[1000H 2],CL               ;SS段偏移地址1000H 2所指的字节单元;减去CL→1000H 2字节单元(2) 带借位的减法指令。格式:SBBdest,src            ;dest←(dest)-(src)-(CF)SBB指令与SUB指令的功能相似,区别是SBB在完成字节或字相减的同时还要减去借位CF。说明: src(源操作数)和dest(目标操作数)不能同时为存储单元。 段寄存器不能进行算术运算。例3.39(BX)-(CF)SBBAX,2010H                       ;(AX)←(AX)-2010H-(CF)(3) 减1指令。格式:1减1指令只有一个操作数。操作数可以为寄存器或者存储单元,不能为立即数。该指令实现将操作数中的内容减1,又叫减量指令。例3.401DECDS:[100H 2]                 ;将数据段DS偏移地址100H 2所指单元内容减1,结果送回该单元注意: DEC指令和INC指令一样,执行后对CF不产生影响。(4) 取补指令。格式:(reg)/(mem)功能: 将操作数取补后送回源操作数,即将操作数连同符号逐位取反,然后在末位加1,这适用于操作数在机器内用补码表示的场合。NEG指令的操作数可以是8位或16位通用寄存器和存储器操作数,不能为立即数。例3.4100000001BNEGAL                             ;将AL中的数取补,AL=11111111BNEGWORD PTR [SI 1]                ;将SI 1、SI 2单元中的内容取补注意: 因为执行NEG指令时使用0减去操作数,只有操作数为0时才使CF=0,否则使CF=1。如果操作数的值为-128(80H)或-32 768(8000H),执行取补指令之后结果没有变化,即取补后送回的新值仍为80H或者8000H,但此时的溢出标志OF=1。(5) 比较指令。格式:CMPdest,src;(dest)-(src)功能: 将目标操作数与源操作数相减,不送回结果,只根据结果置标志位。例3.42CMPAX,BX                          ;将AX-BX后,置标志位CMPAL,20H                         ;将AX-20H后,置标志位说明: 本指令通过比较(相减)结果置标志位,表示两个操作数的关系。比较以下几种情况,以CMP A,B为例说明。① 判断两个操作数是否相等。可根据ZF标志位判断: 若ZF=1,说明A=B;若ZF=0,说明A≠B。② 判断两个操作数的大小。 判断两个无符号操作数的大小。可根据CF标志位判断: 若CF=1,说明A<B;若CF=0,说明A≥B。 判断两个带符号操作数的大小。可根据SF及OF标志判断: 若SFOF=1,即SF与OF不同时,说明A<B;若SFOF=0,即SF与OF相同时,则A≥B。例3.435则转ABC,否则顺序执行ABC:3) 乘法指令(1) 无符号数乘法指令。格式: MULreg/mem;dest←隐含被乘数AL/AX乘以乘数reg/mem功能: 完成两个不带符号的8位或16位二进制数的乘法计算。乘积存放在AH、AL或DX、AX中。例3.45MOVAL,NUMBER1MULNUMBER2;将AL的内容乘以NUMBER2,乘积存放在AX中例3.46MOVAX,NUMBER1MULNUMBER2;将AX的内容乘以NUMBER2,乘积的高16位;放在DX中,低16位放在AX中(2) 带符号乘法指令。格式: IMULreg/mem功能: 完成两个带符号的8位或16位二进制数乘法计算。乘积存放在AH、AL或DX、AX中。例3.47MOVAX,1234HIMULNUMBER;乘积高16位放在DX中,低16位放在AX中4) 除法指令(1) 无符号数除法指令。格式: DIVsrc;隐含被除数AX/DX或AX除以除数(src)功能: 当用DIV指令进行无符号数的字或字节相除时,所得的商和余数均为无符号数,分别放在AL和AH中;若进行无符号数的双字或字相除时,所得的商和余数也是无符号数,分别放在AX和DX中。注意: 除法有一种特殊情况。例如被除数为1000,放在AX中,除以2,商为500,应放在AL中,余数为0,应放在AH中。此时500超过了AL 的范围256,会产生0号中断。例3.48MOVAX,NUMBERDIVDIVSR;商在AL中,余数在AH中(2) 带符号除法指令。格式:IDIVsrc功能: IDIV指令用于两个带符号数相除,其功能和对操作数长度的要求与DIV指令类似,本指令执行时,将被除数、除数都作为带符号数,其相除操作和DIV相同。


在线阅读/听书/购买/PDF下载地址:


原文赏析:

暂无原文赏析,正在全力查找中!


其它内容:

编辑推荐

本书为普通高等教育“十二五”*规划教材,普通高等教育“十一五”*规划教材,是汇编语言与接口技术经典教材,内容全面,特色突出,被多所高校用作教材。本书共10章,以16位微处理器8088/8086为主线,介绍微处理器的结构、工作原理、指令系统等,同时兼顾32位以上微处理器80386、80486以及Pentium系列微处理器的相关内容。汇编语言以MASM 6.0为主,同时介绍了与MASM 5.X的区别,详细讲解了基于80x86的汇编程序设计方法。书中详细介绍了传统的接口技术,如并行、串行、定时、DMA、中断、模/数及数/模等接口技术。考虑到信息类相关专业学生的学习需求,本书专门增加了一章介绍存储器技术。第10章介绍*的高速串行接口USB接口。本书将微机原理、汇编语言、微机接口技术有机地融为一体,既适合课堂教学,又能紧跟*技术,拓宽学生的知识面。本书条理清楚,深入浅出,有丰富的实例,便于自学。本书可以作为高等学校本科信息类相关专业和计算机专业学生的教材或参考书,也可以供广大工程技术人员参考。


书摘插图


媒体评论

评论


前言

前言

微机原理、汇编语言和接口技术是各个高等学校计算机专业或信息类专业学生的专业基础课程。汇编语言的显著特点是可以直接控制硬件并充分发挥计算机硬件的功能,对于编写高性能系统软件和应用软件具有不可忽视的作用,微机接口技术则侧重计算机硬件的结构和I/O系统的组成。随着高校教学改革的深入,将汇编语言与微机接口技术结合起来,作为一门计算机基础专业课程的教学方法已经为许多高校采用。为了满足在新形势下计算机与信息类专业课程建设和教学内容改革的需求,作者在多年汇编语言、微机接口技术教学实践的基础上编写了本教材,将微机原理、汇编语言程序设计、微机接口技术融为一体,比较完整地介绍了微型计算机技术,适合更多读者的需求。在前3版教材的基础上,本书内容进行了很大的调整和改进,主要在以下几个方面。(1) 第1章作为全书的概括和汇编语言与接口技术的基础,涵盖了基本知识的支撑要点,如微型计算机的概念、微机系统总线等,使读者对微型计算机的整体结构有一个完整的认识。另外,把第3版教材中接口技术的概念、输入输出传输控制方式等接口基础知识分离出来单独作为第6章,这样使知识结构更加合理。(2) 第2章从8088/8086 CPU入手,首先详细分析了16位微处理器的功能结构、寄存器组、工作方式、总线操作及时序等。之后作为知识的提升,介绍了32位以上微处理器的结构、寄存器组等相应的知识点。这样修改使教材层次分明,由浅入深,也符合读者的知识结构构成规律。另外增加了Pentium系列微处理器及多核微处理器的发展概况。(3) 第3章和第4章是汇编语言程序设计部分。考虑到从8086到80386以上至Pentium 4,只有16位到32位的区别,其80%以上的指令完全相同,因此,本书以16位微处理器的指令系统为基础,扩展到32位微处理器汇编指令。另外,在知识点的组织上,把指令系统的讲解融合在汇编语言编程设计中,这样避免了单独讲解大量指令的枯燥,也使汇编语言程序设计的讲解更源自基础。例如,把分支结构程序设计和条件判断指令放在一起讲解,使知识紧密衔接,使读者学习循序渐进。另外,为了满足实际需要,在第4章增加了汇编语言与高级语言混合编程的内容。(4) 删减了第3版的软件接口技术一章,把本章中关于DOS和BIOS的接口调用的内容作为第4章中的一节内容,保证了内容的完整。(5) 修改了第5章存储器技术的部分内容。对于不同专业的学生,任课教师可以选择本章的有关内容讲解。(6) 修改了第10章的内容,在重点介绍USB接口概念和基本方法的基础上,强化了USB开发技术的应用。(7) 在第7~9章增加更多的工程应用实例,使读者更接近实际应用,体现教材的实用性。(8) 修改了前3版教材中难理解的概念,用更通俗易懂的语言描述。修正了前3版教材中已经发现的疏漏。全书共10章,第1章和第2章是理论基础部分,内容包括微型计算机概述,接口技术及数据传输控制方式、系统总线、80x86微处理器原理。第3章和第4章是汇编语言部分,内容主要包括80x86的指令系统、寻址方式、汇编语言程序设计。第5章主要介绍存储器的基本概念,存储器基本单元的构建,由存储单元构成存储阵列进而构成存储器的方法,以及存储器容量的扩展方法,并介绍了Cache和虚拟存储技术。第6章是输入输出接口及数据传输控制方式,主要介绍接口的概念、接口技术基础知识以及CPU控制数据传输的控制方式。第7章是串并行接口技术,主要内容包括定时/计数器、串并行接口的基本原理及实际应用。第8章是中断和DMA技术,主要内容包括中断和DMA的原理及中断控制器和DMA控制器及其应用。第9章是模拟接口技术,主要包括A/D和D/A转换技术及典型的芯片应用。第10章是高速串行总线,介绍了的高速串行接口USB技术。本书第1版由王让定、陈金儿、叶富乐、史旭华共同编写,其中第1、2章由史旭华执笔,第3、4章由叶富乐执笔,第5章由王让定执笔,其余各章由陈金儿执笔,王让定负责全书的统稿。本书第2版的修订由参加课程建设的朱莹执笔,王让定负责全书的统稿。本书第3版的修订又加入了一线教师石守东和钱江波两位老师的辛勤工作。通过几年的教学实践,根据国内相关教师的建议,在第1版、第2版和第3版的基础上,在本书作者和相关老师的共同参与下,由王让定和朱莹执笔全面修订了本书内容。王让定负责全书的统稿。本书的出版凝聚了许多同行的智慧和心血,这里非常感谢课程建设前期付出心血的陈金儿、叶富乐和史旭华老师,感谢清华大学出版社张民编辑。本书的出版得到了宁波大学计算机科学与技术国家特色专业的支持,得到了浙江省高校重点教材建设项目的支持,得到了浙江省“十二五”“十三五”特色专业建设的支持,也得到了宁波市服务型重点建设专业的支持,在此一并表示感谢。本书配有相应的教学电子资源,读者可登录清华大学出版社网站下载。另外,作者为第4版教材编写了配套的《汇编语言与接口技术(第4版)知识精要与实践》。由于计算机技术的飞速发展,新的理论和技术层出不穷,本书难以囊括计算机技术的发展变化。同时,书中难免有不足和不妥之处,恳请同行和读者不吝批评指正。欢迎读者,尤其是使用本书的教师和学生,共同探讨相关教学内容改革、教材内容建设以及教学方法等问题。

  作者2016年11月



书籍真实打分

  • 故事情节:5分

  • 人物塑造:9分

  • 主题深度:7分

  • 文字风格:3分

  • 语言运用:6分

  • 文笔流畅:8分

  • 思想传递:6分

  • 知识深度:9分

  • 知识广度:7分

  • 实用性:5分

  • 章节划分:7分

  • 结构布局:9分

  • 新颖与独特:3分

  • 情感共鸣:3分

  • 引人入胜:5分

  • 现实相关:7分

  • 沉浸感:5分

  • 事实准确性:8分

  • 文化贡献:8分


网站评分

  • 书籍多样性:7分

  • 书籍信息完全性:5分

  • 网站更新速度:4分

  • 使用便利性:9分

  • 书籍清晰度:8分

  • 书籍格式兼容性:3分

  • 是否包含广告:7分

  • 加载速度:8分

  • 安全性:7分

  • 稳定性:6分

  • 搜索功能:4分

  • 下载便捷性:5分


下载点评

  • 四星好评(199+)
  • 无漏页(642+)
  • 经典(441+)
  • 服务好(463+)
  • 二星好评(211+)
  • azw3(673+)
  • 差评(457+)
  • 品质不错(244+)
  • 下载速度快(560+)
  • 字体合适(480+)

下载评价

  • 网友 国***芳: ( 2024-12-20 14:09:28 )

    五星好评

  • 网友 师***怀: ( 2025-01-08 01:19:54 )

    好是好,要是能免费下就好了

  • 网友 堵***格: ( 2025-01-10 17:16:29 )

    OK,还可以

  • 网友 堵***洁: ( 2024-12-25 05:56:42 )

    好用,支持

  • 网友 訾***晴: ( 2025-01-17 22:38:54 )

    挺好的,书籍丰富

  • 网友 薛***玉: ( 2025-01-04 20:08:24 )

    就是我想要的!!!

  • 网友 谢***灵: ( 2025-01-10 18:27:24 )

    推荐,啥格式都有

  • 网友 敖***菡: ( 2025-01-18 03:56:55 )

    是个好网站,很便捷

  • 网友 习***蓉: ( 2025-01-12 07:53:51 )

    品相完美

  • 网友 孔***旋: ( 2024-12-21 01:51:55 )

    很好。顶一个希望越来越好,一直支持。

  • 网友 苍***如: ( 2025-01-03 03:19:45 )

    什么格式都有的呀。

  • 网友 潘***丽: ( 2025-01-07 00:49:24 )

    这里能在线转化,直接选择一款就可以了,用他这个转很方便的

  • 网友 曾***玉: ( 2025-01-13 14:32:08 )

    直接选择epub/azw3/mobi就可以了,然后导入微信读书,体验百分百!!!

  • 网友 孙***美: ( 2024-12-25 06:30:33 )

    加油!支持一下!不错,好用。大家可以去试一下哦

  • 网友 詹***萍: ( 2025-01-10 13:27:20 )

    好评的,这是自己一直选择的下载书的网站

  • 网友 步***青: ( 2024-12-24 11:32:12 )

    。。。。。好


随机推荐