图书介绍

汇编语言程序设计【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

汇编语言程序设计
  • (美)Richard Blum著;马朝晖等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111175328
  • 出版时间:2006
  • 标注页数:409页
  • 文件大小:80MB
  • 文件页数:424页
  • 主题词:汇编语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

汇编语言程序设计PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

前言1

第一部分 汇编语言程序设计环境基础第1章 什么是汇编语言1

1.1 处理器指令1

1.1.1 指令码处理1

目录1

1.1.2 指令码格式2

1.2 高级语言5

1.2.1 高级语言的种类5

1.2.2 高级语言的特性7

1.3.1 操作码助记符8

1.3 汇编语言8

1.3.2 定义数据9

1.3.3 命令11

1.4 小结11

第2章 IA-32平台13

2.1 IA-32处理器的核心部分13

2.1.1 控制单元14

2.1.2 执行单元18

2.1.3 寄存器19

2.1.4 标志21

2.2.1 x87浮点单元23

2.2 IA-32的高级特性23

2.2.2 多媒体扩展24

2.2.3 流化SIMD扩展24

2.2.4 超线程25

2.3 IA-32处理器系列25

2.3.1 Intel处理器25

2.3.2 非Intel处理器26

2.4 小结27

第3章 相关的工具29

3.1 开发工具29

3.1.1 汇编器29

3.1.3 调试器31

3.1.2 连接器31

3.1.4 编译器32

3.1.5 目标代码反汇编器32

3.1.6 简档器33

3.2 GNU汇编器33

3.2.1 安装汇编器33

3.2.2 使用汇编器35

3.2.3 关于操作码语法36

3.3 GNU连接器37

3.4 GNU编译器39

3.4.1 下载和安装gcc39

3.4.2 使用gcc40

3.5 GNU调试器程序42

3.5.1 下载和安装gdb42

3.5.2 使用gdb42

3.6 KDE调试器44

3.6.1 下载和安装kdbg44

3.6.2 使用kdbg45

3.7 GNU objdump程序46

3.7.1 使用objdump46

3.7.2 objdump范例47

3.8.1 使用简档器48

3.8 GNU简档器程序48

3.8.2 简档范例50

3.9 完整的汇编开发系统51

3.9.1 Linux基础51

3.9.2 下载和运行MEPIS52

3.9.3 新的开发系统53

3.10 小结53

第4章 汇编语言程序范例55

4.1 程序的组成55

4.1.1 定义段55

4.1.2 定义起始点55

4.2.1 CPUID指令56

4.2 创建简单程序56

4.2.2 范例程序58

4.2.3 构建可执行程序60

4.2.4 运行可执行程序60

4.2.5 使用编译器进行汇编60

4.3 调试程序61

4.4 在汇编语言中使用C库函数65

4.4.1 使用printf66

4.4.2 连接C库函数67

4.5 小结68

5.1 定义数据元素71

5.1.1 数据段71

第5章 传送数据71

第二部分 汇编语言程序设计基础71

5.1.2 定义静态符号73

5.1.3 bss段73

5.2 传送数据元素75

5.2.1 MOV指令格式75

5.2.2 把立即数传送到寄存器和内存76

5.2.3 在寄存器之间传送数据77

5.2.4 在内存和寄存器之间传送数据77

5.3 条件传送指令83

5.3.1 CMOV指令83

5.3.2 使用CMOV指令85

5.4 交换数据86

5.4.1 数据交换指令87

5.4.2 使用数据交换指令91

5.5 堆栈93

5.5.1 堆栈如何工作93

5.5.2 压入和弹出数据94

5.5.3 压入和弹出所有寄存器96

5.5.4 手动使用ESP和EBP寄存器97

5.6 优化内存访问97

5.7 小结98

6.1 指令指针99

第6章 控制执行流程99

6.2 无条件分支100

6.2.1 跳转100

6.2.2 调用103

6.2.3 中断106

6.3 条件分支106

6.3.1 条件跳转指令106

6.3.2 比较指令108

6.3.3 使用标志位的范例109

6.4 循环112

6.4.1 循环指令112

6.4.3 防止LOOP灾难113

6.4.2 循环范例113

6.5 模仿高级条件分支114

6.5.1 if语句115

6.5.2 for循环118

6.6 优化分支指令120

6.6.1 分支预测120

