155. Invalid combination of opcode and operands (Недопустимая комбинация хода команды и операндов). Код ассемблерной команды не может иметь такие операнды. Причины ошибки:
указано слишком много или слишком мало операндов для данной команды, например, INC АХ,ВХ или MOV АХ;
количество операндов правильное, но их типы или порядок следования не соответствуют данной команде, например, DEC 1, MOV AX, CL или MОV 1,АХ.
156. Memory reference expected (Отсутствует адрес). Операнд ассемблерной команды не содержит адрес. Вероятно, Вы забыли выделить квадратными скобками индексный регистр.
157. Cannot add or subtract relocatable symbols (Нельзя складывать или вычитать перемещаемые символы). В ассемблерных выражениях обоими операндами в операциях сложения или вычитания могут быть только ссылки на константу. Идентификаторы переменных, процедур, функций и меток являются переметаемыми символами и не могут использоваться в качестве двух операндов одновременно в таких операциях. Если VAR -идентификатор переменной, a CONST - константы, то предложения MOV АХ, CONST+CONST и MOVE AХ, VAR+CONST будут правильными, в то время как выражение MOV AX, VAR+VAR Недопустимо.
158. Invalid register combination (Недопустимая комбинация регистров) .Допустимыми комбинациями индексных регистров являются [ВХ] , [ВР] , [SI], [DI] , [BX+SI], [BX+DI], [BP+SI] и [BP+DI] . Другие комбинации (например, [AХ] , [ВР+BХ] , [SI + DX]) недопустимы. Заметим, что локальные переменные размещаются на стеке и доступ к ним организуется через регистр BP. Ассемблер автоматически добавляет [ВР] в ссылках на такие переменные, поэтому в операндах типа LOCAL [BX], где LOCAL - локальная переменная, образуется недопустимая ссылка LOCAL[BP+BX] .
159. 286/287 instructions are not enabled (Недоступен набор команд микропроцессоров 286/287). Используйте директиву {SG+}, но учтите, что такую программу можно исполнять только на ПК, оснащенных микропроцессором Intel 80286/80287 или более поздним.
160. Invalid symbol reference (Недопустимая ссылка на символ). К указанному символу нельзя обратиться в ассемблерной программе. Это может быть следствием таких причин:
Вы пытаетесь использовать ссылки на стандартные процедуры (функции) или специальные массивы MEM, MEMW, MEML, PORT я PORTW в ассемблерных операндах;
Вы обращаетесь к строковой, вещественной константе или константе типа SET в операнде ассемблерной команды;
в ассемблерном операнде Вы обращаетесь к процедуре или функции, написанной я режиме INLINE;
Вы пытаетесь получить с помощью операции @Result доступ к результату, возвращаемому функцией;
Вы пытаетесь использовать короткую форму команды JMP для передачи управления в непомеченный оператор программы.