Друзья. Следующая ситуация поставила в тупик( даже начал нервничать): p386 ; обязательно - использую 32-разрядные команды(...) stk segment stack db 512 dup ("?") stk ends data segment para public "data" sym db 22 data ends code segment para public "code" assume ss:stk,ds:data,cs:code main: ... mov al,[222] - ok mov al,[bx] - ok !!! mov al,ds:[sym] - 32-bit record encountered in module !!! mov al,sym - 32-bit record encountered in module ... code ends end main tasm - ОК , tlink - при такой записи ругается !!! Кто знает в чём загвоздка помогите .
mmshvedko Ставить ds перед квадратной скобкой не объязательно, mov al,ds:[222]==mov al,[222] mov al,ds:[bx]==mov al,[bx] кроме тех случаев когда [bp] тогда по-умолчанию считается ss:[bp] Ошибка скорее всего такая - вместо mov al,ds:[sym] нужно написать mov al,sym и для чего p386? Если модель памяти не flat и программа не содержит 32-разрядных команд -- поставь .286
DS для наглядности(конечно же можно и без него) Р386 необходим т.к. программа содержит 32-разрядные команды (опять же для наглядности они опущены ( ... ) ) , в этом и загвоздка - р286 без 32-разрядных команд линкует нормально. mov al,sym - то же самое( ругается )
Сверхцитирование на сайте не приветствуется mmshvedko Прикрепи исходный текст целиком, чего гадать Взял твой куцый текст Код (Text): p386 ; обязательно - использую 32-разрядные команды(...) stk segment stack db 512 dup ("?") stk ends data segment para public "data" sym db 22 data ends code segment para public "code" assume ss:stk,ds:data,cs:code main: mov al,[222] mov al,[bx] mov al,ds:[sym] mov al,sym code ends end main создал батник do.bat Код (Text): tasm 0.asm tlink 0.obj Получил не ошибки, а предупреждения *Warning ... Assumeing segment is 32-bit* а вот в 0.map строка Error: 32-bit record encountered in module 0.ASM : use "/3" option добавляю ключ /3 в do.bat tlink 0.obj /3 и получаю exe-файл
весь остальной код рояля не ирает - ошибка появляется после вставки комманд с абсолютной прямой адресацией( уже приведёный выше текст не линкуется )
mmshvedko А ключ /3 Вася Пупкин будет задавать. Стоило поискать по тексту ошибки и даже на wasm это уже спрашивали. Думать надо и хотя бы что-то читать про используемые тулзы, а не только спрашивать.
mmshvedko Про ключ /3 тебе уже дважды написали .model используется для описания модели памяти (tiny, huge, large, small, flat) тип процессора описывается отдельной строкой .386P .686