Писал на fasm объемную такую прогу. Написал. Компилируется в COM под дос, нормально. Переношу на tasm (изначально нужно было под него писать), адаптирую синтаксис (макросы, структура ком, ptr). Но вот беда. При указании P286 получаю Relative jump out of range by XXXXh bytes (напомню, fasm в com скомпилил, работает норм) и Illegal instruction for currently selected processor (ругается на bt, как оказалось, его ввели только 386м). меняю на P386, транслируется без проблем, а линковщик ругается: Fatal: 32-bit record encountered in module xxx.asm. Чяднт? Код то рабочий, фасм с ним справляется. А этот пытается получить 32-битное приложение, судя по листингу:
Groups & Segments Bit Size Align Combine Class
CODE 32 8FCB Para none CODE
На всякий случай батник для компиляции такой:
BIN\tasm.exe DISASM.ASM /l
BIN\tlink.exe DISASM.OBJ /t
Ключик /3 генерирует 32-битный код вроде. Разве COM может быть 32-битным? Я пробовал этот ключ на всякий случай, но... i.gyazo.com/1bbe02f8093836771743a923c0ede83a.png это продолжается весьма долгое время (полчаса точно).
Ключ /3 включает поддержку 32-битных расширений, т.е. набор команд и регистров появившихся в i386. На скрине ошибок нет, значит все в порядке. Возможно проблема с путями (длинные имена/кодировки).
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.