I have recently been learning to use vasm. For those that don't know, vasm is a cross-platform assembler for multiple types of processors such as the M68000.


I am using it to write some Amiga specific (A1200) code in assembler.

For about 15 minutes, I could not figure out why I couldn't assemble a simple program until I discovered it was the white space between operands.

For example, the following does not work:

moveq #0, D0

But this does work:

moveq #0,D0

I have a habit of putting spaces after commas when I code and vasm does not like that. I have searched online and cannot find a reference to that issue.

The following is how I assemble the program if it helps:

vasm -m68020 -kick1hunks -Fhunkexe -o test.exe main.asm

Any idea how to tell vasm to not be so picky?


Yes, you can use -phxass option (name of the old Amiga native assembler by Phx/Frank Wille who is also the author of the Motorola syntax module)

vasm -phxass -m68020 -kick1hunks -Fhunkexe -o test.exe main.asm

From the documentation:


PhxAss-compatibility mode. Only directives known to PhxAss are recognized. Enables the following features:

  • Enable escape codes handling in strings (see ‘-esc’).
  • Macro names are treated as case-insensitive.
  • Up to 35 macro arguments.
  • Allow blanks in operands
  • Defines the symbol PHXASS with value 2 (to differentiate from the real PhxAss with value 1).
  • When no output file name is given, construct it from the input name.
  • Directives unknown to PhxAss are no longer supported.

It comes with some other syntax changes (ex: blk.b is allowed too) but it's pretty similar to devpac syntax, only more comprehensive. I'm using it for one of my projects when I migrated from phxass assembler, and using devpac option for other sources where I used Barfly before and I want others to be able to still use Barfly on those sources.

| improve this answer | |

Adding command line option -spaces will do the trick by allowing spaces within operands. This means of course that comments now must be separated by ; from any instruction or directrive. Unlike with -phxass (which includes -spaces), there are no other side effects.

The option is only available with Motorola syntax (vasmm68k_mot).

On a sidenote, it may be useful to drop that habit when doing assembler, as not many will be so kind to allow it.

| improve this answer | |
  • 1
    yeah, comments using * now trigger an error since they're seen as a multiplication. – Jean-François Fabre May 20 at 20:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.