大小:187.05M
更新时间:23-08-25
系统:Pc
版本:v
汇编语言的编程艺术第2版是目前讲解汇编语言最经典的图书,作者海德(Randall Hyde),马跃,包战翻译,它详细的介绍了编辑、编译和运行HLA程序,声明和使用常量、标量变量、指针、数组、结构、联合和命名空间,转换算术表达式,转换高级控制结构等内容。同时第2版本还新增了反映HLA最新变化的内容,并介绍了如何支持Linux、Mac OSX和FreeBSD,为非汇编程序员提供了全面、易读和循序渐进的32位x86汇编语言的介绍,是学习汇编语言最好的教程。
汇编语言是一种低级编程语言,只比计算机本身的机器语言高一级。虽然汇编语言经常用于编写设备驱动程序、模拟器和视频游戏,但是许多程序员认为汇编语言的语法不太友好,很难学习和使用。
1996年以来,randall hyde的《汇编语言的编程艺术》一书为非汇编程序员提供了全面、易读和循序渐进的32位x86汇编语言的介绍。hyde使用的主要教学工具是高级语言汇编器(highlevelassembler,hla),其中提供了许多高级语言(如c、c++和java)的功能,以帮助读者快速掌握汇编语言的基本概念。hla在允许汇编语言程序员编写真正低级代码的同时,也使他们能够利用高级语言编程的优势。
通过阅读《汇编语言的编程艺术第2版》,读者可以学到计算机科学的底层理论基础,并将所学知识转化为真正可以运行的代码。
第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..endtry语句 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 @nostorage属性 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 cmps指令 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
同类热门
热门标签
网友评论0人参与,0条评论
最新排行
平凡的世界pdf全三册3.45M路遥扫描珍藏版 平凡的世界是一部获得矛盾文学奖的文学巨作,作者路遥,由陕西旅游出版社和经济日报出版社联合发行,全书共三册,通过全景式的展示描述了中国当代城乡的社会生活现状。平凡的世界通过复杂的矛盾纠葛,深刻的刻画了社会各个阶层的普通人形象。劳动与爱情、挫折与追求、
查看c++程序设计语言(第4部分:标准库)68.02M原书第4版c++程序设计语言(第4部分:标准库)是C++之父Bjarne Stroustrup编写的全新作品,也是通常用户所说的c++程序设计语言第四版,是无可替代的C++领域经典的参考书,详细的介绍C++11的各项新特性、功能等。全书知识结构完整,对C++语言介
查看水力学第4版上册下册9.46Mpdf高清完整版水力学第4版上册下册是一本学习水力学的主要理论及其应用的教材,由吴持恭编写,高教育出版社出版,此版本在第3版基础上,保持了原书 “循序渐进、加强基础、理论联系实际、利于教学”的特点,采用了由浅人深的方式,讲述了水静力学、水动力学基础、液流型态和水头损失、
查看c++入门经典 第9版261.87Mpdf扫描版 c++入门经典 第9版是一本C++语言入门指导书,由美国程序员Walter Savitch编著。本书内容丰富,风格清晰,每一章都是C++的重要知识点,越往后将越加深奥与困难,不过不用太担心,请认真阅读书中章开头的小节总览和随处可见的小结框,它们可以
查看Oracle数据库备份恢复与迁移71.47M刘宪军pdf扫描版 Oracle数据库备份恢复与迁移是一本Oracle数据库数据管理书籍,由刘宪军编著,本书的编写目的,并不在于简单介绍 Oracle 所提供的备份、恢复与迁移方法,而是告诉大家,在什么情况下使用什么方法,为什么使用这样的方法。全书提供了Oracle数
查看Android C++高级编程:使用NDK69.44M辛纳pdf扫描版Android是一个完整的、开放的、免费的移动平台,该平台给移动应用开发者提供了无限的机会。但是如何才能更好的常握好呢?小编推荐大家阅读《android c++高级编程:使用NDK》,这是国内首本基于C++开发android应用书籍,由美国程序员辛纳编著
查看APP蓝图:Axure RP7.0移动互联网产品原型设计40.95M吕皓月pdf扫描版建模又常被称为画线框图、mockup、原型图、demo,其主要用途是在正式进行设计和开发之前,通过一个逼真的效果图来模拟最终的视觉效果和交互效果。但如何才能更好的学习呢?小编这里为广大网友带来了APP蓝图:Axure RP7.0移动互联网产品原型设计,这
查看photoshop cs5宝典(ps cs5教程)94.29Mpdf高清版photoshop cs5宝典是一本pdf高清版的电子书,是目前网络上最全面、最详尽的ps cs5教程。在全面讲解photoshop各项功能和操作技巧的基础上,对photoshop cs5的新增功能进行了详细介绍,包括新增的mini浏览器,全新的画笔系统
查看android studio实战快速高效地构建android应用73.89Mpdf高清版android studio是一款简单直观、功能丰富且极具包容性的集成开发环境,在开发Android App方面比Eclipse更加高效易用。为此小编带来了android studio实战快速高效地构建android应用,这是一本涵盖关于了android
查看C++黑客编程揭秘与防范第2版54.58M冀云pdf扫描版C++黑客编程揭秘与防范第2版是一本黑客编程数据,由冀云编著。本书是C++黑客编程揭秘与防范的升级版,全书在前书的基础上新添加了一些内容,同时也删除了一些过时的内容。书中以Win32应用层下安全开发为中心,介绍Windows系统下的安全开发,内容几乎涵盖
查看精通android ui设计74.12M盛青,谭春波 pdf扫描版 精通android ui设计是一本Android UI设计手册,由Wallace Jackson编著,国人盛青,谭春波翻译。本书内容丰富翔实,有助于读者深入了解Android UI设计规范的工作原理,掌握最流行的UI布局类和方法。全书重点介绍了这些
查看精通css+div网页样式与布局pdf942K高清完整版《精通css+div网页样式与布局》是一本非常实用好学的学习css网页布局入门教程,由前沿科技曾顺编著,人民邮电出版社出版,全书内容非常浅显易懂,完全是针对零基础的初学者而制作的,它系统地讲解了CSS层叠样式表的基础理论和实际运用技术,通过大量实例对CS
查看看盘细节潘伟君pdf版19.88M看盘细节pdf版主要的切入点是分析即时看盘细节,适合有一定经验和阅历的投资朋友观看。当然如果您刚刚进入市场,愿意静下心来在这市场上成就自己成功梦想,那么这本书绝对会是你的好帮手。看盘细节潘伟君pdf版提供了一些推理式的思路,用于解释盘中即时交易的细节。而
查看