6.6.2 优化技巧122

6.7 小结124

第7章 使用数字126

7.1 数字数据类型126

7.2.1 标准整数长度127

7.2 整数127

7.2.2 无符号整数128

7.2.3 带符号整数129

7.2.4 使用带符号整数131

7.2.5 扩展整数131

7.2.6 在GNU汇编器中定义整数134

7.3 SIMD整数135

7.3.1 MMX整数136

7.3.2 传送MMX整数136

7.3.3 SSE整数137

7.3.4 传送SSE整数138

7.4 二进制编码的十进制139

7.4.1 BCD是什么140

7.4.2 FPU BCD值140

7.4.3 传送BCD值141

7.5 浮点数142

7.5.1 浮点数是什么143

7.5.2 标准浮点数据类型144

7.5.3 IA-32浮点值146

7.5.4 在GNU汇编器中定义浮点值146

7.5.5 传送浮点值146

7.5.6 使用预置的浮点值148

7.5.7 SSE浮点数据类型149

7.5.8 传送SSE浮点值150

7.6 转换153

7.6.1 转换指令154

7.6.2 转换范例154

7.7 小结155

第8章 基本数学功能157

8.1 整数运算157

8.1.1 加法157

8.1.2 减法165

8.1.3 递增和递减169

8.1.4 乘法169

8.1.5 除法173

8.2 移位指令175

8.2.1 移位乘法175

8.2.2 移位除法177

8.2.3 循环移位178

8.3 十进制运算178

8.3.1 不打包BCD的运算178

8.3.2 打包BCD的运算180

8.4 逻辑操作181

8.4.1 布尔逻辑182

8.4.2 位测试182

8.5 小结183

第9章 高级数学功能185

9.1 FPU环境185

9.1.1 FPU寄存器堆栈185

9.1.2 FPU状态、控制和标记寄存器185

9.1.3 使用FPU堆栈190

9.2 基本浮点运算193

9.3 高级浮点运算196

9.3.1 浮点功能196

9.3.2 部分余数199

9.3.3 三角函数201

9.3.4 对数函数203

9.4.1 FCOM指令系列205

9.4 浮点条件分支205

9.4.2 FCOMI指令系列207

9.4.3 FCMOV指令系列208

9.5 保存和恢复FPU状态209

9.5.1 保存和恢复FPU环境209

9.5.2 保存和恢复FPU状态210

9.6 等待和非等待指令213

9.7 优化浮点运算213

9.8 小结214

10.1 传送字符串216

10.1.1 MOVS指令216

第10章 处理字符串216

10.1.2 REP前缀220

10.1.3 其他REP指令224

10.2 存储和加载字符串225

10.2.1 LODS指令225

10.2.2 STOS指令225

10.2.3 构建自己的字符串函数226

10.3 比较字符串227

10.3.1 CMPS指令228

10.3.2 CMPS和REP一起使用229

10.3.3 字符串不等230

10.4.1 SCAS指令232

10.4 扫描字符串232

10.4.2 搜索多个字符233

10.4.3 计算字符串长度235

10.5 小结236

第11章 使用函数237

11.1 定义函数237

11.2 汇编函数238

11.2.1 编写函数239

11.2.2 访问函数240

11.2.3 函数的放置242

11.2.4 使用寄存器242

11.2.5 使用全局数据243

11.3 按照C样式传递数据值244

11.3.1 回顾堆栈244

11.3.2 在堆栈之中传递函数参数244

11.3.3 函数开头和结尾246

11.3.4 定义局部函数数据246

11.3.5 清空堆栈247

11.3.6 范例248

11.3.7 在操作之中监视堆栈249

11.4 使用独立的函数文件252

11.4.1 创建独立的函数文件252

11.4.2 创建可执行文件253

11.4.3 调试独立的函数文件254

11.5 使用命令行参数255

11.5.1 程序剖析255

11.5.2 分析堆栈255

11.5.3 查看命令行参数257

11.5.4 查看环境变量258

11.5.5 使用命令行参数的范例259

11.6 小结261

12.1 Linux内核262

12.1.1 内核组成262

第12章 使用Linux系统调用262

12.1.2 Linux内核版本267

12.2 系统调用268

12.2.1 查找系统调用268

12.2.2 查找系统调用定义269

12.2.3 常用系统调用270

12.3 使用系统调用271

