Большинство Ассемблеров немедленно распознает наиболее распространенные ошибки, такие как:
u Неопределенный код операции(обычно это неправильное написание или отсутствие двоеточия или метки);
u Неопределенное имя (часто это неправильное написание или отсутствие определенного имени);
u Неверный символ (например, 2 в двоичном числе или В в десятичном числе);
u Неправильное значение(обычно это число, которое слишком велико для 8 или 16 разрядов);
u Отсутствует операнд;
u Двойное определение(одному и тому же имени присваиваются два различных значения);
u Недопустимая метка(например, метка, предписанная псевдооперации, не допускающей метки);
u Отсутствие метки (например, при псевдооперации EQU, для которой требуется метка).
Эти ошибки неприятны, но они легко исправимы. Единственная трудность возникает тогда, когда ошибка (такая, как отсутствие точки с запятой у строки с комментарием) приводит Ассемблер в «замешательство», результатом чего является ряд бессмысленных сообщений об ошибках.
Существует, однако, много простых ошибок, которые Ассемблер не может распознать. Программисту следует иметь в виду, что его программа может содержать такие ошибки, даже если Ассемблер и не сообщил о них.
Типичны следующие примеры.
u Пропущенные строки.
u Пропущенные определения.
u Ошибки в написании, когда запись сама по себе допустима.
u Обозначение команд как комментариев.
u Если в команде, которая работает с парой регистров, задается одинарный регистр.
u Если вводится неправильная цифра, такая как Х в десятичном или шестнадцатеричном числе или 7 в двоичном числе.
В Ассемблере могут распознаваться только такие ошибки, которые предусмотрел его разработчик.
Программисты же часто способны делать ошибки, которые разработчик не мог и вообразить, такие ошибки возможно найти при проверке программ вручную строчка за строчкой.
Распространенные ошибки в драйверах ввода-вывода
Так как большинство ошибок в драйверах ввода-вывода связано как с аппаратурным, так и с программным обеспечением, они трудно поддаются классификации. Приведем некоторые возможные случаи.
u Смешивание портов ввода и вывода.
u Попытка выполнить операции, которые физически невозможны.
u Упущенные из вида неявных эффектов аппаратуры.
u Чтение или запись без проверки состояния.
u Игнорирование различия между вводом и выводом.
u Ошибка при сохранении копии выводимых данных.
u Чтение данных до того, как они стабилизируются, или во время их изменения.
u Отсутствие изменения полярности данных, которые передаются к устройству или от устройства, работающего с отрицательной логикой.
u Смешивание действительных портов ввода-вывода с внутренними регистрами интегральных схем ввода-вывода.
u Неправильное использование двунаправленных портов.
u Отсутствие очистки состояния после выполнения команды ввода-вывода.