Существует ли аналог TASM?

Рейтинг: 0Ответов: 2Опубликовано: 19.04.2015

В ВУЗе требуют сдавать программы, написанные в TASM. Но проблема в его древности, в следствии чего: 1)На ОС х64 он не работает и требуется использовать DOSBOX 2)Приходится постоянно использовать команды, что бы скомпилировать программу 3)Зачастую при использовании DOSBOX, TASM начинает глючить.

Есть ли какие-то современные аналоги TASM с идентичным синтаксисом, но более приятной средой?

Ответы

▲ 4Принят

Если нужно именно с идентичным синтаксисом, т.е. старый добрый TASM, то остается только попытаться сделать с ним работу приятнее.

Есть проект Tasm for Windows 7/8/8.1/9 32bit & 64bit, можно посмотреть на него.

Есть проект TASM Visual , небольшая IDE (по сути, только подсветка синтаксиса), сделана на .NET, успешно компилирует и запускает на Windows 8 64-bit.

Как еще один вариант, создать виртуальную машину с 32-битной ОС и поставить туда обычный TASM, к нему любой удобный редактор для asm-файлов.

▲ 1

В Linux есть nasm и as/gas.

Различаются они тем, что поддерживают Intel и AT&T синтаксис соответственно (хотя gas можно переключать на Intel-синтаксис при желании) (кроме того есть ещё одно, более существенное отличие: nasm это полноценный ассемблер, а gas это бэкенд для GCC; но не будем сейчас углубляться).

Intel-код выглядит так:

section .data
    hello:     db 'Hello world!',10    ; 'Hello world!' plus a linefeed character
    helloLen:  equ $-hello             ; Length of the 'Hello world!' string
                                       ; (I'll explain soon)

section .text
    global _start

_start:
    mov eax,4            ; The system call for write (sys_write)
    mov ebx,1            ; File descriptor 1 - standard output
    mov ecx,hello        ; Put the offset of hello in ecx
    mov edx,helloLen     ; helloLen is a constant, so we don't need to say
                         ;  mov edx,[helloLen] to get it's actual value
    int 80h              ; Call the kernel

    mov eax,1            ; The system call for exit (sys_exit)
    mov ebx,0            ; Exit with return code of 0 (no error)
    int 80h

Собрать и слинковать:

nasm -f elf hello.asm
ld -s -o hello hello.o

AT&T-синтаксис отличается обилием знаков % на каждом шагу.

Например, сравните Intel-синтаксис:

movb    %bl,%al
movw    %bx,%ax
movl    %ebx,%eax
movl    (%ebx),%eax

и AT&T-синтаксис:

mov al,bl
mov ax,bx
mov eax,ebx
mov eax, dword ptr [ebx]

Что касается среды разработки, то вы можете использовать простой редактор, например Vim или Emacs (ну, Emacs это не совсем простой редактор). В Emacs у вас даже есть специальный asm-режим, который обеспечивается модулем nasm-mode.el.

Дополнительная информация: