Справочник по языку Ассемблера IBM PC

             

Сообщения об ошибках


32-bit segment not allowed without .386

32-битовые флаги без директивы .386 не допускаются.

Argument needs type override

Требуется явно указать тип операнда. Требуется явно указать размер (тип) выражения, так как транслятор не может сделать этого, исходя только из контекста (см. урок 5). Отметим лишь, что такого рода ошибки исправляются с помощью оператора PTR, позволяющего сообщить транслятору истинный размер операнда.

Argument to operation or instruction has illegal size

Операнд операции или команды имеет недопустимый размер.

Arithmetic overflow

Арифметическое переполнение. Потеря значащих цифр при вычислении значения выражения.

ASSUME must be segment register

В директиве ASSUME должен быть указан сегментный регистр.

Bad keyword in SEGMENT statement

Неверное ключевое слово в операторе SEGMENT. Один из параметров директивы SEGMENT: тип выравнивания, тип объединения или тип сегмента, — имеет недопустимое значение.

Can't add relative quantities



Нельзя складывать относительные адреса.

Can't address with currently ASSUMEd segment registers

Невозможна адресация из текущих, установленных директивой assume, сегментных регистров. В выражении содержится ссылка на переменную, для доступа к которой не специфицирован сегментный регистр.

Can't convert to pointer

Невозможно преобразование в указатель.

Can't emulate 8087 instruction

Невозможна эмуляция команд сопроцессора 8087.

Can't make variable public

Переменная не может быть объявлена как PUBLIC. Скорее всего, это вызвано тем, что данная переменная была уже где-то ранее объявлена таким образом, что уже не может быть определена как общая (PUBLIC).

Can't override ES segment

Нельзя переопределить сегмент ES. Это сообщение характерно для операций типа цепочечных. В некоторых из них нельзя переопределять местоположение сегментной части адреса операнда.

Can't subtract dissimilar relative quantities


Недопустимое вычитание относительных адресов. Выражение содержит операцию вычитания двух адресов, которая для данных адресов является недопустимой. К примеру, это может случиться, если адреса находятся в разных сегментах.

Can't use macro name in expression

Недопустимо использование имени макрокоманды в качестве операнда выражения.

Can't use this outside macro

Использование данного оператора недопустимо вне макроопределения.

Code or data emission to undeclared segment

Не объявлен сегмент для кода или данных. Это может случиться, если предложение программы, генерирующее код или данные, не принадлежит ни одному из сегментов, объявленных директивами SEGMENT.

Constant assumed to mean Immediate const

Константа интерпретируется как непосредственная.

Constant too large

Слишком большая константа. Константа превышает допустимую для данного режима величину. Например, числа, большие 0ffffh, можно использовать, если только директивой .386/.386P или .486/.486Р разрешены команды процессора i386 или i486.1

CS not correctly assumed

Некорректное значение в регистре cs.

CS override in protected mode

Переопределение регистра CS в защищенном режиме. Это предупреждающее сообщение выдается, если в командной строке указан параметр /Р.

CS unreachable from current segment

CS недостижим из текущего сегмента. При определении метки кода с помощью двоеточия (:) или с помощью директив LABEL или PROC сегментный регистр не указывает на текущий кодовый сегмент или группу, содержащую текущий кодовый сегмент.

Declaration needs name

В директиве объявления не указано имя.

Directive ignored in Turbo Pascal model

В режиме TPASCAL директива игнорируется.

Directive not allowed inside structure definition

Недопустимая директива внутри определения структуры.

Duplicate dummy arguments:

Недопустимо использование одинаковых имен для формальных параметров

Expecting METHOD keyword

Требуется ключевое слово METHOD.

Expecting offset quantity

Требуется указать величину смещения.

Expecting offset or pointer quantity



Требуется указать смещение или указатель.

Expecting pointer type

Операнд должен быть указателем. Означает, что операндом текущей команды должен быть адрес памяти.

Expecting record field name

Требуется имя поля записи. Инструкция SETFIELD или GETFIELD использована без последующего имени поля.

Expecting register ID

Требуется идентификатор регистра

Expecting scalar type

Операнд должен быть константой.

Expecting segment or group quantity

Должно быть указано имя сегмента или группы.

Extra characters on line

Лишние символы в строке.

Forward reference needs override

Ошибка при использовании умолчания для ссылки вперед.

Global type doesn't match symbol type

Тип, указанный в директиве GLOBAL, не совпадает с действительным типом имени идентификатора.

