图书介绍

汇编语言的编程艺术PDF|Epub|txt|kindle电子书版本下载

汇编语言的编程艺术
  • (美)海德著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302263739
  • 出版时间:2011
  • 标注页数:582页
  • 文件大小:128MB
  • 文件页数:592页
  • 主题词:汇编语言-程序设计

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 HLA程序的结构1

1.2运行第一个HLA程序3

1.3基本的HLA数据声明4

1.4布尔值6

1.5字符值6

1.6 Intel 80x86 CPU系列简介6

1.7存储子系统9

1.8基本的机器指令11

1.9基本的HLA控制结构14

1.9.1 HLA语句中的布尔表达式14

1.9.2 HLA中的if…then…elseif…else…endif语句16

1.9.3布尔表达式中的逻辑与、逻辑或以及逻辑非18

1.9.4 while…endwhile语句20

1.9.5 for…endfor语句20

1.9.6 repeat…until语句21

1.9.7 break和breakif语句22

1.9.8 forever…endfor语句22

1.9.9 try…exception…endtty语句23

1.10 HLA标准库入门26

1.10.1 stdio模块中的预定义常量28

1.10.2标准输入和标准输出29

1.10.3 stdout.newln例程29

1.10.4 stdout.putiX例程29

1.10.5 stdout.putiXSize例程29

1.10.6 stdout.put例程31

1.10.7 stdin.getc例程32

1.10.8 stdin.getiX例程33

1.10.9 stdin.readLn和stdin.flushInput例程34

1.10.10 stdin.get例程35

1.11关于try…endtry的其他细节35

1.11.1 try…endtry嵌套语句36

1.11.2 try…endtry语句中不受保护的子句38

1.11.3 try…endtry语句中的anyexception子句40

1.11.4寄存器与try…endtry语句41

1.12高级汇编语言与低级汇编语言的比较42

1.13更多信息43

第2章 数据表示45

2.1数字系统45

2.1.1回顾十进制系统45

2.1.2二进制数字系统46

2.1.3二进制格式47

2.2十六进制数字系统47

2.3数据结构49

2.3.1位49

2.3.2半字节50

2.3.3字节51

2.3.4字52

2.3.5双字53

2.3.6四字和长字53

2.4二进制数和十六进制数的算术运算54

2.5关于数字及其表示55

2.6位逻辑运算57

2.7二进制数和位串的逻辑运算59

2.8有符号数和无符号数61

2.9符号扩展、零扩展、压缩和饱和65

2.10移位和循环移位68

2.11位域和压缩数据72

2.12浮点运算简介76

2.12.1 IEEE浮点格式79

2.12.2 HLA为浮点数值提供的支持81

2.13 BCD数据表示84

2.14字符85

2.14.1 ASCII字符编码85

2.14.2 HLA对ASCII字符提供的支持88

2.15 Unicode字符集91

2.16更多信息92

第3章 存储器的访问与结构93

3.1 80x86的寻址方式93

3.1.1 80x86寄存器寻址方式94

3.1.2 80x86的32位存储器寻址方式94

3.2运行时存储器的结构100

3.2.1代码段101

3.2.2静态段102

3.2.3只读数据段103

3.2.4存储段103

3.2.5 @nostorag e属性104

3.2.6 var段104

3.2.7程序中声明段的结构105

3.3 HLA如何为变量分配内存106

3.4 HLA对数据对齐的支持107

3.5地址表达式109

3.6类型强制转换111

3.7寄存器类型强制转换113

3.8栈段与push和pop指令114

3.8.1基本的push指令114

3.8.2基本的pop指令115

3.8.3用push和PoP指令保护寄存器116

3.9栈的LIFO数据结构117

3.9.1其他的push和pop指令118

3.9.2不使用出栈而从栈内移除数据119

3.10访问已入栈而未出栈的数据120

3.11动态内存分配和堆段122

3.12 inc和dec指令125

3.13获取存储器对象的地址125

3.14更多信息126

第4章 常量、变量与数据类型127

4.1一些额外的指令:intmul、bound、 into127

4.2 HLA常量和数值声明131

4.2.1常量类型134

4.2.2字符串和字符字面常量135

4.2.3 const段中的字符串常量与文本常量137

4.2.4常量表达式138

4.2.5 HLA程序中的多个const段以及它们的顺序140

