Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Исходный текст программы на языке программирования ASM-51Содержание книги
Поиск на нашем сайте
Исходный текст программы представляет собой последовательность операторов языка программирования ASM-51, сгруппированных в сегменты и оформленных в виде файла. Оператор – это базовая конструкция языка программирования, определяющая действия в программе. В языке программирования ASM-51 в одной строке может быть записан только один оператор! Максимальный допустимый размер строки – 255 символов. Признаком конца оператора является символ "возврат каретки", который вводится в текст программы при нажатии на клавишу ‘Enter’ в конце строки. Оператор языка программирования ASM-51состоит из трех полей: <поле метки> <поле операции> <поле комментария> Любое из полей, в том числе и все поля, могут отсутствовать. Оператор, в котором все поля отсутствуют, называется пустым оператором. Он используется для увеличения наглядности программы. Пример оператора, записанного на языке программирования ASM-51, приведен на рис. 23.3. Поле метки используется для записи меток или имен директив. Метка представляет собой определяемое программистом имя, заканчивающееся двоеточием, и используются для организации условных и безусловных переходов, а также для объявления переменных и констант. Имя директивы представляет собой определяемое программистом имя и используется для объявления переменных, констант и имен программных сегментов. Рис. 23.3. Пример оператора, записанного на языке программирования ASM-51 Если в операторе присутствует только метка, то она помечает ближайший следующий оператор, в котором присутствует инструкция процессора или директива ассемблера. Использование оператора, содержащего только метку, может быть вызвано либо слишком большой длиной самой метки, либо необходимостью присвоить одному непустому оператору нескольких меток. Наиболее яркий пример использования нескольких меток — это когда одна метка используется в качестве имени подпрограммы, а другая обозначает начало цикла. Пример использования оператора, содержащего только метку, приведен в листинге 23.1. Листинг 23.1 Пример использования оператора, содержащего только метку PodprogrammaPeredachiDannyh:;Помечается следующий оператор CopyNxtByte: Mov R0, A Mov A, @R0 DJNZ R0, CopyNxtByte Поле операции используется для записи директивы языка или команды микроконтроллера и состоит из мнемонического обозначения командыи одного или нескольких операндов. При записи машинной команды первый операнд всегда является приемником результата операции. Второй операнд всегда является источником данныхдля выполняемой операции. Если в команде для выполнения операции требуется два источника данных (например, операция суммирования), то первый операнд используется и в качестве источника и в качестве приемника данных. В качестве операндовмогут использоваться адреса ячеек памяти, обозначения регистров или метки операторов. Операнды отделяются друг от друга запятыми. Вместе с запятыми для увеличения читаемости программы допускается использование символов интервала(пробел или табуляция). Поле операции подробно показано на рис. 23.3. Поле комментария начинается с символа "точка с запятой" (;) и может содержать любые ASCII- или ANSI-символы. Это поле используется для записи пояснений к программе. Оператор, в котором присутствует только поле комментария, используется для увеличения наглядности программы. Примеры записи комментариевна языке программирования ASM-51 приведены в листинге. 23.2. Листинг 23.2. Примеры записи комментариев на языке программирования ASM-51 ;------------------------------------------------------------------------ ; ПОДПРОГРАММА ВЫЧИСЛЕНИЯ ФУНКЦИИ ;------------------------------------------------------------------------ ; X + Y * Z Символы языка ASM-51 Символы исходной программы представляют собой подмножество таблиц символов ASCII для DOS и ANSI для WINDOWS. В исходном тексте программы, написанном на языке программирования ASM-51, могут быть использованы следующие символы: q символы интервала; q буквы; q знаки; q цифры. Символы интервала определяют один или несколько пробелов в предложении исходного модуля. К этим символам относятся "пробел" и " табуляция". В качестве букв воспринимаются латинские буквы верхнего и нижнего регистра: 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. Для записи шестнадцатеричных цифрдополнительно могут быть использованы следующие символы: a, b, c, d, e, f, A, B, C, D, E, F. Наименования знаков и их обозначение приведено в табл. 23.1. Таблица 23.1. Наименования знаков и их обозначение
Знаки, комбинации знаков(<>, >=, <=), а также символы интервала являются разделителями конструкций языка. До и после знака-разделителя в любой конструкции языка могут быть вставлены символы интервала. ASCII- или ANSI-символы, не входящие в перечень основных символов алфавита языка, считаются дополнительными. Они могут использоваться в комментариях для пояснений в исходном тексте программы, а также для определения символьных констант. Из символов формируются идентификаторы и числа. Идентификаторы Идентификатор— это символическое обозначение объекта программы. В качестве идентификатора может быть использована любая последовательность букв и цифр. При этом в качестве буквы может быть использована любая буква латинского алфавита, а также вопросительный знак (?) и знак "нижнее подчеркивание" (_). Идентификатор может начинаться только с буквы! Это позволяет отличать его от числа. В идентификаторах язык программирования ASM-51 различает буквы верхнего и нижнего регистров. Количество символов в идентификаторе ограничено только длиной строки (255 символов), но при этом транслятор языка программирования ASM‑51 различает идентификаторы по первым 31 символам. Примеры записи идентификаторов: ADD5, FFFFH,?, ALFA_1.
В языке программирования ASM-51 имеются три категории идентификаторов: 83. Ключевые слова. 84. Встроенные имена. 85. Определяемые имена. Ключевые слова Ключевое словоявляется определяющей частью оператора языка программирования. Значения ключевых слов языка АSM‑51 не могут быть изменены или переопределены в программном модуле каким-либо образом. Ключевому слову не может быть назначено имя-синоним. Ключевые слова могут быть написаны буквами как верхнего, так и нижнего регистров. То есть ключевое слово MOV и ключевое слово mov полностью эквивалентны. В языке программирования АSM‑51 имеются следующие категории ключевых слов: q инструкции; q директивы; q вспомогательные слова; q операции. Инструкции по форме записи совпадают с мнемоническими обозначениями команд микроконтроллеров семейства 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 текущего банка регистров, а также аккумулятору A и флагу переноса C. Список встроенных имен приведен в табл. 23.2. Таблица 23.2. Встроенные имена
Определяемые имена Определяемые именаобъявляются пользователем. В языке программирования ASM‑51 имеются следующие категории определяемых идентификаторов: q метки; q внутренние и внешние переменные адресного типа; q внутренние и внешние переменные числового типа; q имена сегментов; q названия программных модулей. Числа и литеральные строки В языке программирования ASM-51 используются целые беззнаковые числа, представленные в двоичной, восьмеричной, десятичной и шестнадцатеричной формах записи. Для определения основания системы счисления используется суффикс (буква, следующая за числом): q B определяет двоичное число(разрешенные цифры 0,1); q Q\O определяет восьмеричное число(разрешенные цифры 0,1,2,3,4,5,6,7); q D определяет десятичное число(разрешенные цифры 0,1,2,3,4,5,6,7,8,9) q H определяет шестнадцатеричное число(разрешенные цифры 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) Для десятичного числа суффикс может отсутствовать. Количество символов в числе ограничено размером строки, однако значение числа определяется по модулю 216 (т.е. диапазон значений числа находится в пределах от 0 до 65535). Примеры записи чисел: 011101b, 1011100B, 735Q, 456o, 256, 0fah, 0CBH Число всегда начинается с цифры. Это необходимо для того, чтобы отличать шестнадцатеричное число от идентификатора. Например: ADCH — идентификатор; Часто бывает удобно выполнить некоторые вычисления для того, чтобы получить число. При этом, если поместить в текст программы предварительно вычисленное на калькуляторе значение, то может возникнуть вопрос: откуда взялось это значение. Лучше ввести формулу расчета и сами значения непосредственно в исходный текст программы. Язык программирования ASM-51 позволяет выполнять беззнаковые операции над числами. В таких выражениях допустимо использовать следующие арифметические операции: q + суммирование; q - вычитание; q * умножение; q / деление; q mod вычисление остатка от целочисленного деления. В языке программирования ASМ-51 также определена одноместная операцияизменения знака — “минус” '–'. Для нее требуется только один операнд — тот, которому она предшествует. Часто требуется выполнять операции в определенном порядке, отличающемся от принятого по умолчанию. Для изменения порядка выполнения операций можно воспользоваться скобками. Более того, использование скобок в ряде случаев повышает наглядность программы и, тем самым, уменьшает время ее отладки. Кроме арифметических операций в выражениях допустимо использование следующих логических операций: q not побитовая инверсия операнда; q and логическое "И"; q or логическое "ИЛИ"; q xor "исключающее ИЛИ" (суммирование по модулю два) q и функций выделения старшего ‘HIGH’ и младшего ‘LOW’ байта шестнадцатиразрядного числа. Пример использования выражений языка программирования ASM‑51 для определения числовой константы приведен в листинге 23.3. Листинг 23.3. Пример использования выражений для определения числовой константы Init: ;----------Настроить таймер T0------------------------------------------ mov TMOD,#00000001b ; | ; ||++-------Выбрать режим 16-разрядного таймера ; |+---------Использовать внутреннюю синхронизацию ; +----------Запретить управление таймером от ножки INT0
mov TH0, #HIGH(-(F_ZQ/12)*10);Выражение для определения mov TL0, #LOW(-(F_ZQ/12)*10);константы
setb TR0;Включить таймер 0 Часто операнд используется для представления символов на экране дисплея. В этом случае для определения его значения удобнее воспользоваться не числом, а литеральной константой. Литеральная константа заключается в апострофы: 'a', 'W' mov SBUF, #’Б’;Передать по последовательному порту ANSI код буквы ‘Б’ Часто на экране дисплея приходится отображать не одну букву, а целые фразы. Их удобно запоминать в памяти программ, а затем передавать на дисплей при помощи специальной подпрограммы. Для записи фраз в памяти программ можно воспользоваться литеральными строками, для ввода которых в память программ удобно воспользоваться директивой DB: Nadp: DB ‘Ошибка в блоке 5’ В этом случае каждый символ строки заменяется отдельным байтом и запоминается в ПЗУ памяти программ. Начало строки обязательно помечается при помощи метки. Для увеличения наглядности программы следует содержание надписи отобразить в имени использованной метки.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 308; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.4.50 (0.008 с.) |