第一章 概述 1
模块之间的引用:LINK过程 1
内存地址分配:LOCATE过程 1
PL/M-86语句的两种类型 4
一条规则 4
程序块:PL/M-86程序的基本结构 5
块嵌套和变量作用域:简介 6
说明语句的位置 7
可执行语句 8
赋值语句 9
IF语句 9
DO和END语句 9
内部过程和变量 11
表达式 11
输入和输出 11
第二章 说明与类型 14
变量说明语句 14
类型 14
举例 14
结果 15
初始化 15
隐含长度说明符 17
执行常量的名:DATA的使用 18
编译常量(正文替换):LITERALIY的使用 18
标号名的说明 19
结果 20
说明语句的组合 20
过程说明 21
第三章 PL/M-86程序的基本成份 23
PL/M-86字符集 23
标识符和保留字 24
标记、分隔符和空格的使用 25
常数 25
纯数常数 26
浮点常数 27
字符串 27
注解 28
第四章 算术运算、数据类型和有基变量 29
WORD和BYTE变量:无符号运算 29
INTEGER(整型)变量:带符号算术运算 29
REAL变量:浮点运算 29
POINTER变量和位置引用 30
@算符 30
用地址引用存贮字符串与常数 31
“点”算符 31
有基变量 31
地址引用与有基变量 33
内存的相邻存贮 33
AT属性 33
第五章 表达式和赋值语句 36
运算数 36
常数 36
变量和地址引用 37
子表达式 37
组合运算数 37
算术算符 37
十、一、*和/算符 38
MOD(模)算符 38
关系算符 39
逻辑算符 39
表达式的计算 40
算符的优先级:对表达式的分析 40
组合运算数类型 42
关系算符的限制 42
运算数的计算顺序 43
算术运算的选择:规则小结 43
特殊情况:常数表达式 44
赋值语句 45
隐含类型转换 46
常数表达式 46
多重赋值语句 47
内嵌赋值语句 47
第六章 结构和数组 49
数组 49
下标变量 49
结构 50
结构数组 51
结构内的数组 51
结构内带数组的结构数组 51
数组和结构的引用 52
全限定变量引用 52
非限定和部分限定变量引用 52
第七章 流程控制语句 54
DO和END语句:DO程序块 54
简单DO程序块 55
DO CASE程序块 56
DO WHILE程序块 58
循环DO程序块 58
IF语句 60
嵌套的IF语句 61
串连IF语句 63
GOTO语句 64
HALT语句 64
CALL和RETURN语句 64
第八章 实例程序 66
插入分类算法 66
第九章 程序块结构和作用域 70
程序块内认可的名 70
对多重说明语句的限制 71
扩展的作用域:PUBLIC和EXTERNAL属性 72
标号作用域与对GOTO语句的限制 73
第十章 过程 77
过程说明 77
参数 78
有类型与无类型过程 79
过程的调用——函数引用及CALL语句 80
间接过程调用 81
退出过程:RETURN语句 81
过程体 82
属性:PUBLLC、EXTERNAL、INTERRUPT和REENTRANT 83
中断和INTERRUPT属性 84
用CALL语句调用中断过程 85
可重入性和REENTRANT属性 85
实例程序2 86
第十一章 内部过程和内部变量 90
取变量的有关信息 90
LENGTH函数 90
LAST函数 91
SIZE函数 91
显式的类型和值的转换 91
LOW、HIGH和DOUBLE函数 92
FLOOAT函数 93
FIX函数 93
INT函数 94
SIGNED函数 94
UNSIGN函数 94
ABS和IABS函数 95
移位和循环移位函数 95
循环移位函数,ROL和ROR 96
逻辑移位函数,SHL和SHR 96
代数移位,SAL和SAR 96
输入和输出 97
INPUT和INWORD函数 97
OUTPUT和OUTWORD数组 97
串处理过程 98
MOVB和MOVW过程 98
MOVRB和MOVRW过程 98
CMPB和CMPW函数 99
FINDB/FINDW和FINDRB/FINDRW函数 100
SKIPB/SKIPW和SKIPRB/SKIPRW函数 100
XLAT过程 101
SETB和SETW过程 101
其它各种内部过程和变量 101
MOVE过程 101
TIME过程 102
MEMORY数组 102
STACKPTR和STACKBASE 102
LOCKSET函数 103
与中断相关的过程 104
SET$INTERRUPT过程 104
INTERRUPT$PTR函数 104
CAUSE$INTERRUPT语句 104
第十二章 与8086硬件有关的PL/M-86内部过程 105
优化与8086硬件标志 105
PLUS和MINUS运算符 105
进位循环移位内部过程 105
DEC过程 106
CARRY、SIGN、ZERO和PARITY内部过程 106
第十三章 浮点运算:REAL数的数学机构 107
PEAL值的表示方法 107
REAL参数的传递和堆栈约定 109
REAL数的数学机构 109
REAL数字运算中的异常状态 111
无效操作异常 111
非规格化操作数异常 112
除零异常 112
上溢异常 113
下溢异常 113
精度异常 113
INIT$REAL$MATH$UNIT过程 114
SET$REAL$MODE过程 114
GET$REAL$ERROR过程 114
保存和恢复REAL状态 114
SAVE$REAL$STATUS过程 115
死锁 115
REAL中断处理过程的编写 116
使用浮点运算时的连接 118
第十四章 编译程序的控制 121
编译程序控制简介 121
WORKFILES控制 123
LEFTMARGIN控制 123
目标文件控制 124
INTVECTOR/NOINTVECTOR 124
OVERFLOW/NOOUERFLOW 124
OPTIMIZE 125
OPTIMIZE(0) 125
OPTIMIZE(1) 125
OPTIMIZE(2) 125
OPTIMIZE(3) 129
OBJECT/NOOBJECT 133
DEBUG/NODEBUG 134
TYPE/NOTYPE 134
程序大小的控制 134
SMALL 135
COMPACT 135
MEDIUM 135
LARGE 135
RAM/ROM控制 135
列表选择和列表内容控制 136
PRINT/NOPRINT 136
LIST/NOLIST 136
CODE/NOCODE 137
XREF/NOXREF 137
IXREF/NOIXREF 137
SYMBOLS/NOSYMBOLS 138
列表格式控制 138
PAGING/NOPAGING 138
PAGELENGTH 138
PAGEWIDTH 139
TITLE 139
SUBTITLE 139
EJECT 139
程序列表实例 139
符号与相互对照的列表 141
编译概况 142
加进源文件的控制 142
INCLUDE 142
SAVE/RESTORE 142
条件编译控制 143
IF/ELSE/ELSEIF/ENDIF 143
SET/RESET 144
CND/N0C0ND 145
第十五章 PL/M-86编译程序及有关文件的使用 148
编译程序的调用 148
文件的使用 148
输入文件 148
输出文件 149
编译程序工作文件 149
第十六章 目标模块的节和程序大小的控制 150
8086内存概念 150
目标模块的节 150
代码节 151
常数节 151
数据节 151
堆栈节 151
内存节 152
SMALL控制 152
与PL/M-80的兼容性 153
COMPACT控制 153
MEDIUM控制 153
在MEDIUM的编程设计限制 154
LARGE控制 154
在LARGE控制下的编程设计限制 155
第十七章 出错信息 156
PL/M-86源程序出错 156
致命的命令和控制错误 175
致命的输入/输出错误 175
致命的内存贮器不足错误 176
致命的编译程序故障错误 176
附录A PL/M-86语言语法 177
附录B 程序限制 191
附录C PL/M-86的保留字 192
附录D PL/M-86预说明的标识符 193
附录E PL/M-80和PL/M-86 194
附录F 字符对照表 196
附录G IXREF程序 198
附录H PL/M-86的分段 202
附录I 运行时的过程以及汇编语言的连接 204
附录J 运行时的中断处理 207