Учу 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 он компилирует как надо. Подскажите.
Добавил "_" в 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 Для продолжения нажмите любую клавишу . . . Ну что не так-то ?
И объектный файл создаётся. В том-же коталоге. ========================================= L '\ЎNђ CSEG d x @ RА.drectve ‚ ёє Н!Н Privet !$ -entry:start .file юя gC:\masm32\MainProg\privet.asm @comp.idь яя CSEG Q start .drectve ================================================================================== .
Вот новый: L 0cЎNђ CSEG d x @ RА.drectve ‚ ё є Н!Н Privet !$ -entry:start .file юя gC:\masm32\MainProg\privet.asm @comp.idь яя CSEG Q _start .drectve
ниче, что вы там делаете дос-сом, а не вин-ехе? это както учитывается, или оно должно само догадаться?
неа. не помню как комы для дос в масме. вроде, надо линковать в рав бин и переименовывать. или делать exe2bin и снова переименовывать. только exe не win-pe, a dos-mz. и не знаю что такое масм32-едитор. лучше возьмите фасм. с ним проще простые вещи делать. и потеряйте свой едитор и прочие окошки. работайте сразу с ком строкой
Как я понял тебе нужно собрать COM файл. Проблема в том, что изначально MASM32 заточен под Win32 и не может линковать 16 разрядные COM файлики. Тебе нужна сатая версия линкера которая хавает кличик /TINY. Если у тебя MASM32 v10 то там есть этот линкер, link16.exe - зовется. Писать придется всё ручками в командной строке. ml /c privet.asm link16 /TINY privet.obj на вопросы отвечаем ENTER. Удачи!