1. Алфавит языка
Символы исходной программы представляют собой подмножество таблиц символов ASCII для DOS и ANSI для WINDOWS. В исходном тексте программы, написанном на языке программирования PL/M-51 допустимо использование следующих символов:
- символы интервала,
 - буквы,
 - знаки
 - цифры.
 
Символы интервала определяют один или несколько пробелов в предложении исходного модуля. К этим символам относятся "пробел" и " табуляция".
В качестве букв воспринимаются латинские буквы верхнего и нижнего регистра:
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z.
Ниже приведен перечень цифр:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Наименования знаков и их обозначение приведено в таблице 1:
| 
       Наименование  | 
    
       Обозначение  | 
  
| 
       Номер  | 
    
       #  | 
  
| 
       Знак денежной единицы  | 
    
       $  | 
  
| 
       Апостроф  | 
    
       '  | 
  
| 
       круглая скобка левая  | 
    
       (  | 
  
| 
       круглая скобка правая  | 
    
       )  | 
  
| 
       Звездочка  | 
    
       *  | 
  
| 
       Плюс  | 
    
       +  | 
  
| 
       Запятая  | 
    
       ,  | 
  
| 
       Минус  | 
    
       -  | 
  
| 
       Точка  | 
    
       .  | 
  
| 
       дробная черта  | 
    
       /  | 
  
| 
       Двоеточие  | 
    
       :  | 
  
| 
       Точка с запятой  | 
    
       ;  | 
  
| 
       Меньше  | 
    
       <  | 
  
| 
       Равно  | 
    
       =  | 
  
| 
       больше  | 
    
       >  | 
  
| 
       вопросительный знак  | 
    
       ?  | 
  
| 
       коммерческое эт  | 
    
       @  | 
  
Знаки, комбинации знаков (<>, >=, <= ), а также символы интервала являются разделителями конструкций языка. До и после знака - разделителя в любой конструкции языка могут быть вставлены символы интервала.
ASCII символы, не входящие в перечень основных символов алфавита языка, считаются дополнительными. Эти символы могут использоваться для пояснений в исходном тексте программы, а также для определения символьных констант.
Из символов формируются идентификаторы и числа.
Идентификатор это символическое обозначение объекта программы. В качестве идентификатора может быть использована любая последовательность букв и цифр. При этом в качестве буквы может быть использована любая буква латинского алфавита, а также вопросительный знак (?) и знак "нижнее подчеркивание" ( _ ). Идентификатор может начинаться только с буквы! Это позволяет отличать его от числа. В идентификаторах, язык программирования ASM-51 различает буквы верхнего и нижнего регистров.
Количество символов в идентификаторе ограничено длиной строки (255 символов). Транслятор различает идентификаторы по первым 31 символам.
Примеры идентификаторов:
ADD5, FFFFH, ?, ALFA_1.
В языке программирования ASM-51 имеются три категории идентификаторов: ключевые слова, встроенные имена и определяемые имена.
Ключевое слово является определяющей частью оператора языка ассемблера. Значения ключевых слов языка ассемблера АSМ-51 не могут быть изменены или переопределены в программном модуле каким-либо образом. Ключевому слову не может быть назначено имя- синоним. Ключевые слова могут быть написаны буквами как верхнего, так и нижнего регистров.
В языке АSМ-51 имеются следующие категории ключевых слов:
Инструкции по форме записи совпадают с мнемоническими обозначениями команд микроконтроллеров семейства MCS-51 и совместно с операндами, составляют команды микроконтроллера. Список инструкций:
ACALL, ADD, ADDC, AJMP, ANL, CALL, CJNE, CLR, CPL, DA, DEC, DIV, DJNZ, INC, JB, JBC, JC, JMP, JNB, JNC, JNZ, JZ, LCALL, LJMP, MOV, MOVC, MOVX, MUL, NOP, ORL, POP, PUSH, RET, RETI, RL, RLC, RR, RRC, SETB, SJMP, SUBB, SWAP, XCH, XCHD, XRL.Директивы совместно с вспомогательными словами определяют действия в программе, которые должны быть выполнены ассемблером в процессе преобразования исходного текста программы в объектный код. В языке программирования ASM51 используются:
Директивы: BIT, BSEG, CODE, CSEG, DATA, DB, DBIT, DS, DSEG, DW, END, EQU, EXTRN, IDATA, ISEG, NAME, ORG, PUBLIC, RSEG, SEGMENT, SET, USING, XDATA, XSEG.
Вспомогательные слова: AT, BIT, BITADDRESSABLE, CODE, DATA, IDATA, INBLOCK, INPAGE, NUMBER, PAGE, UNIT, XDATA.
Операции выполняются ассемблером в процессе вычисления выражений на этапе трансляции исходного текста программы для определения конкретного числа, которое используется в команде. Перечень операций, использующихся языком программирования ASM-51:
AND, EQ, GE, GT, HIGH, LE, LOW, LT, MOD, NE, NOT, OR, SHL, SHR, XOR.Встроенные имена присвоены адресам регистров специальных функций, адресам флагов специальных функций AR0-AR7, рабочим регистрам R0-R7 текущего банка регистров, а также аккумулятору A и флагу переноса C.
| 
       Имя  | 
    
       Регистр  | 
  
