1.1 计算机的基本知识 1
1.1.1 计算机组成和工作原理 1
第一章 程序设计概述 1
1.1.2 计算机系统 7
1.2 程序设计与计算机 9
1.2.1 程序设计的概念 9
1.2.2 程序设计与计算机应用、制造的关系 10
1.2.3 程序设计的发展历史和现状 10
1.3 计算过程 12
1.3.1 计算过程的四个阶段 13
1.3.2 文档编制 15
1.3.3 程序设计的图形工具 15
1.4.1 机器语言 17
1.4 程序设计语言 17
1.4.2 汇编语言 19
1.4.3 高级语言 20
1.4.4 程序设计语言的分类 21
习题 21
第二章 计算机的数据表示方法 23
2.1 数制和数制转换 23
2.1.1 数制 23
2.1.2 数制转换 27
2.2 数据的机器表示 34
2.2.1 数的定点和浮点表示 34
2.2.2 数的原码、补码和反码 40
2.2.3 字符的表示 48
2.2.4 逻辑值的表示 51
习题 52
第三章 VAX-11系列计算机和VAX-11宏汇编语言简介 54
3.1 VAX—11系列计算机的体系结构 54
3.1.1 体系结构 54
3.1.2 系统组织 56
3.2 中央处理机和存贮器 57
3.2.1 通用寄存器 57
3.2.2 程序状态字 57
3.2.3 地址空间 58
3.3 信息单位和数据类型 59
3.3.1 信息单位 59
3.3.3 整数 63
3.3.2 数据类型 63
3.3.4 浮点数 65
3.3.5 字符串 70
3.3.6 十进制数串 71
3.3.7 数据的表示和信息的解释 74
3.4 VAX—11 MACRO的基本概念 75
3.4.1 源语句格式 76
3.4.2 字符集、数和符号 78
3.4.3 符号的值与属性 80
3.4.4 运算符 83
3.4.5 项和表达式 87
3.5 伪指令 88
3.5.1 存贮块分配伪指令 89
3.5.2 数据存贮伪指令 90
3.5.3 控制伪指令 93
习题 94
第四章 指令和寻址方式 96
4.1 指令格式和特点 96
4.1.1 常用指令 96
4.1.2 指令格式 98
4.2 寻址方式 101
4.3 通用寻址 102
4.3.1 寄存器方式 102
4.3.2 寄存器间接方式 104
4.3.3 自增方式 108
4.3.4 自增间接方式 112
4.3.5 自减方式 115
4.3.6 字面值方式 117
4.3.7 位移方式 120
4.3.8 位移间接方式 122
4.3.9 立即方式 124
4.3.10 绝对方式 125
4.3.11 相对方式 126
4.3.12 相对间接方式 130
4.3.13 变址方式 132
4.4 转移寻址 141
习题 143
第五章 顺序程序设计 148
5.1 数据传送 148
5.1.1 寄存器之间的数据传送 148
5.1.2 存贮器与寄存器之间的数据传送 149
5.1.3 存贮器中的数据传送 150
5.1.4 类型转换的数据传送 152
5.2 算术运算 155
5.2.1 一元运算 155
5.2.2 加 156
5.2.3 减 157
5.2.4 乘 160
5.2.5 除 163
5.2.6 在汇编中完成算术运算 164
5.3 逻辑运算 165
5.3.1 非 166
5.3.2 或 167
5.3.3 与 168
5.3.4 异或 169
5.4 移位操作 170
5.4.1 算术移位 170
5.4.2 循环移位 172
5.5 字符操作 173
5.5.1 字符串传送 174
5.5.2 定位和跳过字符 177
5.5.3 寻找子串 178
5.6 位字段操作 179
5.6.1 抽取 179
5.6.2 插入 180
5.6.3 寻位 181
习题 182
6.1 分枝及其实现方法 185
第六章 分枝程序设计 185
6.2 条件转移和无条件转移 186
6.2.1 程序控制的传送 187
6.2.2 无条件转移和条件转移 187
6.2.3 条件码测试转移 189
6.2.4 位测试转移 192
6.2.5 选择转移 194
6.3 测试和比较 196
6.3.1 算术和逻辑测试 196
6.3.2 算术比较 197
6.3.3 字符串比较 199
6.3.4 位字段比较 201
6.4 分枝程序设计的方法 202
6.4.1 二叉分枝 203
6.4.2 多叉分枝 209
习题 217
第七章 循环程序设计 220
7.1 循环的结构 220
7.1.1 引例 220
7.1.2 循环的结构 222
7.2 循环的组织 223
7.2.1 组织循环的必要条件 223
7.2.2 数据结构对组织循环的影响 223
7.3 循环的控制 227
7.3.1 循环的计数控制 227
7.3.2 循环的条件控制 234
7.3.3 循环的混合控制 237
7.4 循环的嵌套 240
7.4.1 二重循环 241
7.4.2 三重循环 248
习题 256
第八章 子程序设计 259
8.1 子程序的一般概念 259
8.2 子程序设计方法 263
8.2.1 控制转移 263
8.2.2 参数传递 265
8.2.3 寄存器保护 267
8.3 子程序调用和过程调用 268
8.3.1 堆栈 268
8.3.2 子程序调用 271
8.3.3 过程调用 274
8.4 过程调用的实现 275
8.4.1 过程入口屏蔽码 275
8.4.2 参数表 276
8.4.3 调用帧 277
8.4.4 带通用参数表的过程调用指令 277
8.4.5 带栈参数表的过程调用指令 279
8.4.6 过程返回指令 280
8.4.7 例 281
8.5 子程序的嵌套和递归 298
8.5.1 嵌套 299
8.5.2 递归 303
8.6 共行子程序 309
8.7 可重入子程序 310
习题 311
第九章 宏指令程序设计 315
9.1 宏指令的引入 315
9.2 宏定义、宏调用和宏扩展 318
9.2.1 宏定义 318
9.2.2 宏调用和宏扩展 320
9.2.3 宏指令与子程序的比较 322
9.3 宏指令参数 323
9.3.1 位置参数和关键字参数 323
9.3.2 语句标号作为参数 325
9.3.3 参数的几种其他形式 326
9.4 宏指令嵌套 329
9.5 重复块和不定重复块 331
9.6 条件汇编 334
习题 340
第十章 输入输出程序设计 344
10.1 操作系统环境中的输入输出 344
10.1.1 利用高级语言的I/O功能实现输入输出 344
10.1.2 利用记录管理系统宏指令实现输入输出 350
10.1.3 利用系统服务宏指令实现输入输出 358
10.2 输入输出处理 361
10.2.1 I/O系统 362
10.2.2 设备寄存器 363
10.2.3 中断和中断处理 368
10.2.4 I/O程序设计简例 369
习题 373
11.1.1 二遍扫描 375
11.1 汇编 375
第十一章 汇编、连接和装入 375
11.1.2 汇编程序的数据结构 378
11.1.3 目标代码和汇编列表 379
11.1.4 汇编过程举例 381
11.2 连接 385
11.3 装入 385
习题 386
第十二章 程序质量和程序设计风格 389
12.1 程序的质量 389
12.1.1 程序质量的概念 389
12.1.2 提高程序质量的途径 390
12.2 程序设计风格 392
习题 394
13.1.1 程序调试的意义 395
第十三章 程序调试 395
13.1 程序调试的意义和一般方法 395
13.1.2 程序调试的一般方法 396
13.2 VAX—11调试工具 399
13.2.1 符号调试程序的功能 399
13.2.2 符号调试程序的使用 400
习题 407
附录A VAX-11指令系统 408
附录B VAX-11MACRO伪指令 424
附录C VAX-11寻址方式 427
附录D ASCII字符集 429
附录E 2和16的幂次 430
参考文献 432