Електроний посібник з
дисципліни "Мікропроцесорні системи"
 
Дипломный проект
 
                                                    6.6. Повідомлення про помилки асемблювання

SYNTAX ERROR. (Синтаксична помилка). Звичайно ця помилка виникає через пропущену кому або круглу дужку.
CAN'T   RESOLVE   OPERAND. (Неможлива ідентифікація звертання до операнду). Незрозуміло, що в цьому випадку передбачалося програмістом.
ILLEGAL ADDRESSING MODE. (Неправильний режим адресації). Адресація операнда з використанням даної форми адресації неприпустима.
ILLEGAL ARGUMENT. (Неправильний аргумент). У даному контексті операнд не може бути використаний.
MULTIPLY DEFINED SYMBOL. (Символ уже описаний). Даний символ уже описаний раніше (не включаючи '.VAR').
ILLEGAL MNEMONIC. (Неправильне мнемонічне позначення). Дане мнемонічне позначення не існує і не було використано для завдання макросу.
# TOO LARGE. (Число занадто велике). Результат занадто великий для даного операнда.
ILLEGAL ASCII DESIGNATOR. (Неправильний код таблиці ASCII).
Неправильний символ пунктуації або код таблиці Ascii.
HEX # AND SYMBOL ARE IDENTICAL. (Шістнадцяткове число й символ є ідентичними). Існує деяка мітка, яка в точності ідентична шістнадцятковому числу, використовуваному в якості операнда. Для того, щоб виникла ця помилка, навіть індикатор шістнадцяткового числа повинен бути на тій самій позиції.
UNDEFINED SYMBOL. (Символ не визначено). Символ не був описаний у період виконання першого проходу асемблера.
RELATIVE   JUMP   TOO   LARGE. (Занадто далекий відносний перехід). Результуюча адреса переходу перебуває на іншій сторінці.
EXTRA   CHARACTERS   AT   END   OF   OPERAND. (Наприкінці операнда присутні зайві символи). Звичайне виникнення цього повідомлення пов'язано з наявністю синтаксичної помилки або помилки формату.
Примітка: дана помилка виникає при останній перевірці якої-небудь команди перед тим, як Асемблер переходить до наступного рядка, і вона позначає, що після припустимого символу завершення операнда знаходяться зайві символи.
LABEL VALUE CHANGED BETWEEN PASSES. (Значення мітки змінилося між проходами Асемблера). Значення символу (ідентифікатора), декодоване в період виконання проходу 1, не дорівнюється виявленому при виконанні проходу 2.
Примітка: ця помилка звичайно виникає в тому випадку, коли Асемблер обробляє інші частини програми при виконанні проходу 1 у порівнянні із проходом 2 через зміну значень аргументів директив умовної компіляції. Для виявлення подібних типів помилок може виявитися корисною директива PASS1 ON/OFF.
ATTEMPTED DIVISION BY ZERO. (Почата спроба ділення на нуль). При виконанні ділення дільник дорівнює 0.
ILLEGAL EXTERNAL REFERENCE. (Неправильне зовнішнє посилання). У даному контексті зовнішнє посилання використовуватися не може.
NESTED CONDITIONAL ASSEMBLY UNBALANCE DETECTED. (Виявлено дисбаланс при аналізі вкладених структур асемблера). Виявлено яку-небудь директиву класу '.IF', котрий не відповідає парна директива '.ENDIF'.
ILLEGAL  REGISTER. (Неприпустимо використання регістру). Для даної команди неприпустимо використання зазначеного регістру.
CANT RECOGNIZE NUMBER BASE. (Неможливо визначити основу системи числення числа). Задана основа системи числення числа не допускається асемблером.
NOT ENOUGH  PARAMETERS. (Не вистачає параметрів). У макросі число аргументів перевищує число параметрів.
ILLEGAL LABEL 1ST CHARACTER. (Неправильний перший символ мітки). Мітка повинна починатися з алфавітного символу.
MAXIMUM EXTERNAL SYMBOL COUNT EXCEEDED. (Перевищено максимальне число зовнішніх символів). У модулі було задано занадто велике число зовнішніх символів (ідентифікаторів).
Примітка:   у   модулі   припустимо   приблизно   500   зовнішніх   символів
(ідентифікаторів).
MUST BE IN SAME SECTION. (Повинен перебувати в тій самій секції). Операнд команди перебуває в іншій секції.
NON-EXISTENT INCLUDE FILE. (файл, що включається, не існує). Файл не може бути знайдений.
ILLEGAL NESTED INCLUDE. (Неправильно вкладене увімкнення файлів). Один файл, що увімкнено, містить директиву .INCLUDE. Дане повідомлення про помилку може також зазначати на відсутність оператора END у якому- небудь файлі, що увімкнено.
NESTED SECTION UNBALANCE. (Дисбаланс вкладених секцій). В описі вкладеної секції відсутня ENDS.
MISSING DELIMITERS ON MACRO CALL LINE. (У рядку виклику макросу пропущені обмежники). Виявлена розбіжність обмежників під час виклику макросу.
MULTIPLE EXTERNALS IN THE SAME OPERAND. (У одному й тому самому операнді виявлена множина зовнішніх символів (ідентифікаторів). У одному й тому самому операнді існує більш одного зовнішнього символу (ідентифікатора)).
A LABEL IS ILLEGAL ON THIS INSTRUCTION. (Мітка не може бути застосована до даної команди). Дане повідомлення про помилку використовується для того, щоб позначити мітки, що не одержують переміщуваного значення, такі як ENDM або MACEND. Використання цих міток неприпустимо для даної команди.
MACRO STACK OVERFLOW. (Переповнення стека макросів). Використано занадто великий ступінь вкладення макросів.
Примітка: дана помилка може бути викликана занадто великою кількістю рекурсивних викликів макросів. Стек допускає використання приблизне 700 вкладених або рекурсивних викликів макросів. На кількість макросів впливає число аргументів, які використовуються в макросі.
MISSING LABEL. (Пропущена мітка). У даній команді потрібна присутність мітки.
OPERAND  MUST  BE  DEFINED  AS  AN  8  BIT  RELOCATABLE  VALUE.
(Операнд може бути описаний як 8-бітове переміщуване значення). Це повідомлення про помилку виникає, коли 16-бітова адреса використовується в команді, що допускає 8-бітовий операнд. Для того щоб зробити це значення переміщуваним, необхідно використовувати знак <або>.
MISSING RIGHT ANGLE BRACKET. (Пропущена права кутова дужка). Права кутова дужка є обов'язковою.
MACRO NAME MUST APPEAR ON SAME LINE AS MACRO DEFINITION.
(Ім'я макросу повинно з'являтися на тому самому рядку, що й опис макросу).
ILLEGAL LOCAL LABELS. (Неприпустиме використання локальних міток). Мітки не можуть бути описані як локальні. Наприклад, .VAR.
MISSING   MODULE   DIRECTIVE. (Пропущена директива опису модуля MODULE).
MISSING ENDMOD DIRECTIVE. (Пропущена директива ENDMOD (задання кінця модуля)).
'Module' CAN'T BE IN 'Include' FILE. (Директива 'Module' не може перебувати у
'приєднувальному' файлі).
'Endmod' CAN'T BE IN 'Include' FILE. (Директива 'Endmod' не може перебувати у 'приєднувальному' файлі).