第1章 变量、寄存器与数据移动 1
1.1 引言 1
1.2 第一个程序 2
1.3 变量声明 4
1.4 立即数 6
1.5 寄存器 6
1.6 数据移动 8
1.7 字符数据 10
1.8 程序错误 10
1.9 完整程序示例:C程序中嵌入汇编指令 11
1.10 本章小结 12
1.11 练习题 12
第2章 输入与输出 14
2.1 引言 14
2.2 Hello World 14
2.3 整数输出 16
2.4 整数输入 17
2.5 完整程序示例:应用输入、数据传递与输出操作 19
2.6 本章小结 20
2.7 练习题 21
第3章 算术运算指令 24
3.1 加法与减法运算 24
3.2 乘法运算与除法运算指令 26
3.3 一元运算:递增、递减和求反 29
3.4 一元运算符与二元运算符的优先级 32
3.5 完整程序示例:实现I/O与算术运算 34
3.6 本章小结 35
3.7 练习题 36
第4章 选择结构 38
4.1 引言 38
4.2 if-then结构 38
4.3 if-then-else结构 43
4.4 嵌套if结构 44
4.5 case结构 46
4.6 字符与逻辑运算符 47
4.7 高级汇编指令中的算术表达式 52
4.8 完整程序示例:运用选择结构和I/O 54
4.9 本章小结 56
4.10 练习题 56
第5章 迭代结构 59
5.1 前置检测循环结构 59
5.2 后置检测循环结构 61
5.3 固定迭代循环结构 63
5.4 循环与输入输出 65
5.5 嵌套循环结构 69
5.6 完整程序示例:实现幂函数 71
5.7 本章小结 73
5.8 练习题 73
第6章 逻辑运算指令、移位指令、循环移位指令和堆栈 76
6.1 引言 76
6.2 逻辑运算指令 76
6.3 逻辑移位指令 80
6.4 算术移位指令 83
6.5 循环移位指令 85
6.6 堆栈操作 87
6.7 使用寄存器、堆栈和xchg指令来实现数据交换 89
6.8 完整程序示例:模拟一个OCR设备 91
6.9 本章小结 94
6.10 练习题 94
第7章 过程与宏 96
7.1 过程 96
7.2 完整程序示例:在过程里实现幂函数 99
7.3 寄存器内容的保存与恢复 102
7.4 宏 103
7.5 条件汇编 108
7.6 使用条件汇编重新设计swap宏 111
7.7 使用条件汇编实现幂函数宏 114
7.8 完整程序示例:实现一个宏计算器 116
7.9 本章小结 122
7.10 练习题 123
第8章 数组 124
8.1 数组声明与编址 124
8.2 使用基址寄存器进行数组索引 126
8.3 查找 129
8.4 使用寄存器esi和寄存器edi进行索引 131
8.5 lengthof运算符和sizeof运算符 135
8.6 完整程序示例:实现一个队列 137
8.7 完整程序示例:实现选择排序 141
8.8 本章小结 145
8.9 练习题 145
第9章 字符串 147
9.1 引言 147
9.2 字符串指令:移动字符串(movsb) 148
9.3 字符串指令:scasb、stosb与lodsb 151
9.4 字符串数组 153
9.5 字符串比较指令cmpsb 154
9.6 完整程序示例:搜索字符串数组 159
9.7 本章小结 161
9.8 练习题 161
第10章 部分机器语言指令 163
10.1 引言 163
10.2 inc指令和dec指令 163
10.3 mov指令 165
10.4 add指令与sub指令 169
10.5 movoffset指令和lea指令 170
10.6 imp指令 171
10.7 指令时序 172
10.8 完整程序示例:机器语言列表 173
10.9 本章小结 175
10.10 练习题 175
附录A Visual C++与MASM的安装 177
A.1 Visual C++与MASM安装说明 177
A.2 编写C语言程序与内联汇编 177
A.3 编写独立MASM程序 179
A.4 小结 180
附录B 二进制、十六进制、逻辑运算与算术运算 181
B.1 十进制与二进制数值 181
B.2 十六进制 183
B.3 逻辑运算概述 185
B.4 无符号数值与加法 186
B.5 有符号的数值 188
B.6 带符号数值的加法运算与减法运算 189
B.7 字符 191
B.8 Hex/ASCII表 192
B.9 小结 193
B.10 练习题 194
附录C 术语表 195
附录D 部分汇编语言指令 197
附录E 部分练习题的答案 202