ID not member of structure

Идентификатор не является полем структуры.

Illegal forward reference

Недопустимая ссылка вперед.

Illegal immediate

Недопустим непосредственный операнд.

Illegal indexing mode

Недопустимый режим индексации.

Illegal instruction

Недопустимая команда.

Illegal instruction for currently selected processor(s)

Недопустимая команда для выбранного в настоящий момент процессора.

Illegal local argument

Недопустимый локальный параметр.

Illegal local symbol prefix

Недопустимый префикс для локальных имен идентификаторов.

Illegal mаcro argument

Недопустимый параметр макрокоманды.

Illegal memory reference

Недопустима ссылка на память.

Illegal number

Недопустимое число.

Illegal origin address

Недопустимый начальный адрес.

Illegal override in structure

Недопустимое переопределение в структуре.

Illegal override register

Недопустимое переопределение регистра.

Illegal radix

Недопустимое основание системы счисления. В директиве .RADIX в качестве основания системы счисления указано недопустимое число. Основанием системы счисления могут быть только числа: 2, 8, 10 и 16. Эти числа интерпретируются как десятичные независимо от текущей системы счисления.

Illegal register for instruction



Недопустимый регистр в инструкции. В качестве операнда инструкций SETFIELD и GETFIELD использован недопустимый регистр.

Illegal register multiplier

Недопустимо указание множителя для регистра.

Illegal segment address

Недопустимый сегментный адрес.

Illegal use of constant

Недопустимо использование константы.

Illegal use of register

Недопустимо использование регистра.

Illegal use of segment register

Недопустимо использование сегментного регистра.

Illegal USES register

В директиве USES указан недопустимый регистр.

Illegal version ID

Недопустимый идентификатор версии.

Illegal warning ID

Недопустимый идентификатор предупреждающего сообщения.

Instruction can be compacted with override

Возможно сокращение длины команды, если явно указать тип имени. Из-за наличия ссылки вперед на имя идентификатора объектный код содержит дополнительные команды NOP. Этим самым транслятор резервирует место для размещения адреса идентификатора. При необходимости код можно сократить, убрав ссылку вперед, либо явно указать тип символического имени.

Invalid model type

Недопустимая модель памяти.

Invalid operand(s) to instruction

Недопустимый операнд(ы) для данной команды.

Labels can't start with numeric characters

Метки не могут начинаться с цифровых символов.

Line too long - truncated

Строка слишком длинная, и поэтому производится усечение.

Location counter overflow

Переполнение счетчика адреса.

Method call requires object name

В вызове метода необходимо имя объекта.

Missing argument list

Отсутствует список аргументов.

Missing argument or <

Отсутствует аргумент либо не указана угловая скобка <.

Missing argument size variable

Отсутствует переменная для размера блока параметров.

Missing COMM ID

Отсутствует идентификатор в директиве COMM.

Missing dummy argument

Отсутствует формальный параметр.

Missing end quote

Отсутствует закрывающая кавычка.

Missing macro ID

Отсутствует идентификатор макрокоманды.

Missing module name

Отсутствует имя модуля.

Missing or illegal type specifier



Отсутствует или неверно указан спецификатор типа.

Missing table member ID

Пропущен идентификатор элемента таблицы.

Missing term in list

Отсутствует член в списке параметров.

Missing text macro

Отсутствует текстовая макрокоманда.

Model must be specified first

Сначала должна быть указана модель памяти.

Module is pass-dependant — compatibility pass was done

Модуль зависит от прохода. Выполнен проход, обеспечивающий совместимость с MASM.

Name must come first

Имя должно быть указано первым.

Near jump or call to different CS

Адресат ближнего перехода или вызова находится в другом кодовом сегменте.

Need address or register

Требуется указать адрес или регистр.

Need colon

Требуется двоеточие.

Need expression

Требуется указать выражение.

Need file name after INCLUDE

В директиве INCLUDE должно быть указано имя файла.

Need left parenthesis

Отсутствует левая круглая скобка.

Need method name

Требуется имя метода.

Need pointer expression

Требуется выражение-указатель.

Need quoted string

Требуется указать строку в кавычках.

Need register in expression

В выражении требуется указать имя регистра.

Need right angle bracket

Отсутствует правая угловая скобка.

Need right curly bracket

Требуется правая фигурная скобка.

Need right parenthesis

Отсутствует правая круглая скобка.

Need right square bracket

Отсутствует правая квадратная скобка.

