Я вполне уверен, что .model small
и seg
являются артефактами более раннего возраста, когда архитектура x86 была по-настоящему сегментирована (в куски 64 КБ).
IDE не нравится им вообще (не неожиданно, поскольку в настоящее время гораздо более распространено применение 32-битного плоского кода модели).
Проблема заключается в том, что файл bin\assmbl.bat
используется редактором, чтобы собрать файл и он содержит строку:
\masm32\bin\ml /c /coff %1.asm > \masm32\bin\asmbl.txt
(с опцией /coff
). Это то, что заставляет ассемблер жаловаться.
Вы можете заставить его работать, вернувшись в командную строку. Предположим, что ваш файл является tst.asm
, используйте следующие команды:
c:\masm32\bin\ml.exe /c tst.asm
c:\masm32\bin\link16 tst.obj.tst.exe,,,,
, и вы будете иметь tst.exe
, который работает отлично.
Следующая запись показывает, что это работает:
C:\masm32> type tst.asm
.model small
.stack
.data
message db "Hello world!", "$"
.code
_main proc
mov ax,seg message
mov ds,ax
mov ah,09
lea dx,message
int 21h
mov ax,4c00h
int 21h
_main endp
end _main
C:\masm32> bin\ml.exe /c tst.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
Assembling: tst.asm
C:\masm32> bin\link16 tst.obj,tst.exe,,,,
Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
Copyright (C) Microsoft Corp 1984-1993. All rights reserved.
C:\masm32> tst.exe
Hello world!
Кроме того, редактор очень хорошо настраивается.Если открыть файл menus.ini
для редактирования (резервную копию первых, я не должен сказать вам, что) и изменения:
&Assemble ASM file,\MASM32\BIN\Assmbl.bat "{b}"
к:
&Assemble ASM file,\MASM32\BIN\Assmbl.bat "{b}"
Assemble ASM file (no COFF),\MASM32\BIN\Assmbl2.bat "{b}"
вы можете получить новое меню элемент добавлен при перезапуске IDE.
Вам также необходимо скопировать bin\assmbl.bat
в bin\assmbl2.bat
и удалить /coff
из последних.
Затем вы можете скомпилировать все в пределах IDE с помощью нового пункта меню.
Конечно, вам нужно будет сделать то же самое для пунктов меню link
и assemble/link
. Но теперь, когда вы знаете, как это делается, это не должно представлять проблемы.
Huh! Это работает. Большое спасибо! – udushu
Я придумал сценарий для создания команд сборки/ссылки. но спасибо за подсказку IDE, я не знал, что это гибкий. – udushu