第1章 概述 1
1.1 汇编语言的级别 1
1.1.1 机器语言 1
1.1.2 汇编语言 1
1.1.3 高级语言 2
1.2 汇编语言的特点 3
1.3 汇编语言的应用 4
1.4 汇编语言程序模块 4
1.5 汇编程序与汇编语言程序 5
1.5.1 汇编程序 5
1.5.2 汇编语言程序的运行过程 5
1.6 硬件结构 6
1.6.1 存储系统 6
1.6.2 寄存器 7
习题 8
第2章 数据表示 10
2.1 数字进制系统 10
2.1.1 数字进制系统概述 10
2.1.2 基数 10
2.1.3 二进制数 11
2.1.4 十六进制数 11
2.1.5 进制的转换 11
2.2 进制数字的运算 13
2.2.1 二进制和十六进制加法 13
2.2.2 二进制和十六进制减法 14
2.3 数据表示 14
2.3.1 字符数据的表示形式 14
2.3.2 数值数据的表示形式 15
习题 17
第3章 汇编语言的编码和结构 19
3.1 基本字符集 19
3.2 汇编语句的编码规范 19
3.2.1 语句域与汇编指令语法 20
3.2.2 续行指示域和续行 21
3.2.3 标识序列域 22
3.2.4 注释的使用 22
3.3 符号 22
3.3.1 符号的格式及使用 22
3.3.2 使用符号的优点 23
3.3.3 符号等价语句EQU 24
3.4 项及表达式 25
习题 26
第4章 汇编语言程序结构 27
4.1 汇编语言程序例子 27
4.2 汇编语言程序的组成部分 28
4.2.1 控制段 28
4.2.2 汇编语言程序结构 28
4.2.3 程序的开始和结束 30
4.2.4 程序段语句 31
4.3 汇编语言程序的运行过程 32
4.4 定位计数器 33
4.5 寻址方式 34
4.5.1 操作数寻址方式 34
4.5.2 建立寻址能力 35
4.5.3 静态重定位和动态重定位 35
4.6 地址处理指令 36
4.6.1 USING语句 37
4.6.2 DROP语句 38
4.6.3 ORG语句 38
4.6.4 CNOP语句 38
4.7 打印控制语句 39
4.7.1 标题语句TITLE 39
4.7.2 换页语句EJECT 39
4.7.3 空行语句SPACE 39
4.7.4 打印方式语句PRINT 40
习题 40
第5章 数据及存储区域定义 41
5.1 存储区域定义 41
5.1.1 DS语句的格式 41
5.1.2 长度修饰符与长度属性 42
5.1.3 地址计数器 43
5.1.4 重复因子的使用 44
5.2 常量定义 45
5.2.1 常量定义指令(DC) 45
5.2.2 字符常量的定义 45
5.2.3 十六进制常量的定义 45
5.2.4 二进制常量的定义 46
5.2.5 分区十进制常量的定义 46
5.2.6 压缩十进制常量的定义 47
5.2.7 定点数的定义 47
5.2.8 地址常量的定义 48
5.3 自由量 49
习题 51
第6章 寻址方式及基本指令 53
6.1 寻址及机器指令 53
6.1.1 寻址方式 53
6.1.2 指令格式 53
6.1.3 逻辑地址 54
6.1.4 S/390指令类型 56
6.2 RR指令格式 57
6.2.1 指令格式 57
6.2.2 编码格式 57
6.2.3 AR指令 57
6.2.4 SR指令 58
6.2.5 LR指令 58
6.3 RX指令格式 59
6.3.1 指令格式 59
6.3.2 编码格式 59
6.3.3 L指令 59
6.3.4 A指令 60
6.3.5 S指令 60
6.4 RS指令 61
6.4.1 指令格式 61
6.4.2 编码格式 61
6.4.3 LM指令 61
6.4.4 STM指令 62
6.5 SI指令 62
6.5.1 指令格式 62
6.5.2 编码格式 62
6.5.3 移动立即数指令MVI 63
6.5.4 立即数逻辑比较指令CLI 63
6.6 SS指令 64
6.6.1 等长的SS指令格式和编码 64
6.6.2 移动字符串指令MVC 65
6.6.3 逻辑比较指令CLC 66
6.6.4 不等长的SS指令格式和编码 66
习题 68
第7章 输入输出程序设计 71
7.1 输入输出处理 71
7.2 宏指令 72
7.2.1 宏指令简介 72
7.2.2 输入输出系统宏指令 73
7.3 数据集定义 73
7.3.1 DCB宏的格式 73
7.3.2 DCB宏的关键字参数 74
7.3.3 DCB宏指令示例 75
7.4 数据集的打开和关闭 77
7.4.1 OPEN宏指令 77
7.4.2 CLOSE宏指令 78
7.5 数据集的移动 78
7.5.1 MOVE模式 78
7.5.2 GET宏 79
7.5.3 PUT宏 80
7.5.4 样例程序 80
7.6 其他的宏指令 81
7.6.1 CNTRL宏指令 81
7.6.2 RELSE宏指令 81
7.6.3 FEOV宏指令 82
7.7 一个完整的输入输出操作程序 82
习题 83
第8章 十进制运算 85
8.1 十进制应用问题 85
8.1.1 应用问题 85
8.1.2 十进制运算的优点 86
8.2 分区和打包十进制格式 86
8.2.1 分区十进制格式 86
8.2.2 打包十进制格式 90
8.3 打包和解包指令 92
8.3.1 问题引入 92
8.3.2 指令格式 93
8.3.3 打包指令PACK 94
8.3.4 解包指令UNPK 95
8.3.5 使用PACK和UNPK指令解决问题 97
8.4 十进制加减运算 99
8.4.1 问题引入 99
8.4.2 十进制加法指令AP 101
8.4.3 十进制减法指令SP 102
8.4.4 清零并加十进制指令ZAP 102
8.4.5 比较十进制指令CP 103
8.5 十进制乘除运算 104
8.5.1 十进制乘法指令MP 104
8.5.2 十进制除法指令DP 105
8.6 输出编辑 107
8.6.1 ED指令 107
8.6.2 EDMK指令 116
8.7 十进制移位操作 122
8.8 十进制与二进制之间的转换 123
习题 125
第9章 分支程序设计 131
9.1 分支程序设计——应用问题 131
9.2 条件转移的实现 131
9.3 比较指令 133
9.3.1 算术比较和逻辑比较 133
9.3.2 算术比较指令 133
9.3.3 逻辑比较 137
9.4 分支指令 141
9.4.1 条件分支指令BC 141
9.4.2 寄存器条件转移指令BCR 143
9.4.3 扩展助记符指令 144
9.5 分支和循环结构编程 145
9.5.1 IF-THEN结构的实现 145
9.5.2 IF-THEN-ELSE结构的实现 146
9.5.3 DO-WHILE结构的实现 146
习题 147
第10章 数据操作指令 149
10.1 载入和存储指令 149
10.1.1 载入全字指令L 149
10.1.2 载入半字指令LH 149
10.1.3 多寄存器载入指令LM 150
10.1.4 寄存器载入指令LR 150
10.1.5 载入测试指令LTR 151
10.1.6 存储全字指令ST 151
10.1.7 存储半字指令STH 152
10.1.8 多寄存器存储指令STM 152
10.1.9 插入字符指令IC和存储字符指令STC 153
10.1.10 屏蔽插入字符指令ICM和屏蔽存储字符指令STCM 153
10.2 传递指令 155
10.2.1 传递字符指令MVC 155
10.2.2 传递立即数指令MVI 155
10.2.3 长移动指令MVCL 156
习题 158
第11章 定点二进制计算 161
11.1 定点运算的数据表示 161
11.2 定点加法 162
11.2.1 寄存器加指令AR 162
11.2.2 全字加指令A 162
11.2.3 半字加指令AH 164
11.3 定点减法 165
11.3.1 寄存器减指令SR 165
11.3.2 全字减指令S 166
11.3.3 半字减指令SH 166
11.4 定点乘法 166
11.4.1 寄存器乘法指令MR 166
11.4.2 全字乘指令M 167
11.4.3 半字乘指令MH 168
11.5 定点除法 171
11.5.1 寄存器除法指令DR 172
11.5.2 全字除指令D 173
11.5.3 应用实例 174
习题 176
第12章 循环程序设计 182
12.1 迭代循环程序设计 182
12.1.1 计数循环指令BCT 182
12.1.2 BCTR指令 183
12.2 地址运算 184
12.3 数组处理 185
12.3.1 数组的定义 185
12.3.2 数组的处理技术 186
习题 188
第13章 位操作程序设计 191
13.1 布尔运算 191
13.1.1 RX型的布尔操作 192
13.1.2 RR型的布尔操作 194
13.1.3 SI型的布尔操作 195
13.1.4 SS1型布尔操作 197
13.2 移位操作 198
13.2.1 移位类型 198
13.2.2 逻辑移位指令 199
13.2.3 算术移位指令 201
13.3 位测试指令 206
习题 208
第14章 模块化编程 210
14.1 主程序与子程序 210
14.1.1 主程序与子程序的概念 210
14.1.2 主程序和子程序的连接过程 211
14.1.3 外部子程序的编译连接过程 211
14.2 子程序设计 212
14.2.1 子程序的结构 212
14.2.2 子程序的调用与返回 213
14.2.3 主程序和子程序的实现 216
14.3 与高级语言编程模块间的连接 231
14.4 虚拟段 233
14.4.1 虚拟段的定义 233
14.4.2 虚拟段的使用 234
14.4.3 虚拟段程序示例 235
习题 238
附录A IBM EBCDIC编码表 243
附录B 扩展助记符表 245
附录C 常用指令表 246
附录D 程序8-1汇编后的程序列表 249
附录E 程序8-2汇编后的程序列表 258
附录F 程序11-1汇编后的程序列表 269
附录G 程序11-2汇编后的清单 276
附录H 程序13-1的汇编清单 289