Open conditional (Открытый условный блок)
Обнаружена директива END, означающая конец исходного файла. Однако условно ассемблируемый блок, открытый одной из директив вида IFxxx, не был закрыт директивой ENDIF. Например:
IF BIGBUF END ; нет директивы ENDIF перед директивой END
Эта ошибка обычно выдается, если вместо директивы окончания условного блока ENDIF, ошибочно указана директива END.
Open procedure (Открытая процедура)
Обнаружена директива END, означающая конец исходного файла. Однако блок описания процедуры, открытый директивой PROC, не был закрыт директивой ENDР. Например:
MYFUNC PROC END ; нет директивы ENDР перед директивой END
Эта ошибка обычно выдается, если вместо директивы конца блока процедуры - ENDP ошибочно указана директива END.
Open segment (Открытый сегмент)
Обнаружена директива END, означающая конец исходного файла. Однако сегмент, открытый директивой SEGMENT, не был закрыт директивой ENDS. Например:
DATA SEGMENT END ; нет директивы ENDS перед директивой END
Эта ошибка обычно выдается, если вместо директивы конца сегмента - ENDS ошибочно указана директива END.
Open structure definition (Не указан конец определения структуры)
Обнаружена директива END, означающая конец исходного файла. Однако определение структуры, начало которой указано директивой STRUCTURE, не было завершено директивой ENDS. Например:
X STRUC VAL1 DW ? END ; нет директивы ENDS перед директивой END
Эта ошибка обычно выводится, если вместо директивы конца структуры ENDS ошибочно указана директива END.
Operand types do not match (Не совпадают типы операндов)
Тип одного из операндов команды не совпадает с типом другого операнда либо не является допустимым для данной команды. Например:
ABC DB 5 . mov ax,ABC
Operation illegal for static table member (Для статического элемента таблицы операция не допускается)
Для получения адреса статического элемента таблицы использована операция точки. Это не допускается.
Pass-dependant construction encountered (Обнаружена конструкция, зависящая от прохода)
Действие оператора возможно не совпадает с ожидаемым из-за однопроходности Турбо Ассемблера. Например:
IF1 ; на шаге ассемблирования ENDIF IF2 ; на шаге листинга ENDIF
Большинство конструкций, с которыми связано это сообщение, может быть скорректировано так, чтобы это сообщение исчезло. Обычно для этого достаточно убрать ссылки вперед.
Pointer expression needs brackets (Адресное выражение должно быть заключено в квадратные скобки)
В режиме Ideal операнд, содержащий имя идентификатора, представляющее собой ссылку на память, не заключен в квадратные скобки. В режиме Ideal квадратные скобки означают ссылку на адрес памяти. Например:
B DB 0 mov al,B ; предупреждение: в режиме Ideal ; должно быть указано [B]
Т.к. в режиме MASM квадратные скобки не обязательны, то это сообщение выдается как предупреждающее.
Positive count expecting (Счетчик должен быть положительным)
В выражении для DUP в качестве счетчика повторений указано отрицательное число. Например:
BUF -1 DUP (?) ; ошибка: отрицательный счетчик
Счетчик в операции DUP должен быть равен или больше 1.
Record field too large (Слишком длинное поле в записи)
В определении записи сумма длин всех полей превышает 32 бита. Например:
AREC RECORD RANGE:12,TOP:12,BOTTOM:12
Record member not found (Не найден статический элемент записи)
Элемент записи задан в заполнителе указанной записи, который не является частью заданной записи.
Recursive definition not allowed for EQU (Рекурсивное определение не допустимо в директиве EQU)
В выражении директивы EQU содержится то же самое имя, которое определяется этой директивой. Например:
ABC EQU TWOTIMES ABC
Register must be AL or AX (Допустимо указание только регистра AL или AX)
Неверен операнд команды. Допускается использовать только регистры AL и AX. Например:
IN CL,dx ; ошибка: в первом операнде команды IN ; допускается указывать только регистры AL и AX
Register must be DX (Допустимо указание только регистра DX)
Неверен операнд команды. Допускается использовать только регистр DX. Например:
IN AL,cx ; ошибка: вместо СХ должен быть указан регистр DX
Relative jump out of range by __ bytes (Адрес назначения условного перехода превышает допустимый предел на __ байт)
Адрес назначения в команде условного перехода находится вне допустимого диапазона, т.е. не принадлежит интервалу (-127, +128) от текущего адреса. В 32-битовом сегменте адрес назначения условного перехода должен находиться в диапазоне от -32767 до +32768 байт от текущего адреса.
Relative quantity illegal (Недопустимый относительный адрес)
Команда или директива содержит операнд, ссылающийся на адрес памяти таким способом, что эта ссылка не может быть разрешена на этапе ассемблирования. Такие ссылки в Турбо Ассемблере являются недопустимыми. Например:
DATA SEGMENT PUBLIC X DB 0 IF OFFSET X GT 127 ; на этапе ассемблирования ; адрес не известен
Reserved word used as symbol (Зарезервированное слово используется в качестве имени идентификатора)
В программе пользователя определяется имя идентификатора, совпадающее с одним из зарезервированных слов Турбо Ассемблера. Программа будет ассемблироваться правильно, однако переопределять зарезервированные в Турбо Ассемблере слова не рекомендуется.
Rotate count must be constant or CL (Счетчик в командах сдвига должен быть указан с помощью константы или регистра CL)
В команде сдвига или циклического сдвига указан операнд, отличный от константы и регистра CL. Например:
ROL ax,DL ; ошибка: регистр DL нельзя указывать ; в качестве счетчика
В командах сдвига и циклического сдвига в качестве второго операнда можно указывать только константу или регистр CL.
1 2 3 4 5 6 7 8 9 10
8 8 8
|