Need stack argument

Не указан стековый параметр в команде арифметики с плавающей запятой.

Need structure member name

Не указано имя поля структуры.

Not expecting group or segment quantity

Использование имени группы или сегмента недопустимо.

One non-null field allowed per union expansion

При расширении объединения допускается указывать только одно поле непустым.

Only one startup sequence allowed

Допускается только одна директива генерации кода инициализации.

Open conditional

Открытый условный блок. После завершающей программу директивы END обнаружен незакрытый условно ассемблируемый блок, открытый одной из директив IFxxx.



Open procedure

Открытая процедура. После завершающей программу директивы END обнаружен незакрытый директивой ENDР блок описания процедуры, открытый где-то в программе директивой PROC.

Open segment

Открытый сегмент. После завершающей программу директивы END обнаружен незакрытый директивой ENDS сегмент, открытый где-то в программе директивой SEGMENT.

Open structure definition

Не указан конец определения структуры (директива ENDS).

Operand types do not match

Не совпадают типы операндов. Тип одного из операндов команды не совпадает с типом другого операнда либо не является допустимым для данной команды.

Operation illegal for static table member

Для статического элемента таблицы операция не допускается.

Pass-dependant construction encountered

Обнаружена конструкция, зависящая от прохода. Данную ошибку можно исправить, убрав ссылки вперед либо указав нужное число проходов транслятора в опции командной строки /m.

Pointer expression needs brackets

Адресное выражение должно быть заключено в квадратные скобки.

Positive count expecting

Счетчик должен быть положительным.

Record field too large

Слишком длинное поле в записи.

Record member not found

Не найден статический элемент записи.

Recursive definition not allowed for EQU

Рекурсивное определение недопустимо в директиве EQU.

Register must be AL or AX

Допустимо указание только регистра al или ax.

Register must be DX

Допустимо указание только регистра dx.

Relative jump out of range by __ bytes

Адрес назначения условного перехода превышает допустимый предел на __ байт.

Relative quantity illegal

Недопустимый относительный адрес. Ссылка на адрес памяти не может быть разрешена на этапе ассемблирования.

Reserved word used as symbol

Зарезервированное слово используется в качестве имени идентификатора.

Rotate count must be constant or CL

Счетчик в командах сдвига должен быть указан с помощью константы или регистра cl.

Rotate count out of range

Недопустимое значение для счетчика сдвига.

Segment alignment not strict enough



Выравнивание сегмента недостаточно точное.

Segment attributes illegally redefined

Недопустимое переопределение атрибутов сегмента. Суть здесь в том, что пользователь может повторно открывать уже определенный ранее сегмент. Но при этом атрибуты этого сегмента должны иметь те же самые значения либо вообще быть опущены (тогда будут взяты прежние значения).

Segment name is superfluous

Имя сегмента игнорируется.

String too long

Слишком длинная строка. Длина указанной в кавычках строки превышает 255 символов.

Symbol already defined: __

Имя идентификатора уже определено.

Symbol already different kind

Имя идентификатора уже объявлено с другим типом.

Symbol has no width or mask

Имя идентификатора не может быть использовано в операциях WIDTH и MASK.

Symbol is not a segment or already part of a group

Имя идентификатора не является именем сегмента либо уже определено в группе.

Text macro expansion exceeds maximum line length

Расширение текстовой макрокоманды превышает максимально допустимую длину.

Too few operands to instruction

В команде не хватает операндов.

Too many errors or warnings

Слишком много ошибок или предупреждений. Число сообщений об ошибках превысило максимально возможное число — 100.

Too many initial values

Слишком много начальных значений.

Too many register multipliers in expression

В выражении содержится слишком много множителей для регистров.

Too many registers in expression

В выражении указано слишком много регистров.

Too many USES registers

Слишком много регистров в директиве USES.

Trailling null value assumed

Предполагается конечное пустое значение.

Undefined symbol

Идентификатор не определен.

Unexpected end of file (no END directive)

Неожиданный конец файла (нет директивы END).

Unknown character

Неизвестный символ.

Unmatched ENDP:_

Непарная директива ENDP:_.

Unmatched ENDS:_

Непарная директива ENDS:_.

User-generated error

Ошибка, сгенерированная пользователем. Сообщение выдается в результате выполнения одной из директив генерирования ошибки.

USES has no effect without language

USES игнорируется без спецификации языка.

Value out of range

Значение константы превышает допустимое значение.


Содержание раздела