Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Турбо Ассемблер / Приложения /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Сообщения об ошибках - Программирование от RIN.RU
Сообщения об ошибках



Constant too large (Слишком большая константа)


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


CS not correctly assumed (Некорректное значение в регистре CS)


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


SEG1 SEGMENT
LAB1 LABEL NEAR
SEG1 ENDS
SEG2 SEGMENT
JMP LAB1 ; ошибка: неверный сегментный адрес
SEG2 ENDS


Такие ошибки возникают только в режиме MASM. В режиме Ideal такие переходы и вызовы интерпретируются корректно.


CS override in protected mode (Переопределение регистра CS в защищенном режиме)


В защищенном режиме ассемблирования команд процессора 286, 386 или i486, установленном директивой Р286Р, P386P или Р486Р, в текущей команде требуется переопределение регистра CS. Например:


P286
.CODE
CVAL DW ?
mov CVAL,1 ; генерирует переопределение регистра CS


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


CS unreachable from current segment (CS недостижим из текущего сегмента)


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


PROG1 SEGMENT
ASSUME CS:PROG2
START: ; ошибка: неверно установлен регистр CS


Такие ошибки возникают только в режиме MASM. В режиме Ideal такие переходы и вызовы обрабатываются корректно.


Declaration needs name (В директиве объявления не указано имя)


Не указано имя идентификатора в директиве, для которой спецификация имени является обязательной. Например:


PROC ; ошибка: в директиве PROC указание имени обязательно
ret
ENDP


В директивах объявления, таких как SEGMENT, PROC или STRUC, обязательно должно быть указано имя идентификатора. В режиме MASM имя указывается перед именем директивы, а в режиме Ideal - после имени директивы.


Directive ignored in Turbo Pascal model (В режиме TPASCAL директива игнорируется)


В модуле Ассемблера, предназначенном для интерфейса с Турбо Паскалем, используется недопустимая директива. Режим интерфейса с Турбо Паскалем специфицируется директивой .MODEL. Более подробно интерфейс с Турбо Паскалем обсуждается в этой главе.


Directive not allowed inside structure definition (Недопустимая директива внутри определения структуры)


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


X STRUC
MEM1 DB ?
ORG $+4 ; ошибка: директиву ORG нельзя указывать
; внутри структуры
MEM2 DW ?
ENDS


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


F00 STRUC
F002 STRUC ; ошибка: определена новая структура
ENDS
ENDS


Для того чтобы использовать одну структуру внутри другой структуры, нужно сначала определить первую структуру, а после этого во второй структуре можно указывать имя первой.


Duplicate dummy arguments:_ (Недопустимо использование одинаковых имен для формальных параметров)


В директиве MACRO определено несколько формальных параметров с одинаковыми именами. Например:


XYZ MACRO A,A ; ошибка: дублируются имена формальных параметров
DB A
ENDM


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


ELSE or ENDIF without IF (ELSE или ENDIF без IF)


Для директивы ELSE или ENDIF нет парной директивы IF, обозначающей начало условно ассемблируемого блока. Например:


BUF DB 10 DUP(?)
ENDIF ; ошибка: нет парной директивы IFxxx


Expecting METHOD keyword (Требуется ключевое слово METHOD)


В расширенном структурном операторе для определения объектов после порождающего объекта требуется ключевое слово METHOD.


Expecting offset quantity (Требуется указать величину смещения)


В качестве операнда выражения указано неверное значение вместо ожидаемого смещения внутри сегмента. Например:


CODE SEGMENT
mov ax,LOW CODE
CODE ENDS




Expecting offset or pointer quantity (Требуется указать смещение или указатель)


В качестве операнда выражения указано неверное значение вместо ожидаемого смещения внутри специфицированного сегмента. Например:


CODE SEGMENT
mov ax,SEG CODE ; ошибка: СODE - это сегмент,
; а не адрес внутри сегмента
CODE ENDS


Expecting pointer type (Операнд должен быть указателем)


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


LES di,4 ; неверно, т.к. 4 - константа


Expecting record field name (Требуется имя поля записи)


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


Expecting register ID (Требуется идентификатор регистра)


В части USES оператору CALL.METHOD требуются имена регистров.


Expecting scalar type (Операнд должен быть константой)


Операндом текущей команды должна быть константа. Например:


BB DB 4
rol ax,BB ; ошибка: вторым операндом операции ROL
; должна быть константа


Expecting segment or group quantity (Должно быть указано имя сегмента или группы)


В операторе вместо имени сегмента или группы указано имя, которое таковым не является. Например:


DATA SEGMENT
ASSUME ds:F00 ; ошибка: F00 не является именем
; сегмента или группы
F00 DW 0
DATA ENDS


Extra characters on line (Лишние символы в строке)


Выражение имеет корректный синтаксис, однако вслед за ним, на той же строке имеются еще лишние символы. Например:


ABC = 4 shl 3 3 ; нет знака операции
; между двумя тройками


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


Forward reference needs override (Ошибка при использовании умолчания для ссылки вперед)


В результате использования умолчания для ссылки вперед было зарезервировано меньше памяти, чем это оказалось необходимо. Эта ошибка возникает тогда, когда имя идентификатора, по умолчанию означающее адрес ближнего перехода или вызова, переопределяется в программе как дальний адрес. Эта ошибка возникает также в тех случаях, когда не указан сегмент (отличный от предполагаемого по умолчанию) для доступа к переменной. Например:


ASSUME cs:DATA
call A ; по умолчанию - ближний вызов
A PROC FAR ; а здесь переопределяется как дальний
mov ax,MEMVAR ; не известно, что требуется другой сегмент
DATA SEGMENT
MEMVAR DW ? ; здесь ошибка: требуется переопределение


Эти ошибки исправляются путем явного указания сегмента или типа перехода FAR.


Global type doesn"t match symbol type (Тип, указанный в директиве GLOBAL не совпадает с действительным типом имени идентификатора)


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


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7  8  9  10 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Замечания по программированию

Обзор синтаксических правил Турбо Ассемблера

Вопросы совместимости

Утилиты Турбо Ассемблера

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь