masm32 EDITOR - вопрос

Тема в разделе "WASM.BEGINNERS", создана пользователем sergun495, 21 окт 2011.

  1. sergun495

    sergun495 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    7
    Учу asm у Калашникова О. ,как в книге через батник компилирую.
    Но если в коде ошибка,то надо внимательно пересматривать каждую строку.
    Через батник-(cmd.exe) не пишет где ошибка(может только у меня?)
    А вот "masm32 editor" указывает - в какой строке ошибка.
    Подскажите пожалуйста ,как скомпилировать.com файл в masm32 editor ?
    например-это:cseg segment
    org 100h
    start:
    mov ax,900h
    mov dx,offset Q
    int 21h
    int 20h
    Q db 'Privet !$'
    cseg ends
    end start
    ==================================================
    Делаю так---Сохраняю-->Projekt-->BuildAll
    Вот какая ошибка:

    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

    Assembling: C:\masm32\MainProg\privet.asm
    C:\masm32\MainProg\privet.asm(10) : warning A4023: with /coff switch, leading un
    derscore required for start address : start
    Microsoft (R) Incremental Linker Version 5.12.8078
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

    privet.obj : fatal error LNK1190: invalid fixup found, type 0x0001
    _
    Link error
    Для продолжения нажмите любую клавишу . . .
    ==================================================
    А вот батник: start ml.exe prog.asm /AT он компилирует как надо.

    Подскажите.
     
  2. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    Если /кофф может переименуй start в _start или избався от /coff.
     
  3. sergun495

    sergun495 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    7
    Добавил "_" в start (_start) произошло чудо.
    Теперь одна ошибка линковки .

    Вот что теперь :

    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

    Assembling: C:\masm32\MainProg\privet.asm
    Microsoft (R) Incremental Linker Version 5.12.8078
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

    privet.obj : fatal error LNK1190: invalid fixup found, type 0x0001
    _
    Link error
    Для продолжения нажмите любую клавишу . . .

    Ну что не так-то ?
     
  4. sergun495

    sergun495 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    7
    И объектный файл создаётся. В том-же коталоге.

    =========================================
    L '\ЎNђ
    CSEG  d x  @ RА.drectve
    ‚
    ёє Н!Н Privet !$    -entry:start .file юя gC:\masm32\MainProg\privet.asm @comp.idь  яя  CSEG Q
       start    .drectve  
    ==================================================================================

    . 
     
  5. sergun495

    sergun495 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    7
    Вот новый:

    L 0cЎNђ
    CSEG  d x  @ RА.drectve
    ‚
    ё є Н!Н Privet !$    -entry:start .file юя gC:\masm32\MainProg\privet.asm @comp.idь  яя  CSEG  Q
       _start    .drectve  
    
     
  6. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    ниче, что вы там делаете дос-сом, а не вин-ехе? это както учитывается, или оно должно само догадаться?
     
  7. sergun495

    sergun495 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    7
    Ну ,а где надо написать-то ? Для DOS.
    Чтобы в editore работало. Можете помочь?
     
  8. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    неа. не помню как комы для дос в масме. вроде, надо линковать в рав бин и переименовывать. или делать exe2bin и снова переименовывать. только exe не win-pe, a dos-mz.
    и не знаю что такое масм32-едитор.

    лучше возьмите фасм. с ним проще простые вещи делать. и потеряйте свой едитор и прочие окошки. работайте сразу с ком строкой
     
  9. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Как я понял тебе нужно собрать COM файл.
    Проблема в том, что изначально MASM32 заточен под Win32 и не может линковать 16 разрядные COM файлики.
    Тебе нужна сатая версия линкера которая хавает кличик /TINY.

    Если у тебя MASM32 v10 то там есть этот линкер, link16.exe - зовется.
    Писать придется всё ручками в командной строке.
    ml /c privet.asm
    link16 /TINY privet.obj

    на вопросы отвечаем ENTER. :)
    Удачи!
     
  10. Maroder32b

    Maroder32b New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2011
    Сообщения:
    4
    Или пользуйся TASM-мом