| 
       A  | 
    
       Аккумулятор  | 
  
| 
       R0-R7  | 
    
       8-разрядный рабочий регистр текущего банка рабочих регистров  | 
  
| 
       DPTR  | 
    
       16-разрядный регистр-указатель данных  | 
  
| 
       PC  | 
    
       16-разрядный счетчик команд  | 
  
| 
       C  | 
    
       флаг переноса  | 
  
| 
       AB  | 
    
       регистровая пара, состоящая из аккумулятора A (старшая часть) и регистра B (младшая часть)  | 
  
Определяемые имена объявляются пользователем. В языке программирования ASM-51 имеются следующие категории определяемых идентификаторов:
- метки,
 - внутренние и внешние переменные адресного типа,
 - внутренние и внешние переменные числового типа,
 - имена сегментов,
 - названия программных модулей.
 
В языке программирования ASM-51 используются целые беззнаковые числа, представленные в двоичной, восьмеричной, десятичной и шестнадцатеричной формах записи. Для определения основания системы счисления используется суффикс (буква, следующая за числом):
- B двоичное число (разрешЈнные цифры 0,1)
 - Q\O восьмеричное число (разрешЈнные цифры 0,1,2,3,4,5,6,7)
 - [D] десятичное число (разрешЈнные цифры 0,1,2,3,4,5,6,7,8,9)
 - H шестнадцатеричное число (разрешЈнные цифры 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
 
Для десятичного числа суффикс может отсутствовать. Количество символов в числе ограничено размером строки, однако значение числа определяется по модулю 2**16 (т.е. диапазон значений числа находится в пределах от 0 до 65535).
Примеры записи чисел:
011101b, 1011100B, 735Q, 456o, 256 , 0fah, 0CBH
Число всегда начинается с цифры. Это необходимо для того, чтобы отличать шестнадцатиричное число от идентификатора.
ADCH - идентификатор
0ADCH - число
Часто бывает удобно выполнить некоторые вычисления для того, чтобы получить число. Язык программирования ASM-51 позволяет выполнять беззнаковые операции над числами. В таких выражениях допустимо использовать арифметические операции:
- + суммирование
 - - вычитание
 - * умножение
 - / деление
 - mod вычисление остатка от целочисленного деления
 
- not побитовая инверсия операнда
 - and логическое "и"
 - or логическое "или"
 - xor "исключающее или" (суммирование по модулю два)
 
и функций выделения старшего HIGH и младшего LOW байта шестнадцатиразрядного числа.
Пример использования выражений для определения числовой константы:
Часто число используется для представления символов. В этом случае для определения числа можно воспользоваться литеральной константой. Литеральная константа заключается в апострофы:
'a', 'W'
Для записи фраз в памяти программ можно воспользоваться литеральными строками:
В этом случае каждый символ заменяется отдельным байтом и запоминается в ПЗУ памяти программ.
[Назад] [Содержание] [Вперёд]