| 
   | JWasm |  | 1. AboutJWasm is a MASM v6 compatible assembler. It's a fork of Open Watcom's WASM
and released under the 
Sybase Open Watcom Public License, which allows free
commercial and non-commercial use. JWasm is written in C, source code is open.
 JWasm Features:
 - JWasm natively supports output formats Intel OMF, MS Coff, Elf, Bin and DOS MZ.
 - precompiled JWasm binaries are available for DOS, Windows and Linux. For OS/2 and FreeBSD
  makefiles are supplied.
 - Instructions up to SSSE3 are supported.
 - The JWasm source is portable and has successfully been tested with Open Watcom, MS VC, GCC and more.
 - As far as programming for Windows is concerned, JWasm can be used with both Win32Inc and Masm32.
 - C header files can be converted to include files for JWasm with h2incX.
 
 More details.
 
 2. User FeedbackJWasm uses SourceForge for user feedback:3. JWasm compared with other MASM-like AssemblersThere are - at least - 4 assemblers available which (partially) understand MASM syntax:
MASM, the original from MicrosoftWASM, part of Open WatcomTASM, from BorlandPOASM, part of PellesC 
| JWasm compared with | Advantages | Disadvantages | 
| MASM | JWasm is free, no artificial license restrictions, can be used to create binaries for any OS. | JWasm's debug information is limited |  
|  | JWasm is open source, forget the annoying MASM bugs ... |  |  
|  | ELF output format is supported. |  |  
|  | optionally very small object modules can be created |  |  
|  | better support for Open Watcom, for example the register-based calling convention |  |  
|  | Since v1.9, JWasm is faster than Masm. |  |  
| WASM | JWasm is a fork of Wasm; there was a huge amount of additions and bugfixes.
  [Wasm isn't Masm v6 compatible. It's also not really Masm v5 compatible.
  It understands both Masm v5 and v6 syntax partially.
  Additionally it knows how to encode instructions implemented in newer cpus.] | None |  
| TASM | JWasm is available. TASM isn't legally available. And LZASM, which is sort of a TASM clone, understands IDEAL mode only. | TASM additionally understands IDEAL mode. This was a big advantage compared to MASM v5.1, but
compared to MASM v6 syntax there are no benefits anymore. |  
|  | JWasm has full support for STRUCTs and UNIONs. TASM has severe limitations and bugs in this area. |  |  
|  | JWasm supports virtually all MASM v6 features (PROTO, INVOKE, hll directives, ... ), most of which TASM won't understand. |  |  
|  | JWasm supports instructions up to SSSE3, TASM is behind. |  |  
| POASM | JWasm is open source | JWasm (at least v1.xx) doesn't support 64bit. |  
|  | JWasm supports output in OMF format |  |  
|  | JWasm supports 16-bit and segmented memory models. POASM understands FLAT only. |  |  
|  | JWasm is compatible with MASM's implementation of macros. POASM isn't. |  |  |  | 
 
 4. Samples
| A Win32 console sample program for JWasm |  
| 
;--- Win32 "hello world" console application
    .386
    .MODEL FLAT, stdcall
    option casemap:none
STD_OUTPUT_HANDLE equ -11
WriteConsoleA proto :dword, :dword, :dword, :dword, :dword
GetStdHandle  proto :dword
ExitProcess   proto :dword
    .CONST
szString    db 13,10,"hello, world.",13,10
LSTRING     equ $ - szString
    .CODE
main    proc
local   dwWritten:dword
local   hConsole:dword
        invoke  GetStdHandle, STD_OUTPUT_HANDLE
        mov     hConsole,eax
        invoke  WriteConsoleA, hConsole, addr szString, LSTRING, addr dwWritten, 0
        xor     eax,eax
        ret
main    endp
;--- entry
mainCRTStartup  proc c
        invoke  main
        invoke  ExitProcess, eax
mainCRTStartup endp
    END mainCRTStartup
 |  DOS COM Sample
 DOS DPMI16 Sample
 DOS DPMI32 Sample
 DOS Sample how to switch to 64-bit
 OS/2 16bit Console Sample
 OS/2 32bit Console Sample
 Win16 GUI Sample
 Win32 console Sample (Win32Inc)
 Win32 GUI Sample (Masm32)
 Win32: create PE binary without linker
 Win64 MessageBox Sample
 Win64 GUI Sample
 Win64 GUI Sample with SEH support (Masm comp.)
 Win64 GUI Sample with SEH support (JWasm only)
 Linux Sample using syscalls
 Linux Sample using libc
 Linux X GUI Sample
 Linux 64-bit Sample using syscalls
 
 5. RoadmapPipeline for next releases:
 
  support for 64-bit.  improve debug info output (type information). 6. Downloads |  |