Подскажите, где можно найти TASM 5.0 для DOS? Чтобы можно было создавать 16-разрядные COM-приложения. Версия, выложенная здесь в разделе инструментов (http://wasm.ru/toollist.php?list=7), урезанная, в ней только 32-разрядный ассемблер.
http://www.4shared.com/file/19395253/53685644/tasm5.html?dirPwdVerified=bea6fc8f TASM - динозавровый ассемблер. FASM быстрее и не требует линкера и тоже создаёт 16-битные COM приложения.
Добавлю, что существует в версиях и под DOS и под Linux и под Windows, написан сам на себе. За основу синтаксиса был взят MASM, но были убраны некоторые нелогичности и добавлен очень мощный макроязык.
AsmGuru62, спасибо за ссылку, но я уже нашел. Вот: http://asmlib.narod.ru/files/tasm16.rar В архиве есть файлы TASM.EXE, TLINK.EXE и TD.EXE, которых не хватает в выложенной здесь версии. Насчет FASM - как я понял, у него свой синтаксис, отличный от MASM/TASM. Или его можно перевести в режим совместимости?
моя порция советов из серии - "не берите то, берите это" http://ftp.heanet.ie/pub/openwatcom/ возьмите пакет под дос. там и С, и С++, и линкер, и асм с масмоподобным синтаксисом. зовется wasm. (впрочем, досовый пакет я никогда не использовал. выне-линевый вполне могут делать проги для доса)
Den_Zurin Насколько я понимаю, основное отличие - это выражения адреса. Если нужен адрес, то выражение без квадратных скобок []. Если нужно содержимое адреса, то выражение взято в квадратные скобки. Например: Код (Text): Array DB 'Hello',0 ... MOV DX, Array ; Load address of Array into DX MOV AL, [Array+1] ; Load character 'e' into AL
Тут загвоздка вот в чём: для регистров их имя означает значение, а вот символические имена — как бог на душу положит. MASM иногда берёт адрес, иногда содержимое по адресу. TASM.IDEAL/FASM более консистентны: символическое имя — всегда адрес, не содержимое. Ну и интерпретация квадратных скобок в MASM хоть и прямолинейна, но заковыриста.
Отличия FASM и TASM: вся информация необходимая для компиляции файла хранится в самом исходнике. В начале идёт директива format, с помощью которой указывается выходной формат - ELF, ELF64, PE, PE64, COFF, MS COFF или Binary (по умолчанию, если директива не указана). Соответсвенно линкер нужен только если в ассемблерном исходнике не весь код и его надо слинковать с другими модулями. Для этого служит выходной формат COFF или ELF. Последний может быть сразу исполняемым (если написать format ELF executable). mov ax, abc всегда помещает в ax адрес abc, а mov ax, [abc] всегда помещает туда значение. Таким образом устраняется неоднозначность. И наконец имя сегментного регистра всегда внутри скобок. То есть mov ax, [es:si], а не mov ax, es:[si]. Остальные отличия связаны только с макроязыком. Никаких режимов совсестимости у FASM нет.