movf I,w; Скопировать I в w
является примером напрасной траты времени, тогда как строка
movf I,w; Считать старший байт магического числа
гораздо более полезна. Исходный код, не содержащий комментариев или содержащий их очень мало, очень часто неработоспособен. Плохо документированную программу трудно отлаживать, а впоследствии изменять или дополнять. Последние действия иногда называются
Команда должна отделяться от своих операндов символами пробела или табуляции. При наличии в команде двух операндов они отделяются друг от друга запятой. В командах, у которых в качестве операнда-адресата может выступать как рабочий регистр, так и регистр данных, в поле операнда-адресата следует писать символы w или f или числа 0 или 1 соответственно. При отсутствии явного указания на операнд-адресат ассемблер по умолчанию задаст регистр данных, но при этом выдаст предупреждение программисту.
Ассемблирование
Программа ассемблера просматривает файл с исходным кодом, проверяя его на наличие синтаксических ошибок. При отсутствии последних она приступает к трансляции текста программы в абсолютный объектный код, представляющий, по большому счету, обычный машинный код, дополненный информацией, касающейся адресов памяти программ, по которым он должен быть расположен. К синтаксическим ошибкам относится, в частности, ссылка на несуществующую метку или неизвестная команда. В результате работы программы формируется файл сообщений об ошибках, содержащий все подобные «проступки». Если синтаксические ошибки отсутствуют, то генерируется файл листинга и файл с машинным кодом.
Возвращаясь к нашему примеру, процесс трансляции запускается вводом строки
mpasmwin /aINHX8M /е+ /l+ /с+ /rhex /p16f84a root.asm
где mpaswin.exe — программа ассемблера, a root.asm — наш исходный файл. Флаги задаются в виде /<опция> и могут сопровождаться знаком «+» или «-» соответственно для разрешения или запрещения данной опции. Так, ключ /е+ включает генерацию файла ошибки, /l+ — то же для файла листинга, /с+ делает метки чувствительными к регистру символов, /rhex задает основание счисления по умолчанию (шестнадцатеричное). Флаг /pl6f84а указывает ассемблеру, что исходный код предназначен для модели PIC16F84A. Программа mpaswin может транслировать код для всех микроконтроллеров PIC (с 12-, 14- или 16-битными ядрами).
Листинг
Этот файл используется только для документирования и не исполняется процессором.