图书介绍
汇编语言 基于x86处理器PDF|Epub|txt|kindle电子书版本网盘下载
![汇编语言 基于x86处理器](https://www.shukui.net/cover/73/33416441.jpg)
- (美)基普·欧文(KipIrvine)著;贺莲,黄奕利译 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111530367
- 出版时间:2016
- 标注页数:547页
- 文件大小:52MB
- 文件页数:569页
- 主题词:汇编语言-程序设计
PDF下载
下载说明
汇编语言 基于x86处理器PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 基本概念1
1.1 欢迎来到汇编语言的世界1
1.1.1 读者可能会问的问题2
1.1.2 汇编语言的应用4
1.1.3 本节回顾5
1.2 虚拟机概念5
1.3 数据表示7
1.3.1 二进制整数7
1.3.2 二进制加法8
1.3.3 整数存储大小9
1.3.4 十六进制整数10
1.3.5 十六进制加法11
1.3.6 有符号二进制整数12
1.3.7 二进制减法13
1.3.8 字符存储14
1.3.9 本节回顾15
1.4 布尔表达式16
1.4.1 布尔函数真值表18
1.4.2 本节回顾18
1.5 本章小结19
1.6 关键术语19
1.7 复习题和练习20
1.7.1 简答题20
1.7.2 算法基础21
第2章 x86处理器架构23
2.1 一般概念23
2.1.1 基本微机设计23
2.1.2 指令执行周期24
2.1.3 读取内存25
2.1.4 加载并执行程序26
2.1.5 本节回顾26
2.2 32位x86处理器27
2.2.1 操作模式27
2.2.2 基本执行环境27
2.2.3 x86内存管理30
2.2.4 本节回顾30
2.3 64位x86-64处理器30
2.3.1 64位操作模式31
2.3.2 基本64位执行环境31
2.4 典型x86计算机组件32
2.4.1 主板32
2.4.2 内存34
2.4.3 本节回顾34
2.5 输入输出系统34
2.5.1 I/O访问层次34
2.5.2 本节回顾36
2.6 本章小结36
2.7 关键术语37
2.8 复习题38
第3章 汇编语言基础39
3.1 基本语言元素39
3.1.1 第一个汇编语言程序39
3.1.2 整数常量40
3.1.3 整型常量表达式41
3.1.4 实数常量41
3.1.5 字符常量42
3.1.6 字符串常量42
3.1.7 保留字42
3.1.8 标识符43
3.1.9 伪指令43
3.1.10 指令44
3.1.11 本节回顾46
3.2 示例:整数加减法46
3.2.1 AddTwo程序46
3.2.2 运行和调试AddTwo程序48
3.2.3 程序模板52
3.2.4 本节回顾52
3.3 汇编、链接和运行程序53
3.3.1 汇编-链接-执行周期53
3.3.2 列表文件53
3.3.3 本节回顾55
3.4 定义数据55
3.4.1 内部数据类型55
3.4.2 数据定义语句55
3.4.3 向AddTwo程序添加一个变量56
3.4.4 定义BYTE和SBYTE数据57
3.4.5 定义WORD和SWORD数据59
3.4.6 定义DWORD和SDWORD数据59
3.4.7 定义QWORD数据60
3.4.8 定义压缩BCD(TBYTE)数据60
3.4.9 定义浮点类型61
3.4.10 变量加法程序61
3.4.11 小端顺序62
3.4.12 声明未初始化数据62
3.4.13 本节回顾63
3.5 符号常量63
3.5.1 等号伪指令63
3.5.2 计算数组和字符串的大小64
3.5.3 EQU伪指令65
3.5.4 TEXTEQU伪指令66
3.5.5 本节回顾66
3.6 64位编程67
3.7 本章小结68
3.8 关键术语69
3.8.1 术语69
3.8.2 指令、运算符和伪指令70
3.9 复习题和练习70
3.9.1 简答题70
3.9.2 算法基础71
3.10 编程练习71
第4章 数据传送、寻址和算术运算73
4.1 数据传送指令73
4.1.1 引言73
4.1.2 操作数类型73
4.1.3 直接内存操作数74
4.1.4 MOV指令75
4.1.5 整数的全零/符号扩展76
4.1.6 LAHF和SHF指令77
4.1.7 XCHG指令78
4.1.8 直接-偏移量操作数78
4.1.9 示例程序(Moves)79
4.1.10 本节回顾80
4.2 加法和减法81
4.2.1 INC和DEC指令81
4.2.2 ADD指令81
4.2.3 SUB指令81
4.2.4 NEG指令82
4.2.5 执行算术表达式82
4.2.6 加减法影响的标志位82
4.2.7 示例程序(AddSubTest)85
4.2.8 本节回顾86
4.3 与数据相关的运算符和伪指令87
4.3.1 OFFSET运算符87
4.3.2 ALIGN伪指令88
4.3.3 PTR运算符88
4.3.4 TYPE运算符89
4.3.5 LENGTHOF运算符89
4.3.6 SIZEOF运算符90
4.3.7 LABEL伪指令90
4.3.8 本节回顾90
4.4 间接寻址91
4.4.1 间接操作数91
4.4.2 数组91
4.4.3 变址操作数92
4.4.4 指针93
4.4.5 本节回顾95
4.5 JMP和LOOP指令95
4.5.1 JMP指令96
4.5.2 LOOP指令96
4.5.3 在Visual Studio调试器中显示数组97
4.5.4 整数数组求和98
4.5.5 复制字符串98
4.5.6 本节回顾99
4.6 64位编程99
4.6.1 MOV指令99
4.6.2 64位的SumArray程序100
4.6.3 加法和减法101
4.6.4 本节回顾102
4.7 本章小结102
4.8 关键术语104
4.8.1 术语104
4.8.2 指令、运算符和伪指令104
4.9 复习题和练习104
4.9.1 简答题104
4.9.2 算法基础106
4.10 编程练习107
第5章 过程108
5.1 堆栈操作108
5.1.1 运行时堆栈(32位模式)108
5.1.2 PUSH和POP指令110
5.1.3 本节回顾112
5.2 定义并使用过程112
5.2.1 PROC伪指令112
5.2.2 CALL和RET指令114
5.2.3 过程调用嵌套115
5.2.4 向过程传递寄存器参数116
5.2.5 示例:整数数组求和116
5.2.6 保存和恢复寄存器118
5.2.7 本节回顾119
5.3 链接到外部库119
5.3.1 背景知识119
5.3.2 本节回顾120
5.4 Irvine32链接库120
5.4.1 创建库的动机120
5.4.2 概述122
5.4.3 过程详细说明123
5.4.4 库测试程序133
5.4.5 本节回顾139
5.5 64位汇编编程139
5.5.1 Irvine64链接库139
5.5.2 调用64位子程序140
5.5.3 x64调用规范140
5.5.4 调用过程示例141
5.6 本章小结142
5.7 关键术语143
5.7.1 术语143
5.7.2 指令、运算符和伪指令143
5.8 复习题和练习143
5.8.1 简答题143
5.8.2 算法基础146
5.9 编程练习146
第6章 条件处理148
6.1 条件分支148
6.2 布尔和比较指令148
6.2.1 CPU状态标志149
6.2.2 AND指令149
6.2.3 OR指令150
6.2.4 位映射集151
6.2.5 XOR指令152
6.2.6 NOT指令153
6.2.7 TEST指令153
6.2.8 CMP指令154
6.2.9 置位和清除单个CPU标志位155
6.2.10 64位模式下的布尔指令155
6.2.11 本节回顾156
6.3 条件跳转156
6.3.1 条件结构156
6.3.2 Jcond指令156
6.3.3 条件跳转指令类型157
6.3.4 条件跳转应用159
6.3.5 本节回顾163
6.4 条件循环指令163
6.4.1 LOOPZ和LOOPE指令163
6.4.2 LOOPNZ和LOOPNE指令164
6.4.3 本节回顾164
6.5 条件结构164
6.5.1 块结构的IF语句165
6.5.2 复合表达式167
6.5.3 WHILE循环168
6.5.4 表驱动选择169
6.5.5 本节回顾171
6.6 应用:有限状态机172
6.6.1 验证输入字符串172
6.6.2 验证有符号整数172
6.6.3 本节回顾176
6.7 条件控制流伪指令176
6.7.1 新建IF语句177
6.7.2 有符号数和无符号数的比较178
6.7.3 复合表达式179
6.7.4 用.REPEAT和.WHILE创建循环181
6.8 本章小结182
6.9 关键术语183
6.9.1 术语183
6.9.2 指令、运算符和伪指令184
6.10 复习题和练习184
6.10.1 简答题184
6.10.2 算法基础186
6.11 编程练习187
6.11.1 测试代码的建议187
6.11.2 习题188
第7章 整数运算191
7.1 移位和循环移位指令191
7.1.1 逻辑移位和算术移位191
7.1.2 SHL指令192
7.1.3 SHR指令193
7.1.4 SAL和SAR指令193
7.1.5 ROL指令194
7.1.6 ROR指令195
7.1.7 RCL和RCR指令195
7.1.8 有符号数溢出196
7.1.9 SHLD/SHRD指令196
7.1.10 本节回顾198
7.2 移位和循环移位的应用198
7.2.1 多个双字的移位198
7.2.2 二进制乘法199
7.2.3 显示二进制位200
7.2.4 提取文件日期字段200
7.2.5 本节回顾201
7.3 乘法和除法指令201
7.3.1 MUL指令201
7.3.2 IMUL指令203
7.3.3 测量程序执行时间205
7.3.4 DIV指令207
7.3.5 有符号数除法208
7.3.6 实现算术表达式211
7.3.7 本节回顾212
7.4 扩展加减法212
7.4.1 ADC指令212
7.4.2 扩展加法示例213
7.4.3 SBB指令215
7.4.4 本节回顾215
7.5 ASCII和非压缩十进制运算216
7.5.1 AAA指令217
7.5.2 AAS指令218
7.5.3 AAM指令218
7.5.4 AAD指令219
7.5.5 本节回顾219
7.6 压缩十进制运算219
7.6.1 DAA指令220
7.6.2 DAS指令220
7.6.3 本节回顾221
7.7 本章小结221
7.8 关键术语222
7.8.1 术语222
7.8.2 指令、运算符和伪指令222
7.9 复习题和练习222
7.9.1 简答题222
7.9.2 算法基础224
7.10 编程练习225
第8章 高级过程227
8.1 引言227
8.2 堆栈帧227
8.2.1 堆栈参数227
8.2.2 寄存器参数的缺点228
8.2.3 访问堆栈参数230
8.2.4 32位调用规范232
8.2.5 局部变量233
8.2.6 引用参数235
8.2.7 LEA指令235
8.2.8 ENTER和LEAVE指令236
8.2.9 LOCAL伪指令238
8.2.10 Microsoft x64调用规范239
8.2.11 本节回顾239
8.3 递归239
8.3.1 递归求和240
8.3.2 计算阶乘241
8.3.3 本节回顾246
8.4 INVOKE、ADDR、PROC和PROTO246
8.4.1 INVOKE伪指令246
8.4.2 ADDR运算符247
8.4.3 PROC伪指令247
8.4.4 PROTO伪指令250
8.4.5 参数类别253
8.4.6 示例:交换两个整数253
8.4.7 调试提示254
8.4.8 WriteStackFrame过程255
8.4.9 本节回顾256
8.5 新建多模块程序256
8.5.1 隐藏和导出过程名256
8.5.2 调用外部过程257
8.5.3 跨模块使用变量和标号258
8.5.4 示例:ArraySum程序259
8.5.5 用Extern新建模块259
8.5.6 用INVOKE和PROTO新建模块262
8.5.7 本节回顾265
8.6 参数的高级用法(可选主题)265
8.6.1 受USES运算符影响的堆栈265
8.6.2 向堆栈传递8位和16位参数266
8.6.3 传递64位参数267
8.6.4 非双字局部变量268
8.7 Java字节码(可选主题)269
8.7.1 Java虚拟机269
8.7.2 指令集270
8.7.3 Java反汇编示例271
8.7.4 示例:条件分支273
8.8 本章小结274
8.9 关键术语275
8.9.1 术语275
8.9.2 指令、运算符和伪指令276
8.10 复习题和练习276
8.10.1 简答题276
8.10.2 算法基础276
8.11 编程练习277
第9章 字符串和数组279
9.1 引言279
9.2 字符串基本指令279
9.2.1 MOVSB、MOVSW和MOVSD280
9.2.2 CMPSB、CMPSW和CMPSD280
9.2.3 SCASB、SCASW和SCASD281
9.2.4 STOSB、STOSW和STOSD282
9.2.5 LODSB、LODSW和LODSD282
9.2.6 本节回顾282
9.3 部分字符串过程283
9.3.1 Str_compare过程283
9.3.2 Str_length过程284
9.3.3 Str_copy过程284
9.3.4 Str_trim过程285
9.3.5 Str_ucase过程287
9.3.6 字符串库演示程序288
9.3.7 Irivne64库中的字符串过程289
9.3.8 本节回顾291
9.4 二维数组291
9.4.1 行列顺序291
9.4.2 基址-变址操作数292
9.4.3 基址-变址-偏移量操作数294
9.4.4 64位模式下的基址-变址操作数294
9.4.5 本节回顾295
9.5 整数数组的检索和排序295
9.5.1 冒泡排序295
9.5.2 对半查找297
9.5.3 本节回顾302
9.6 Java字节码:字符串处理(可选主题)302
9.7 本章小结303
9.8 关键术语和指令304
9.9 复习题和练习304
9.9.1 简答题304
9.9.2 算法基础305
9.10 编程练习305
第10章 结构和宏308
10.1 结构308
10.1.1 定义结构308
10.1.2 声明结构变量309
10.1.3 引用结构变量310
10.1.4 示例:显示系统时间313
10.1.5 结构包含结构315
10.1.6 示例:醉汉行走315
10.1.7 声明和使用联合318
10.1.8 本节回顾320
10.2 宏320
10.2.1 概述320
10.2.2 定义宏321
10.2.3 调用宏322
10.2.4 其他宏特性323
10.2.5 使用本书的宏库(仅32位模式)326
10.2.6 示例程序:封装器332
10.2.7 本节回顾333
10.3 条件汇编伪指令333
10.3.1 检查缺失的参数333
10.3.2 默认参数初始值设定334
10.3.3 布尔表达式335
10.3.4 IF、ELSE和ENDIF伪指令335
10.3.5 IFIDN和IFIDNI伪指令336
10.3.6 示例:矩阵行求和336
10.3.7 特殊运算符339
10.3.8 宏函数342
10.3.9 本节回顾343
10.4 定义重复语句块344
10.4.1 WHILE伪指令344
10.4.2 REPEAT伪指令344
10.4.3 FOR伪指令345
10.4.4 FORC伪指令345
10.4.5 示例:链表346
10.4.6 本节回顾347
10.5 本章小结348
10.6 关键术语349
10.6.1 术语349
10.6.2 运算符和伪指令349
10.7 复习题和练习349
10.7.1 简答题349
10.7.2 算法基础350
10.8 编程练习351
第11章 MS-Windows编程354
11.1 Win32控制台编程354
11.1.1 背景知识354
11.1.2 Win32控制台函数357
11.1.3 显示消息框359
11.1.4 控制台输入361
11.1.5 控制台输出366
11.1.6 读写文件368
11.1.7 Irvine32链接库的文件I/O371
11.1.8 测试文件I/O过程373
11.1.9 控制台窗口操作375
11.1.10 控制光标378
11.1.11 控制文本颜色379
11.1.12 时间与日期函数380
11.1.13 使用64位Windows API383
11.1.14 本节回顾384
11.2 编写图形化的Windows应用程序384
11.2.1 必要的结构385
11.2.2 MessageBox函数386
11.2.3 WinMain过程387
11.2.4 WinProc过程387
11.2.5 ErrorHandler过程388
11.2.6 程序清单388
11.2.7 本节回顾391
11.3 动态内存分配391
11.3.1 Heap Test程序394
11.3.2 本节回顾397
11.4 x86存储管理397
11.4.1 线性地址398
11.4.2 页转换400
11.4.3 本节回顾401
11.5 本章小结402
11.6 关键术语403
11.7 复习题和练习403
11.7.1 简答题403
11.7.2 算法基础404
11.8 编程练习404
第12章 浮点数处理与指令编码406
12.1 浮点数二进制表示406
12.1.1 IEEE二进制浮点数表示406
12.1.2 阶码407
12.1.3 规格化二进制浮点数407
12.1.4 新建IEEE表示408
12.1.5 十进制小数转换为二进制实数409
12.1.6 本节回顾411
12.2 浮点单元411
12.2.1 FPU寄存器栈411
12.2.2 舍入413
12.2.3 浮点数异常414
12.2.4 浮点数指令集414
12.2.5 算术运算指令416
12.2.6 比较浮点数值419
12.2.7 读写浮点数值422
12.2.8 异常同步423
12.2.9 代码示例423
12.2.10 混合模式运算425
12.2.11 屏蔽与未屏蔽异常426
12.2.12 本节回顾427
12.3 x86指令编码427
12.3.1 指令格式427
12.3.2 单字节指令428
12.3.3 立即数送寄存器428
12.3.4 寄存器模式指令429
12.3.5 处理器操作数大小前缀429
12.3.6 内存模式指令430
12.3.7 本节回顾432
12.4 本章小结432
12.5 关键术语433
12.6 复习题和练习434
12.6.1 简答题434
12.6.2 算法基础434
12.7 编程练习435
第13章 高级语言接口438
13.1 引言438
13.1.1 通用规范438
13.1.2 .MODEL伪指令439
13.1.3 检查编译器生成的代码441
13.1.4 本节回顾444
13.2 内嵌汇编代码444
13.2.1 Visual C++中的__asm伪指令444
13.2.2 文件加密示例447
13.2.3 本节回顾449
13.3 32位汇编程序与C/C++的链接449
13.3.1 IndexOf示例450
13.3.2 调用C和C++函数453
13.3.3 乘法表示例454
13.3.4 调用C库函数457
13.3.5 目录表程序459
13.3.6 本节回顾461
13.4 本章小结461
13.5 关键术语462
13.6 复习题462
13.7 编程练习462
附录A MASM参考知识464
附录B x86指令集483
附录C “本节回顾”问题答案510
索引527