Porównanie dyrektyw i sposobów kompilacji różnych kompilatorów



(przeskocz różnice składni)
Najważniejsze różnice między dyrektywami TASMa, FASMa, NASMa, MASMa i Watcom Asemblera
typ dyrektywy

NASM FASM TASM / MASM / WA
deklaracje danych
NASM: db, dw, dd, dq, dt
FASM: db, dw/du, dd, dp/df, dq, dt
TASM/MASM/WA: db, dw, dd, dp/df, dq, dt
rezerwacja niezainicjalizowanej pamięci
NASM: resb, resw, resd, resq, rest
FASM: rb, rw, rd, rp/rf, rq, rt
TASM/MASM/WA: db/dw/dd/dp/dq/dt liczba DUP(?)
deklaracje tablic
NASM: TIMES 10 db "$"
TIMES 25*34 db/dw/dd/dp/df/dq/dt 0
resb/resw/resd/resq/rest 25*34
FASM: TIMES 10 db "$"
TIMES 25*34 db/dw/dd/dp/df/dq/dt 0
rb/rw/rd/rp/rf/rq/rt 25*34
TASM/MASM/WA: db 10 dup("$")
db/dw/dd/dp/df/dq/dt 25 dup (34 dup(0))
db/dw/dd/dp/df/dq/dt 25 dup (34 dup(?))
operacje liczbowe i bitowe
NASM: +, -, *, /, %, |, ^, &, <<, >>, ~
FASM: +, -, *, /, mod, or, xor, and, shl, shr, not
TASM/MASM/WA: +, -, *, /, mod, or, xor, and, shl, shr, not
deklaracje stałych
NASM: %define, %idefine, %xdefine, %xidefine, equ
FASM: =, equ
TASM/MASM/WA: =, equ
etykiety anonimowe
NASM: tylko w trybie zgodności z TASMem
FASM: @@, @b/@r, @f
TASM/MASM/WA: @@, @b, @f
makra
NASM: %macro, %imacro nazwa liczba_arg ... %endm
FASM: macro nazwa arg {...}
TASM/MASM/WA: nazwa macro arg ... endm
kompilacja warunkowa
NASM: %if, %if(n)def, %elif, %else, %endif
FASM: if, else if, else, end if
TASM/MASM/WA: if***, elseif, else, endif
struktury
NASM: struc nazwa ... endstruc
FASM: struc nazwa {...}
TASM/MASM/WA: nazwa struc ... ends
symbole zewnętrzne
NASM: extern, global
FASM: extrn, public
TASM/MASM/WA: extrn, public
segmenty
NASM: segment nazwa
FASM: segment nazwa ; (format MZ)
TASM/MASM/WA: nazwa segment
dostępność instrukcji
NASM: wszystkie domyślnie dostępne
dyrektywa CPU
FASM: wszystkie zawsze dostępne
TASM/MASM/WA: .8086, .186, .286, .386, .486, .586, .686, .mmx, .xmm
typowy początek programu .com
NASM: org 100h
FASM:
format binary
org 100h
TASM/MASM/WA:
.model tiny
.code

org 100h
start:
typowy początek programu .exe
NASM: ..start:
FASM:
format MZ
stack 400h
entry kod:start
segment kod
start:
TASM/MASM/WA:
.model small
.stack 400h
.code
start:


Sposoby kompilacji w TASM, FASM, NASM, MASM i Watcom Asemblerze
typ programu NASM FASM TASM MASM (16-bitowy) WA
.com
nasm -f bin -o prog.com prog.asm
fasm prog.asm prog.com
tasm prog.asm
tlink /t prog.obj
ml prog.asm
wasm -fpi87 prog.asm
wlink system dos com f prog.obj name prog.com
.exe
nasm -f obj -o prog.obj prog.asm
val prog.obj,prog.exe,,,
fasm prog.asm prog.exe
tasm prog.asm
tlink prog.obj
ml prog.asm
wasm -fpi87 prog.asm
wlink system dos f prog.obj name prog.exe


Spis treści off-line (Alt+1)
Spis treści on-line (Alt+2)
Ułatwienia dla niepełnosprawnych (Alt+0)