4.2.6 HLA的val段140

4.2.7在程序中的任意位置修改val对象141

4.3 HLA的type段142

4.4 enum和HLA枚举数据类型143

4.5指针数据类型144

4.5.1在汇编语言中使用指针145

4.5.2在HLA中声明指针146

4.5.3指针常量和指针常量表达式146

4.5.4指针变量和动态内存分配147

4.5.5指针的常见问题147

4.6复合数据类型151

4.7字符串151

4.8 HLA字符串154

4.9访问字符串中的字符159

4.10 HLA字符串模块和其他与字符串相关的例程160

4.11存储器内的转换170

4.12字符集171

4.13在HLA中实现字符集172

4.14 HLA字符集常量和字符集表达式173

4.15 HLA标准库对字符集的支持175

4.16在HLA程序中使用字符集177

4.17数组178

4.18在HLA程序中声明数组179

4.19 HLA数组常量180

4.20访问一维数组的元素181

4.21数组排序182

4.22多维数组183

4.22.1以行为主排列184

4.22.2以列为主排列187

4.23多维数组的存储空间分配187

4.24汇编语言中多维数组元素的访问189

4.25记录190

4.26记录常量192

4.27记录数组193

4.28数组/记录作为记录字段194

4.29对齐记录中的字段197

4.30记录指针198

4.31联合200

4.32匿名联合202

4.33变体类型203

4.34命名空间203

4.35汇编语言中的动态数组206

4.36更多信息208

第5章 过程和单元209

5.1过程209

5.2机器状态的保存211

5.3过程的提前返回215

5.4局部变量215

5.5其他局部和全局符号类型220

5.6参数220

5.6.1值传递221

5.6.2引用传递224

5.7函数和函数的结果226

5.7.1返回函数结果227

5.7.2 HLA中的指令合成227

5.7.3 HLA过程的@returns选项229

5.8递归231

5.9过程的向前引用235

5.10 HLA v2.0的过程声明236

5.11过程的底层实现与call指令236

5.12过程与栈238

5.13活动记录240

5.14标准入口序列242

5.15 标准出口序列244

5.16自动(局部)变量的底层实现245

5.17参数的底层实现246

5.17.1在寄存器中传递参数247

5.17.2在代码流中传递参数249

5.17.3在栈中传递参数251

5.18过程指针269

5.19过程参数272

5.20无类型的引用参数273

5.21管理大型程序274

5.22 #include伪指令274

5.23忽略重复的#include操作276

5.24单元与external伪指令276

5.24.1伪指令external的行为280

5.24.2 HLA中的头文件281

5.25命名空间污染282

5.26更多信息284

第6章 算术运算287

6.1 80x86的整数运算指令287

6.1.1 mul和imul指令287

6.1.2 div和idiv指令290

6.1.3 cmp指令292

6.1.4 setcc指令296

6.1.5 test指令298

6.2算术表达式299

6.2.1简单赋值300

6.2.2简单表达式300

6.2.3复杂表达式302

6.2.4可交换运算符307

6.3逻辑(布尔)表达式308

6.4机器特性与运算技巧309

6.4.1不使用mul、 imul或intmul的乘法310

6.4.2不使用 div或idiv的除法311

6.4.3使用and实现模N计数器311

6.5浮点运算312

6.5.1 FPU寄存器312

6.5.2 FPU的数据类型317

6.5.3 FPU的指令集318

6.5.4 FPU的数据转移指令318

6.5.5换算指令320

6.5.6算术运算指令322

6.5.7比较指令327

6.5.8常量指令329

6.5.9超越指令329

6.5.10其他指令331

6.5.11整数操作332

6.6将浮点表达式转换成汇编语言332

6.6.1将算术表达式转换成后缀表示法334

6.6.2将后缀表达式转换成汇编语言335

6.7 HLA标准库对浮点算术运算的支持336

6.8更多信息337

第7章 低级控制结构339

7.1低级控制结构339

7.2语句标号339

7.3无条件控制转移(jmp)341

7.4条件跳转指令343

7.5“中级”控制结构:jt和jf346

7.6使用汇编语言实现常用控制结构347

7.7判定347

7.7.1 if…then…else序列348

7.7.2将HLA的if语句翻译成纯汇编语言351

7.7.3使用完整布尔求值实现复杂的if语句355

7.7.4短路布尔求值356

