汇编语言的编程艺术PDF电子书下载
- 电子书积分:17 积分如何计算积分?
- 作 者:(美)海德著
- 出 版 社:北京:清华大学出版社
- 出版年份:2011
- ISBN:9787302263739
- 页数:582 页
第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、 into 127
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和jf 346
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/O 420
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
- 《东北民歌文化研究及艺术探析》(中国)杨清波 2019
- 《莼江曲谱 2 中国昆曲博物馆藏稀见昆剧手抄曲谱汇编之一》郭腊梅主编;孙伊婷副主编;孙文明,孙伊婷编委;中国昆曲博物馆编 2018
- 《舞剧艺术论》张麟著 2019
- 《中国陈设艺术史》赵囡囡著 2019
- 《莼江曲谱 1 中国昆曲博物馆藏稀见昆剧手抄曲谱汇编之一》郭腊梅主编;孙伊婷副主编;孙文明,孙伊婷编委;中国昆曲博物馆编 2018
- 《全国校外艺术课堂新形态示范教材系列 少儿钢琴表演曲集》唐冠祥编著 2019
- 《景观艺术设计》林春水,马俊 2019
- 《近代体育游戏教育史料汇编 第1辑 1》王强主编 2016
- 《韩愈散文艺术论》孙昌武著 2018
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019