После того как программные модули успешно оттранслированы, размещены по конкретным адресам и связаны между собой, для отладки программы можно воспользоваться внутрисхемным эмулятором. Это инструментальное средство позволяет отображать переменные программы на дисплее персонального компьютера и оказывает значительную помощь при отладке программ непосредственно на разрабатываемой аппаратуре.
Необходимое для отладки программ оборудование показано на рис. 8.2.
Рис. 8.2.
Отдельные участки программы могут быть отлажены и при помощи специальных программ-отладчиков (симуляторов).
Как эмуляторы, так и симуляторы предназначены для обнаружения логических ошибок, содержащихся в исходном тексте программы, поэтому после обнаружения ошибки приходится исправлять исходный текст и заново транслировать его для получения исправленной версии исполняемого или загрузочного модуля. Тем не менее, окончательная отладка программного обеспечения для разрабатываемого устройства производится только после записи загрузочного модуля в память микроконтроллерной системы. Именно на этом этапе находятся и устраняются последние ошибки, допущенные при написании программы.
Исходный текст программы представляет собой последовательность операторов языка программирования ASM-51, сгруппированных в сегменты и оформленных в виде файла.
Оператор — это базовая конструкция языка программирования, определяющая действия в программе. В языке программирования ASM-51 в одной строке может быть записан только один оператор! Максимальный допустимый размер строки — 255 символов. Признаком конца оператора является символ «возврат каретки», который вводится в текст про- программы при нажатии на клавишу
Оператор языка программирования ASM-51 состоит из трех полей:
<поле метки> <поле операции> <поле комментария>
Любое из полей, в том числе и все поля, могут отсутствовать. Оператор, в котором все поля отсутствуют, называется пустым оператором. Он используется для увеличения наглядности программы. Пример оператора, записанного на языке программирования ASM-51, приведен на рис. 8.3.
Поле метки используется для записи меток. Метка представляет собой определяемое программистом имя, заканчивающееся двоеточием, и используется для организации условных и безусловных переходов, а также для объявления переменных и констант.
Если в операторе присутствует только метка, то она помечает ближайший следующий оператор, в котором присутствует инструкция процессора или директива ассемблера. Использование оператора, содержащего только метку, может быть вызвано либо слишком большой длиной самой метки, либо необходимостью присвоить одному непустому оператору нескольких меток. Наиболее яркий пример использования нескольких меток — это когда одна метка используется в качестве имени подпрограммы, а другая обозначает начало цикла. Пример использования оператора, содержащего только метку, приведен в листинге 8.1.
Поле операции используется для записи директивы языка или команды микроконтроллера. В последнем случае оно состоит из мнемонического обозначения команды и одного или нескольких операндов. При этом первый операнд всегда является приемником результата операции. Второй операнд всегда является источником данных для выполняемой операции. Если в команде для выполнения операции требуется два источника данных (например, операция суммирования), то первый операнд используется и в качестве источника и в качестве приемника данных.
В качестве операндов могут использоваться адреса ячеек памяти, обозначения регистров или метки операторов. Операнды отделяются друг от друга запятыми. Вместе с запятыми для увеличения читаемости программы допускается использование символов интервала (пробел или табуляция). Поле операции подробно показано на рис. 8.3.
Рис. 8.3.
Поле комментария начинается с символа «точка с запятой» (;) и может содержать любые ASCII- или ANSI-символы. Это поле используется для записи пояснений к программе. Оператор, в котором присутствует только поле комментария, используется для увеличения наглядности программы. Примеры записи комментариев на языке программирования ASM-51 приведены в листинге. 8.2.
Символы исходной программы представляют собой подмножество таблиц символов ASCII для DOS и ANSI для Windows. В исходном тексте программы, написанном на языке программирования ASM-51, могут быть использованы следующие символы:
— символы интервала;
— буквы;
— знаки;
— цифры.