tlink упрямо ругается

Тема в разделе "WASM.BEGINNERS", создана пользователем mmshvedko, 27 май 2008.

  1. mmshvedko

    mmshvedko New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2005
    Сообщения:
    23
    Друзья. Следующая ситуация поставила в тупик( даже начал нервничать):

    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 - при такой записи ругается !!!

    Кто знает в чём загвоздка помогите .

     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    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
     
  3. mmshvedko

    mmshvedko New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2005
    Сообщения:
    23
    DS для наглядности(конечно же можно и без него)
    Р386 необходим т.к. программа содержит 32-разрядные команды (опять же для наглядности они опущены ( ... ) ) , в этом и загвоздка - р286 без 32-разрядных команд линкует нормально.
    mov al,sym - то же самое( ругается )
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Сверхцитирование на сайте не приветствуется;)
    mmshvedko
    Прикрепи исходный текст целиком, чего гадать
    Взял твой куцый текст
    Код (Text):
    1. p386             ; обязательно - использую 32-разрядные команды(...)
    2.     stk        segment        stack        
    3.             db    512 dup ("?")
    4.     stk        ends
    5.     data        segment        para public "data"
    6.         sym    db     22        
    7.     data        ends
    8.     code        segment        para public "code"
    9.             assume    ss:stk,ds:data,cs:code
    10.     main:   mov   al,[222]
    11.               mov   al,[bx]  
    12.               mov    al,ds:[sym]
    13.               mov  al,sym
    14.     code    ends
    15.     end    main
    создал батник do.bat
    Код (Text):
    1. tasm 0.asm
    2. 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-файл
     
  5. mmshvedko

    mmshvedko New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2005
    Сообщения:
    23
    весь остальной код рояля не ирает - ошибка появляется после вставки комманд с абсолютной прямой адресацией( уже приведёный выше текст не линкуется )
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  7. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    mmshvedko
    А ключ /3 Вася Пупкин будет задавать. Стоило поискать по тексту ошибки и даже на wasm это уже спрашивали. Думать надо и хотя бы что-то читать про используемые тулзы, а не только спрашивать.
     
  8. mmshvedko

    mmshvedko New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2005
    Сообщения:
    23
    перемещение р386 за .model при трансляции даёт - 32-bit segments not allowed without .386
     
  9. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    mmshvedko
    Про ключ /3 тебе уже дважды написали
    .model используется для описания модели памяти (tiny, huge, large, small, flat)
    тип процессора описывается отдельной строкой .386P .686
     
  10. mmshvedko

    mmshvedko New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2005
    Сообщения:
    23
    всё работает, спасибо всем за участие .