| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
Ошибки такого рода обычно корректируются с помощью операции
PTR, позволяющей установить размер операнда:
mov WORD PTR[bx],1
Argument to operation or instruction has illegal size
(Операнд операции или команды имеет недопустимый размер)
В операции указан операнд, имеющий тип, недопустимый для
данной операции. Например:
Q LABEL QWORD
QNOT = NOT Q ; операнд операции отрицания не может
; иметь тип QWORD
Arithmetic overflow
(Арифметическое переполнение)
Потеря значащих цифр при вычислении значения выражения. Нап-
ример:
X = 20000h * 20000h ; результат занимает более 32 бит
Точность всех арифметических операций - 32 бита.
ASSUME must be segment register
(В директиве ASSUME должен быть указан сегментный регистр)
В директиве ASSUME можно указывать только сегментные регист-
ры, во всех остальных случаях выводится данное сообщение об ошиб-
ке. Например, ошибочной является директива:
ASSUME ax:CODE
Bad keyword in SEGMENT statement
(Неверное ключевое слово в операторе SEGMENT)
Один из параметров директивы SEGMENT: тип выравнивания, тип
объединения или тип сегмента имеет недопустимое значение. Напри-
мер:
DATA SEGMENT PAFA PUBLIC ; вместо PARA указано PAFA
Can't add relative quantities
(Нельзя складывать относительные адреса)
Турбо Ассемблер 3.0/tasm/#2-2 = 178 =
Выражение содержит операцию сложения двух адресов, что явля-
ется бессмысленной операцией. Например:
ABC DB ?
DEF = ABC + ABC ; ошибка: нельзя складывать
; два относительные адреса
Можно вычитать относительные адреса. Можно добавить констан-
ту к относительному адресу, например:
XYZ DB 5 DUP(0)
XYZEND EQU $
XYZLEN = SYZEND - XYZ ; совершенно верно
XYZ2 = XYZ + 2 ; тоже верно
Can't address with currently ASSUMEd segment registers
(Невозможна адресация из текущих, установленных директивой
ASSUME, сегментных регистров)
В выражении содержится ссылка на переменную, для доступа к
которой не специфицирован сегментный регистр. Например:
DSEG SEGMENT
ASSUME ds:DSEG
mov si,MPTR ; не определен сегментный регистр, который
; обеспечил бы доступ к сегменту XSEG
DSEG ENDS
XSEG SEGMENT
MPTR DW ?
XSEG ENDS
Can't convert to pointer
(Невозможно преобразование в указатель)
Часть выражения не может быть преобразована в указатель на
память, например, с помощью операции PTR:
mov cl,[BYTE PTR al] ; AL нельзя преобразовать
; в указатель
Can't emulate 8087 instruction
(Невозможна эмуляция команд сопроцессора 8087)
В Турбо Ассемблере параметром командной строки /E либо с по-
мощью директивы EMUL установлен режим генерации эмулированных ко-
манд арифметики с плавающей точкой, однако текущая команда не мо-
жет быть эмулирована. Например:
EMUL
FNSAVE [WPTR] ; эта команда не может быть эмулирована
Некоторые команды не поддерживаются эмуляторами арифметики с
плавающей точкой. Это команды FNSAVE, FNSTCW, FNSTENV и FNSTSW.
Турбо Ассемблер 3.0/tasm/#2-2 = 179 =
Can't make variable public
(Переменная не может быть объявлена как PUBLIC)
Переменная была уже ранее объявлена таким образом, что уже
не может быть определена как общая (PUBLIC). Например:
EXTRN ABC:NEAR
PUBLIC ABC ; ошибка: ABC уже ранее объявлена
; с атрибутом EXTRN
Can't override ES segment
(Нельзя переопределить сегмент ES)
В текущем операторе указан регистр, использование которого в
данной команде недопустимо. Например:
STOS DS:BYTE PTR[di]
В команде STOS для определения целевого адреса допускается
использовать только регистр ES.
Can't subtract dissimilar relative quantities
(Недопустимое вычитание относительных адресов)
Выражение содержит операцию вычитания двух адресов, которая
для данных адресов является недопустимой. Данное сообщение выда-
ется, например, в том случае, если адреса находятся в разных сег-
ментах. Например:
SEG1
SEGMENT
A: SEG1
ENDS
SEG2
SEGMENT B:
mov ax,B-A ; недопустимо, поскольку A и В находятся
; в разных сегментах
SEG2 ENDS
Can't use macro name in expression
(Недопустимо использование имени макрокоманды в качестве
операнда выражения)
Имя макрокоманды указано в качестве операнда выражения. Нап-
ример:
MyMac MACRO
ENDM
mov ax,MyMac ; ошибка!
Can't use this outside macro
(Использование данного оператора недопустимо вне макроопре-
Турбо Ассемблер 3.0/tasm/#2-2 = 180 =
деления)
Вне макроопределения указана директива, которую допускается
использовать только внутри макроопределений. К таким директивам
относятся, например, ENDM и EXITM. Например:
DATA SEGMENT
ENDM ; ошибка: вне макроопределения недопустимо
Code or data emission to undeclared segment
(Не объявлен сегмент для кода или данных)
Оператор, генерирующий код или данные, не принадлежит ни од-
ному из сегментов, объявленных директивами SEGMENT. Например:
; Первая строка файла
inc bx ; ошибка: не определен сегмент
END
Генерировать данные или код можно только внутри какого-либо
сегмента.
Constant assumed to mean Immediate const
(Константа интерпретируется как непосредственная)
Это предупреждающе сообщение выдается для выражений типа
[0]. В режиме MASM это выражение интерпретируется как непосредс-
твенная константа, равная 0. Например:
mov ax,[0]; означает mov ax,0, а не mov ax,ds:[0]
Constant too large
(Слишком большая константа)
Константа имеет, вообще говоря, правильный формат, однако ее
значение превышает допустимую для данного режима величину. Напри-
мер, числа, большие 0ffffh, можно использовать, если только ди-
рективой .386/.386P или .486/.486Р разрешены команды процессора
|
adfun.ru
|
|
|
|