7.7.5短路布尔求值与完整布尔求值357

7.7.6汇编语言中if语句的高效实现359

7.7.7 switch/case语句363

7.8状态机和间接跳转372

7.9“意大利面条式”代码375

7.10循环375

7.10.1 while循环376

7.10.2 repeat…until循环377

7.10.3 forever…endfor循环378

7.10.4 for循环378

7.10.5 break和continue语句379

7.10.6寄存器的使用与循环383

7.11性能提高384

7.11.1将结束条件判断放在循环结尾384

7.11.2反向执行循环386

7.11.3循环不变计算387

7.11.4循环展开388

7.11.5归纳变量389

7.12 HLA中的混合控制结构390

7.13更多信息392

第8章 高级算术运算393

8.1多精度操作393

8.1.1扩展精度操作的HLA标准库支持394

8.1.2多精度加法运算396

8.1.3多精度减法运算398

8.1.4扩展精度比较操作399

8.1.5扩展精度乘法操作403

8.1.6扩展精度除法操作406

8.1.7扩展精度neg操作414

8.1.8扩展精度and操作415

8.1.9扩展精度or操作415

8.1.10扩展精度xor操作416

8.1.11扩展精度not操作416

8.1.12扩展精度移位操作416

8.1.13扩展精度循环移位操作419

8.1.14扩展精度I/O420

8.2对不同长度的操作数进行操作437

8.3十进制算术运算439

8.3.1字面BCD常量440

8.3.2 80x86的daa指令和das指令441

8.3.3 80x86的aaa、 aas、 aam和aad指令442

8.3.4使用FPU的压缩十进制算术操作443

8.4表445

8.4.1通过表查找进行函数计算445

8.4.2域调节449

8.4.3产生表450

8.4.4表查找的性能453

8.5更多信息453

第9章 宏与HLA编译时语言455

9.1编译时语言455

9.2 #print和#error语句457

9.3编译时常量和变量458

9.4编译时表达式和操作符458

9.5编译时函数461

9.5.1类型转换编译时函数462

9.5.2数值编译时函数463

9.5.3字符分类编译时函数463

9.5.4编译时字符串函数463

9.5.5编译时符号信息464

9.5.6其他编译时函数465

9.5.7编译时文本对象的类型转换465

9.6条件编译(编译时判定)467

9.7重复编译(编译时循环)470

9.8宏(编译时过程)473

9.8.1标准宏473

9.8.2宏参数475

9.8.3宏中的局部符号480

9.8.4作为编译时过程的宏482

9.8.5使用宏模拟函数重载483

9.9编写编译时“程序”488

9.9.1在编译时构造数据表488

9.9.2循环展开492

9.10在不同的源文件中使用宏493

9.11更多信息493

第10章 位操作495

10.1位数据495

10.2位操作指令496

10.3作为位累加器的进位标志502

10.4位串的压缩与解压缩503

10.5接合位组与分布位串506

10.6压缩的位串数组508

10.7搜索位510

10.8位的计数512

10.9倒置位串515

10.10合并位串517

10.11提取位串517

10.12搜索位模式519

10.13 HLA标准库的位模块520

10.14更多信息522

第11章 字符串指令523

11.1 80x86字符串指令523

11.1.1字符串指令的操作过程524

11.1.2 rep/repe/repz和repnz/repne前缀524

11.1.3方向标志525

11.1.4 movs指令527

11.1.5 emps指令531

11.1.6 scas指令534

11.1.7 stos指令534

11.1.8 lods指令535

11.1.9通过lods和 stos构建复杂的字符串函数536

11.2 80x86字符串指令的性能536

11.3更多信息536

第12章 类与对象539

12.1通用原则539

12.2 HLA中的类541

12.3对象543

12.4继承545

12.5重写546

12.6虚拟方法与静态过程547

12.7编写类方法和过程548

12.8对象实现552

12.8.1虚拟方法表554

12.8.2带继承的对象表示556

12.9构造函数和对象初始化560

12.9.1构造函数中的动态对象分配561

12.9.2构造函数和继承563

12.9.3构造函数的参数和过程重载566

12.10析构函数566

12.11 HLA的initialize和_finalize字符串567

12.12抽象方法572

12.13运行时类型信息574

12.14调用基类的方法576

12.15更多信息577

附录ASCII字符集579

热门推荐