Решение вашей проблемы, вероятно, там:
http://www.japheth.de/JWasm.html
Это MASM-совместимый синтаксис с открытым исходным кодом на ассемблере (около 100%, включая самые странные случаи синтаксиса MASM-адресации, псевдооперации структурированного программирования, макросы и т. П.).
Он может генерировать Intel OMF, MS Coff (32- и 64-разрядные), Elf (32-разрядные и 64-разрядные), Bin и DOS MZ.
И он существует в виде двоичных файлов для DOS, Windows и Linux.
И его можно даже встроить в OS / 2, FreeBSD.
Таким образом, у вас будет максимальное количество комбинаций ассемблера и целевого бинарного файла, включая те, где все происходит под собственным Linux.
Если вы компилируете в 16-битный код, вам придется выполнить его в 16-битной среде, что означает одно из предложений, которые вы уже получили.
Но вы также можете скомпилировать 16-битный синтаксис в код 32-битного режима, в зависимости от того, что вы пытаетесь сделать. Таким образом, вы можете выполнять 16-битные алгоритмы в 32-битных режимах, выполняя изначально в 32-битных средах, как позволяет архитектура x86. Однако сгенерированный код будет больше, поскольку ассемблер будет генерировать 16-битные escape-коды перед каждой 16-битной инструкцией, но это нормально, если это просто вопрос проверки логики вашего 16-битного кода.
Надеюсь, это имеет смысл для вас. Если этого не произошло, попросите больше ...