- •Глава 1 позиционные системы счисления
- •Глава 2. Формат представления базовых данных
- •2. А положительное, b отрицательное и по абсолютной величине больше, чем а.
- •3. А положительное, b отрицательное и по абсолютной величине меньше, чем а.
- •4. А и в отрицательные.
- •Глава 2. Логические основы piCmicro
- •Элемент не
- •Элемент и
- •Элемент Исключающее или
- •Элемент или
- •Логические элементы в интегральном исполнении
- •Глава 3. Комбинационные устройства
- •Дешифраторы
- •Шифраторы
- •Мультиплексоры
- •Преобразователи кодов.
- •Сумматоры
- •Глава 4. Последовательностные устройства
- •Параллельные регистры
- •Последовательные (сдвиговые) регистры
- •Блок обработки информации алу/рабочий регистр
- •Счетчики импульсов
- •Глава 5. Запоминающие устройства Иерархия запоминающих устройств эвм
- •Иерархическая структура памяти
- •Структурная схема зу
- •Типы оперативных запоминающих устройств
- •Основные параметры запоминающих устройств
- •Микросхемы озу
- •Постоянные запоминающие устройства (пзу)
- •Флэш-память
- •Глава 6. Обработка хранимой программы
- •Режимы адресации
- •Устройство управления
- •Микроконтроллерная система
- •Глава 5. Архитектура микроконтроллера семейства p1c.
- •Регистр слова состояния status
- •Память данных
- •Параллельные порты ввода/вывода
- •Регистр таймера/счетчика tmr0
- •Eeprom память данных eedata, eeadr
- •Специальные регистры w, intcon, option
- •Глава 6. Требования языка ассемблер
- •Операнд
- •Комментарии в программах на ассемблере
- •Метка/Имя
- •Формат кодирования
- •Глава 7. Набор команд pic контроллера
- •Сложение
- •Очистка
- •Команды инкрементирования и декрементирования
- •Бит ориентированные команды
- •Вычитание
- •Глава 8. Логика и организация программ
- •Последовательное выполнение команд
- •Конструкция выбор пути
- •Команды передачи управления. Команда «нет операции»
- •Команда безусловного перехода
- •Команды условного перехода
- •Конструкция цикл
- •Косвенная адресация памяти данных
- •Глава 9. Модульное программирование
- •Временная задержка малой длительности.
- •Метод вложенных циклов
- •Временная задержка длительностью 1с.
- •10. Организация связи с оператором
Комментарии в программах на ассемблере
Использование комментариев в программе улучшает ее ясность, особенно там, где назначение набора команд непонятно. Комментарий всегда начинаются на любой строке исходного модуля с символа точка с запятой (;) и ассемблер полагает в этом случае, что все символы, находящиеся справа от (;) являются комментарием. Комментарий может содержать любые печатные символы, включая пробел.
Комментарий может занимать всю строку или следовать за командой на той же строке, как это показано в двух следующих примерах:
1. ………………… ;Эта строка полностью является комментарием
2. ADDLW .30 ; Комментарий на одной строке с командой
Комментарии появляются только в листингах ассемблирования исходного модуля и не приводят к генерации машинных кодов, поэтому можно включать любое количество комментариев, не оказывая влияния на эффективность выполнения программы.
Метка/Имя
Метка или имя является необязательным компонентом. Метка - точка программы, на которую передается управление, а имя - ячейка памяти. Следовательно, метка стоит в строке, содержащей команду; а имя стоит в строке, содержащей псевдокоманду.
Однако, физический смысл и метки, и имени - одинаков, это - адрес памяти. Во всех случаях, когда Ассемблер встречает в программе имя или метку, он заменяет ее на адрес той ячейки памяти, к которую имя/метка направляет.
Метка/имя должна начинаться в 1-й позиции строки, если метки/имени нет, то в 1-й позиции должен быть пробел.
Метки в языке ассемблера может содержать следующие символы:
Буквы: от A до Z и от a до z
Цифры: от 0 до 9
Первым символом в метке должна быть буква. Ассемблер не делает различия между ПРОПИСНЫМИ и строчными буквами.
Пример: COUNT, PAGE25, E10. Рекомендуется использовать описательные и смысловые метки. Имена регистров, например, STATUS, PORTA или PCL являются зарезервированными и используются только для указания соответствующих регистров. Например, в команде
ADDWF PCL, f ассемблер "знает", что PCL относится к регистрам.
MOVWF REGSAVE ассемблер воспримет имя REGSAVE только в том случае, если оно будет определено в начале программы.
Метку можно кодировать на одной строке с командой или на отдельной строке:
START ADDWF TEMP,F
START
ADDWF TEMP,F
Метка должна занимать крайнюю левую позицию на экране. Между меткой, командой и операндом обязательно должны быть пробелы в строке. Рекомендуется записывать метку, команду и операнд в колонку для большей удобочитаемости программы.
Формат кодирования
Основной формат кодирования команд ассемблера имеет следующий вид:
[метка]/[имя] команда/директива [операнд(ы)] комментарий
Метка/имя и команда/операнд разделяются, по крайней мере, одним пробелом или символом табуляции.
Пример:
Имя |
Команда Операнд |
Комментарий |
COUNT |
EQU 10H |
; Регистр COUNT |
;===================================== ; --Подсчет числа посетителей-------------------- ;===================================== |
||
START |
MOVWF COUNT |
; Копировать содержимое W в COUNT |
|
………… …………. |
|
|
GOTO START |
; Вернуться к началу |
ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ
При создании устройств на PICах, разработчик имеет дело с универсальным языком программирования ассемблер, при помощи команд которого задачи решаются гораздо проще и эффективнее.
Не забывайте ставить символ "точка с запятой" перед комментариями.
Завершайте программу директивой END.
Метка - точка программы, на которую передается управление, а имя - ячейка памяти.
Команда указывает ассемблеру, какое действие должен выполнить данный оператор, например, пересылка (MOV) или сложение (ADD). Обработка Ассемблером команды приводит к генерации машинного кода.
Директивы указывают ассемблеру, как проводить ассемблирование и исполняются только внутри него. Функции этих псевдокоманд состоят в подготовке к исполнению программы и определении границы, за которую программа выйти не может (директивы ORG и END).
Метка должна занимать крайнюю левую позицию на экране. Между меткой, командой и операндом обязательно должны быть пробелы в строке. Рекомендуется записывать метку, команду и операнд в колонку для большей удобочитаемости программы.
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
По какой архитектуре построены PIC контроллеры?
Какие из следующих имен неправильны: а) STATUS, б) $50, в) @$_Z, г) 34B7, д) РСL?
Что подразумевает директива END.
Укажите различия между директивой и командой.
Что означают термины ассемблер и ассемблирование?
Какую функцию выполняет директива ORG? EQU? END?
Какие операторы не создают машинного кода?
Как записать константу 12 в десятичной, двоичной и шестнадцатеричной системе счисления на языке ассемблер?
Какую функцию выполняет команда? директива?
Где расположены в программе Метка/Имя и что они определяют?
Как закомментировать команду? Что это означает?