12.4 复杂的系统调用返回值275

12.4.1 sysinfo系统调用276

12.4.2 使用返回结构277

12.5 跟踪系统调用278

12.5.1 strace程序278

12.4.3 查看结果278

12.5.2 高级strace参数279

12.5.3 监视程序系统调用280

12.5.4 附加到正在运行的程序282

12.6 系统调用和C库284

12.6.1 C库284

12.6.2 跟踪C函数285

12.6.3 系统调用和C库的比较287

12.7 小结287

第13章 使用内联汇编289

13.1 什么是内联汇编289

第三部分 高级汇编语言技术289

13.2 基本的内联汇编代码292

13.2.1 asm格式292

13.2.2 使用全局C变量294

13.2.3 使用volatile修饰符296

13.2.4 使用替换的关键字296

13.3 扩展asm296

13.3.1 扩展asm格式296

13.3.2 指定输入值和输出值297

13.3.3 使用寄存器298

13.3.4 使用占位符299

13.3.5 引用占位符301

13.3.6 替换的占位符302

13.3.7 改动的寄存器列表303

13.3.8 使用内存位置304

13.3.9 使用浮点值305

13.3.10 处理跳转306

13.4 使用内联汇编代码308

13.4.1 什么是宏308

13.4.2 C宏函数309

13.4.3 创建内联汇编宏函数310

13.5 小结311

第14章 调用汇编库312

14.1 创建汇编函数312

14.2 编译C和汇编程序313

14.2.1 编译汇编源代码文件314

14.2.2 使用汇编目标代码文件314

14.2.3 可执行文件315

14.3 在C程序中使用汇编函数317

14.3.1 使用整数返回值317

14.3.2 使用字符串返回值318

14.3.3 使用浮点返回值321

14.3.4 使用多个输入值322

14.3.5 使用混合数据类型的输入值323

14.4 在C++程序中使用汇编函数327

14.5.2 ar命令328

14.5 创建静态库328

14.5.1 什么是静态库328

14.5.3 创建静态库文件329

14.5.4 编译静态库331

14.6 使用共享库331

14.6.1 什么是共享库331

14.6.2 创建共享库332

14.6.3 编译共享库332

14.6.4 运行使用共享库的程序333

14.7 调试汇编函数334

14.7.1 调试C程序334

14.7.2 调试汇编函数336

14.8 小结337

第15章 优化例程338

15.1 优化编译器代码338

15.1.1 编译器优化级别1338

15.1.2 编译器优化级别2339

15.1.3 编译器优化级别3341

15.2 创建优化的代码341

15.2.1 生成汇编语言代码341

15.2.2 查看优化的代码344

15.3 优化技巧345

15.3.1 优化运算345

15.2.3 重新编译优化的代码345

15.3.2 优化变量348

15.3.3 优化循环352

15.3.4 优化条件分支356

15.3.5 通用子表达式消除361

15.4 小结363

第16章 使用文件365

16.1 文件处理顺序365

16.2 打开和关闭文件366

16.2.1 访问类型366

16.2.2 UNIX权限367

16.2.3 打开文件代码368

16.2.4 打开错误返回代码369

16.2.5 关闭文件370

16.3 写入文件370

16.3.1 简单的写入范例370

16.3.2 改变文件访问模式372

16.3.3 处理文件错误372

16.4 读取文件373

16.4.1 简单的读取范例374

16.4.2 更加复杂的读取范例375

16.5 读取、处理和写入数据377

16.6.1 什么是内存映射文件379

16.6 内存映射文件379

16.6.2 mmap系统调用380

16.6.3 mmap汇编语言格式381

16.6.4 mmap范例383

16.7 小结387

第17章 使用高级IA-32特性388

17.1 SIMD简介388

17.1.1 MMX388

17.1.2 SSE389

17.1.3 SSE2389

17.2.1 检测支持390

17.2 检测支持的SIMD操作390

17.2.2 SIMD特性程序391

17.3 使用MMX指令392

17.3.1 加载和获得打包的整数值393

17.3.2 执行MMX操作393

17.4 使用SSE指令400

17.4.1 传送数据400

17.4.2 处理数据401

17.5 使用SSE2指令405

17.5.1 传送数据405

17.5.2 处理数据406

17.6 SSE3指令408

17.7 小结409

热门推荐