20-PLM程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

PL/M51程序设计11PL/M程序设计基础PL/M-51的程序书写格式相当灵活,其说明语句写在输入行的位置不受限制,而且程序元素之间可以随意插入空格。1.1PL/M字符集PL/M中用到的字符集,是ASCII字符集的一个子集,包括如下几个字符形式:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789以及专用字符:=./()+-‘*:;$等,此外,还有空格符、制表符、回车符和换行符。这里提出的规则,适用于除了字符串常量和注解以外的PL/M51程序的每个环节。如果在PL/M51程序中包含了任何不在以上字符集中出现的字符,则编译程序就把它按出错处理。大写字母和小写字母,除了在字符串常量中外,程序中的书写形式一般没有什么区别,如xyz和XYZ可以交换。此外,空格的多少,除在字符串常量中外,也没有区别,编译程序把连续的空格符视为一个空格对待。专用字符以及它们的组合,在一个PL/M程序中有特定的含义。专用字符及其组合列入表中。专用字符及其组合表符号名称用途=等号(1)赋值运算符;(2)关系运算符.点号(1)结构成员限制符;(2)取地址符/除号除法运算符/*说明符注解开始分界符*/说明符注解结束分界符(左括号列、行以及一些表达式的在端分界符)右括号列、行以及一些表达式的右端分界符+加号加法运算或一元数的正号符-减号减法运算或一元数的负号符‘单引号串界符*星号乘法运算符,隐含维数指定符小于号关系运算符大于号关系运算符=小于等于号关系运算符=大于等于号关系运算符不等于号关系运算符:冒号标号界符;分号语句分界符,逗号列表元素分界符2PL/M51程序设计_下横线标识符中的有效字符$美元号标识符中的无效字符1.2标识符和保留字标识符用于命名变量、过程、符号常量和语句标号,最大长度是31个字符。第一个字符必须是字母,其余字符可以是字母、数字或下划符(_)和美元符($)。随意加入的美元符($),是完全被编译程序忽略的,以提高一标识符或一个常量(不过$不能是第一个字符)的可读性。一个包括美元符号($)的标识符或常量,完全等价于除去美元符$的同一标识符。下面是有效标识符的一些例子:INPUT_COUNTXGAMMLONGIDENTIFIERNUMBER3LONG$$$IDENIFIER$$$NUMBER$$$3INPUT$COUNTINPUTCOUNT可见,两个长标识符是相同的(对编译程序而言),最下面两行标识符也是等价的,但不同于第一行标识符。保留字不能用作标识符,因为它们实际上是PL/M51语言的组成部分。以下是PL/M51的保留字,它们不能用作标识符。ADDRESSINDIRECTLY_CALLABLEANDINTERRUPTATLABLEAUXILARYLITERALLYBASEDMAINBITMINUSBYMODBYTENOTCALLORCASEPLUSCONSTANTPROCEDUREDECLAREPUBLICDISABLEREGISTERDORETURNELSESTRUCTUREENABLETHENPL/M51程序设计3ENDTOEXTERNALUSINGGOWHILEGOTOWORDIDATAXORIFPL/M51也有一组预定义标识符,用以命名内部过程,可以根据给出的目的来说明这些标识符。但一经说明,则具有相同名字的内部过程就不能再用了。下面是内部过程预说明的标识符,若这些标识符之一在DECLARE语句中作了说明,则在这个说明的作用域内相应的内部过程,就变成没有用的标识符。BOOLEANROLDECRORDOUBLESCLEXPANDSCRHIGHSHLLASTSHRLENGTHSIZELOWTESTCLEARPROPAGETETIME1.3标记、分隔符和空格的使用正如英文句子是由单词组成的一样,PL/M语句也是由标记组成的。每个有下列诸类:1.标识符2.保留字3.简单分界符。除下划线(_)和美元符($)外,所有专用字符都是简单分界符。4.复合分界符——两个专用字符的组合。包括:、=、=、/*、*/。5.数值常量。6.字符串常量。显然,在大多数情况下,一个符号结束时,下一个符号紧接着出现,例如下面赋值语句中:EXACT=APPROX*(OFFSET-3)/SCALE;EXCAT,APPROX,OFFSET和SCALE是标识符,3是一数值常量,其它所有字符都是简单分界符。有时在两标识符、保留字或数值常量之间并不出现简单或复合分界符。例如:DECLAREABYTE在这种情况下,必须插入空格作为分隔符,即DECLAREABYTE(连续多个空格可以代替单个空格使用)。同样,注解语句也可当作分隔符使用。空格也可以随意插入到标记的两侧,并不改变PL/M1语句的意义。因此,下面的赋值4PL/M51程序设计语句:EXACT=APPROX*(OFFSET-3)/SCALE;等价于:EXACT=APPROX*(OFFSET-3)/SCALE;1.4常量常量是在程序执行时不能变化的值。这里对数值常量和字符常量予以简单说明。数值常量数值常量可以用二进制、八进制、十进制或十六进制数表示,编译程序分别通过后缀B、O(或Q)、D或H来识别它们。不加后缀的数值,通常认为是十进制数。如果一个常量含有在已指定了的数据基下无效的字符,则它被认为不合法(错误)而标识出来。最大的数值字常量是:1111$1111$1111$1111B=177777Q=65535D=0FFFFH十六进制数的第一个字符必须是一个自然数,以避免与标识符混淆。如用十六进制表示163,必须写成品0AH,而不写成A3H,否则会被误码认为标识符。有效数值常量的例子列举如下:12AH233Q1010B55D0BF3H65535777O3EACH;无效的数值常量举例如下:12A——十六进制数字,但没有后缀,因此按无效的十进制数解释。12AD——最后的D可以是一个后缀,但是A不是十进制数字,如果是十六进制数,则最后应加一后缀。1102B——2不是一个有效的二进制数字。2ADGH——G不是一个有效的十六进制数字。一个数值常量可以是一位值、一个字节或者一个字值,这取决于其大小和前后关系。字符串常量由单引号括起来的可打印ASCII字符即构成字符串。一个字符串中含有引号时,按双引号书写,如串‘Q’由两个字符组成,一个引号再跟一个Q。字符串中允许加空格,编译程序在存贮器中是以ASCII码表征字符串;七位的字符码可以通过高位补零转换成八位的字节;长度为1的串译成一个字节的值,长度为2的串译成双字节的值。参见下面的例子:‘A’等价于41H‘AG’等价于4147H字符串只能作字节或字型值。由于多于2个字符的字符串将超出一个字(16位)值所能表征的能限,因此,较长字符串作常量时必须以字节串的形式存贮,方可在PL/M程序中使用。字符串常量的最大长度是254字符,串常量可以用来予置初值常量或作为地址分配的一部分,来指出串常量的存贮位置。1.5注解说明性的注解可与PL/M程序正交叉书写,以提高程序的可读性,并提供程序的文本。PL/M-51的注解是一个字符序列,左边由字符对/*分界开始,右边由字符对*/分界结束。PL/M51程序设计5这两个分界符表明编译程序在其之间的任何信息不参与编译,不把这部分信息视作程序的一部分。注解可以包含任何打印的ASCII字符,也可以包括空格、回车、换行和制表符。注解不能嵌于一个字符串常量中,否则它将被理解为串常量的一部分,而使编译程序不能识别。除此之外,凡空格符能出现的地方就可用注解,即除了标记内的任何地方。因此,注解可以分布在整个PL/M程序中。这里,给出PL/M注解的一个简单例子:/*Thisprocedurecopiesonestructuretoanother.*/在本书中,注解使用小写字母,以利于与由大写字母表示的程序代码相区别。2类型与说明符号名的说明定义有五种类型,即:变量、常量、文字常量(串)、标号和过程。用在程序块中的每个符号名只能进行唯一的说明,该说明可出现在程序块的开始或者在外层程序块中。同一程序块中对同名进行多次说明是无效的。变量、常量、文字常量和过程,必须在说明和定义后才能用在可执行语句中,标号可以通过其后跟一冒号隐含地得到说明。过程是由PROCEDURE过程说明语句和过程结束语句END之间的语句组定义的。除以上各项的名字外,说明语句还可以描述其类型、属性和位置。2.1变量说明语句DECLARE语句是一种非执行语句,它引入了一些对象或对象的集合,给它们命名(有时赋值),需要时还可为它们分配存贮。DECLARE最重要的作用是说明定义变量。变量可以是标量(即单一的量)、数组或结构。变量有更通用的一层含义,即变量可以是一个标量变量,或是可以用一个标识符引用的标量表(数组)。标量变量是一单独的说明对象,其值在编译时不一定必须知道,它在程序执行过程中可以变化,因而在引用时要在程序中说明。它所使用的名字:标识符。在数组中,所有的标量都用同一标识符命名,彼此之间的区别在于下标不同,如A(0)、A(1)、A(123)等等。结构(类型)是标量或数组构成的表,它们使用同一主标识符,相互间可以由其自身的元素标识符字段加以区别。例如,EMPLOYEES.NAME所指的是结构EMPLOYEES中的NAME字段。这种类型的变量(数组和结构)将在第四章中详细阐述。2.2类型标量总是具有字节(BYTE)、字(WORD)或位(BIT)等几种类型。字节型标量是占内存一字节的8位二进制数;字节标量的值是一无符号数,其值的范围为0-255,字型标量占用内存连续两字节的16位二进制数,其最低有效8位存放在第一字节(低地址);字型标量的值是无符号数,其值范围是0~65535,与其它PL/M-51编译程序兼容,保留字ADDRESS可以与WORD同义地使用。位型标量只含0(FALSE)或1(TRUE)两种取值。它必须放在6PL/M51程序设计片内RAM的32到47中的位可寻址单元或在可位寻址存贮映射的硬件寄存器中。因此,位型量只能有片内RAM(MAIN)或寄存器(REGISTER)后缀。位型量(BIT)具有如下几个方面重要限制:1.不能有下标,也就是说位型数组是不存在的。2.不能是基变量(BASED)。3.在片内RAM(MAIN)中的位型量不具有AT属性,但映射到硬件寄存器中的位型量必须是AT确切指出的寄存器地址。4.位可以是结构中的成员。然而,一个含有BIT成员的结构不可含有非位型成员,它即不可以是一数组元素,又不可以是基址变量(如果它具有一个专用功能的位寄存器可以是AT)。注意:字节可以覆盖位型结构,以允许BYTE语句对存贮单元的访问。例如:DECLARES1STRUCTURE((B0,B1,B3,B3,B4,B5,B6,B7)BIT);DECLARES1_OVERBYTEAT(S1);5.最大允许64位。对BIT型量的这些限制,不是人为给定的,它们取决于MSC-51体系结构,而使用ASM-51,则不存在以上的限制。数据类型的概念,不仅用于变量,而且也适用于PL/M51程序处理的每一个值,这包括过程调用返回的值和处理表达式计算得出的值。使用不同类型的算术表达式和其它表达式将在第三章阐述。下面是几个说明标量的语句举例:DECLAREAPPROXWORD;DECLARE(OLD,NEW)BIT;DECLAREPOINTWORD,VAL12BYTE;第一行语句说明其标识符为APPROX字型的单个变量,第二行语句说明了两个标量OLD和NEW均为位型标量。这种语句称为“因子式说明”语句,它等价于下述序列:DECLAREOLDBITDECLARENEWBIT只有因子式说明才能保证这两个位型标量在内存中的分配是相邻的。第三行语句说明了不同类型的两个标量:POINT是字型标量,而VAL12是字节型标量。下面语句对数组进行说明:DECLAREDOMAIN(12)BYTEAUXILIARY;DECLAREGOMMA(19)WORD;第

1 / 60
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功