Mail me
Home of Toms AVR assembler
  • Compiles code written for Atmels AVR DOS assembler (see notice).
  • Super-set of Atmel AVR assembler (few features added).
  • Generates Intel Hex, Motorola S-record, Generic and binary output.
  • Atmel object files compatible with Atmel's AVR Studio.
  • More than 100 warning/error messages.
  • 'C' like escape characters in char/string literals ('\n', '\t', ...).
  • Macros in macros.
  • Free software (released under GPL).
  • Runs on (win)DOS, Linux, FreeBSD, OS/2, Solaris, ...
          Download now!     View README

Version 1.22 - January 2005

  • Several updates for ATmega (new devices, extended I/O etc.)

    Thanks to Dariusz Kowalewski for these updates.

  • Fixed problem with .db 00

    Thanks Mike Hall for reporting this.

  • Fixed 'symtab = (new (symbolTableEntry*))[size]' blunder. How that ever slipped by GCC is beyond me :-) Lots of compilers won't even allow it.

    Thanks to Steven Saunderson for reporting this.

Version 1.21 - December 2004
  • Added support for the ATMega 128

    Thanks to Jens Wilhelm Wulf for supplying the patch.

  • Fixed problem with the .align directive.

    Thanks to Rolf for reporting this.

Version 1.20 - January 2004
  • Added .align directive.
    Thanks to John Romein for supplying the patch to implement this.
Version 1.19 - July 2003
  • I messed up applying some of the patches to 1.18, so all the changes listed in 1.18 were not actually included :-(
Version 1.18 - March 2003
  • Added support for specifying unsigned integer values [0; 2^32-1]
    Thanks to Richard Gerrits for pointing out the problem.
  • Added support for specifying Z/Y/Z for adiw, sbiw and movw.
    Thanks to Richard Barrington for suggesting this.
  • Added support for a bunch of Mega devices.
    Thanks to Andreas Schwarz for supplying a patch with these.
  • Fixed problems compiling with GCC 3.2
    Several people supplied patches, but I was just too busy integrating them.
    Thanks to Patrick Dreker for supplying the final patch.
Check the README for the complete history.


  • This is NOT an x86 assembler :)

  • Remember to convert from CR/LF to LF eol style when compiling DOS source under *NIX.

  • When compiling files using the '' file from Atmel, you will receive an error. This is because Atmel choose to use the keyword OR as a variable name, 'tavrasm' won't allow this (it is like saying while=4 in C :). To fix the problem, just rename the variable.

  • People keep asking me about some documentation. I haven't made any. basically it would be a copy of the Atmel documentation, so you should get that instead.

    So why bother to change to 'tavrasm'. Well it runs under Linux, it is less buggy (that is what people keep telling me anyway :), it supports macros in macros, better handling of included files, escape characters in strings and chars, and you can re-assign registers like ".def COUNTER = REG3" (very handy when used with default include files), it can produce a simply binary output, the .obj format works with macros, and the winDOS version supports long filenames.

  • I use egcs as my primary compiler, if you want to compile with gcc, remember to change the makefile.

  • The "windows" version is compiled with ming (an egcs-1.1.1 variant for windows) This will allow long filenames to be used.

  • If you are interested in helping me with translating 'tavrasm' to French/Italian/... please mail me. Take a look at the 'msg_us.hh' source file, it contains all the strings that needs to be translated.

  • If you have successfully compiled 'tavrasm' on a new platform, I would like to hear from you. Currently I have reports of 'tavrasm' compiling on: FreeBSD, NetBSD, Solaris7, and LinuxPPC. I have compiled it on Linux/386, OS/2, DOS (djgpp), winDOS (cygwin and ming).

  • The Linux and (win)DOS versions seems to be equally popular based on the number of e-mail confirmed downloads.

  • Why do you call it GNU/Linux?. Well, it is a program written using only GNU tools on a Linux platform. I could call the others GNU/DOS and GNU/winDOS, but I think this would be even more confusing, so this is just my way to give credit to both projects.
  • GNU/Linux source (no binary) : tavrasm.tar.gz (61 kb).
  • winDOS source and binary : (125 kb).
  • When you download 'tavrasm' it would make me happy if you press one of the following two links (that hopefully will open your mail program, so you can send me an e-mail). This will help me keep track on the number of downloads (actually I can now track them from my stats page, but it is always nice to hear from tavrasm users). If you feel like telling me how you found this page, or what project you are working on, or just what the weather is like where you are, I won't mind that either (and yes, I do read these mails :).

GNU/Linux winDOS

  Questions, bugs, or suggestions:
Tom Mortensen - © 1999-2005 - Page last updated 20041204
See what I'm working on today