Александр Микушин - Занимательно о микроконтроллерах стр 49.

Шрифт
Фон

Занимательно о микроконтроллерах

Рис. 8.3.Пример оператора, записанного на языке программирования ASM-51

Поле комментария начинается с символа "точка с запятой" (;) и может содержать любые ASCII- или ANSI-символы. Это поле используется для записи пояснений к программе. Оператор, в котором присутствует только поле комментария, используется для увеличения наглядности программы. Примеры записи комментариев на языке программирования ASM-51 приведены в листинге. 8.2.

Занимательно о микроконтроллерах

Символы языка ASM-51

Символы исходной программы представляют собой подмножество таблиц символов ASCII для DOS и ANSI для Windows. В исходном тексте программы, написанном на языке программирования ASM-51, могут быть использованы следующие символы:

- символы интервала;

- буквы;

- знаки;

- цифры.

Символы интервала определяют один или несколько пробелов в предложении исходного модуля. К этим символам относятся "пробел" и "табуляция".

В качестве букв воспринимаются латинские буквы верхнего и нижнего регистра:

А, В, С, D, E, F, G, H, I, J, К, L, М, N, О, Р, Q, R, S, T, U, V, W, X, Y, Z, а, Ь, с, d, e, f, g, h, i, j, k, 1, m, n, o, p, q, r, s, t, u, v, w, x, y, z.

Кроме того, в качестве букв могут быть использованы символы вопросительного знака (?) и подчеркивания (_).

Ниже приведен перечень цифр:

0, 1, 2, 3, 4, 5, б, 7, 8, 9.

Для записи шестнадцатеричных цифр дополнительно могут быть использованы следующие символы:

а, Ь, с, d, е, f, А, В, С, D, E, F.

Наименования знаков и их обозначения приведены в табл. 8.1.

Александр Микушин - Занимательно о микроконтроллерах

Знаки, комбинации знаков (<>, >=, <=), а также символы интервала являются разделителями конструкций языка. До и после знака-разделителя в любой конструкции языка могут быть вставлены символы интервала.

ASCII- или ANSI-символы, не входящие в перечень основных символов алфавита языка, считаются дополнительными. Они могут использоваться в комментариях для пояснений в исходном тексте программы, а также для определения символьных констант.

Из символов формируются идентификаторы и числа.

Идентификаторы

Идентификатор - это символическое обозначение объекта программы.

В качестве идентификатора может быть использована любая последовательность букв и цифр. При этом в качестве буквы может быть использована любая буква латинского алфавита, а также вопросительный знак (?) и знак "нижнее подчеркивание" (_). Идентификатор может начинаться только с буквы! Это позволяет отличать его от числа. В идентификаторах язык программирования ASM-51 различает буквы верхнего и нижнего регистров.

Количество символов в идентификаторе ограничено только длиной строки (255 символов), но при этом транслятор языка программирования ASM-51 различает идентификаторы по первым 31 символам.

Примеры записи идентификаторов:

ADD5, FFFFH,? ALFA_1.

В языке программирования ASM-51 имеются три категории идентификаторов:

1. Ключевые слова.

2. Встроенные имена.

3. Определяемые имена.

Ключевые слова

Ключевое слово является определяющей частью оператора языка программирования. Значения ключевых слов языка ASM-51 не могут быть изменены или переопределены в программном модуле каким-либо образом. Ключевому слову не может быть назначено имя-синоним. Ключевые слова могут быть написаны буквами как верхнего, так и нижнего регистров. То есть ключевое слово MOV и ключевое слово MOV полностью эквивалентны.

В языке программирования ASM-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.

Директивы совместно с вспомогательными словами определяют действия, которые должны быть выполнены ассемблером в процессе преобразования исходного текста программы в объектный код. В языке программирования ASM-51 используются:

Директивы:

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 текущего банка регистров, а также аккумулятору А и флагу переноса С. Список встроенных имен приведен в табл. 8.2.

Александр Микушин - Занимательно о микроконтроллерах

Определяемые имена

Определяемые имена объявляются пользователем. В языке программирования ASM-51 имеются следующие категории определяемых идентификаторов:

- метки;

- внутренние и внешние переменные адресного типа;

- внутренние и внешние переменные числового типа;

- имена сегментов;

- названия программных модулей.

Числа и литеральные строки

В языке программирования ASM-51 используются целые беззнаковые числа, представленные в двоичной, восьмеричной, десятичной и шестнадцатеричной формах записи. Для определения основания системы счисления используется суффикс (буква, следующая за числом):

- В определяет двоичное число (разрешенные цифры 0, 1);

- Q\O определяет восьмеричное число (разрешенные цифры 0, 1, 2, 3, 4, 5, 6, 7);

- D определяет десятичное число (разрешенные цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

- Н определяет шестнадцатеричное число (разрешенные цифры 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).

Для десятичного числа суффикс может отсутствовать. Количество символов в числе ограничено размером строки, однако значение числа определяется по модулю 216 (т. е. диапазон значений числа находится в пределах от 0 до 65535).

Примеры записи чисел:

011101b, 1011100B, 735Q, 45бо, 256, 0fah, 0CBH.

Число всегда начинается с цифры. Это необходимо для того, чтобы отличать шестнадцатеричное число от идентификатора. Например:

- ADCH - идентификатор;

- ADCH - число.

Часто бывает удобно выполнить некоторые вычисления для того, чтобы получить число. При этом, если поместить в текст программы предварительно вычисленное на калькуляторе значение, то может возникнуть вопрос: откуда взялось это значение. Лучше ввести формулу расчета и сами значения непосредственно в исходный текст программы. Язык программирования ASM-51 позволяет выполнять беззнаковые операции над числами. В таких выражениях допустимо использовать следующие арифметические операции:

+ суммирование;

- вычитание;

* умножение;

/ деление;

mod вычисление остатка от целочисленного деления.

В языке программирования ASM-51 также определена одноместная операция изменения знака - "минус" (-). Для нее требуется только один операнд - тот, которому она предшествует.

Часто требуется выполнять операции в определенном порядке, отличающемся от принятого по умолчанию. Для изменения порядка выполнения операций можно воспользоваться скобками. Более того, использование скобок в ряде случаев повышает наглядность программы и, тем самым, уменьшает время ее отладки.

Кроме арифметических операций в выражениях допустимо использование следующих логических операций:

- not побитовая инверсия операнда;

- and логическое "И";

- or логическое "ИЛИ";

- хоr "исключающее ИЛИ" (суммирование по модулю два);

- функции выделения старшего "HIGH" и младшего "LOW" байта 16-разрядного числа.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке