There are two formats for writing PIC assembler code. One comes directly from Microchip (MPASM), the other comes originally from Parallax who sold it to Tech-Tools (CVASM).

Microchips format seems to be the most used today. The Tech-Tool's format, however, incorporates many features that had become expected in assemblers for Z80, 68000, 8086, 8751 and others. So, for those of us who have been working with micros from Day One, Microchip's assembler seems both primitive and cumbersome.

Here are some coding examples of the differences.


#define CLAMP	 	PORTA,5		;clamp input to T0
#define R20	 	PORTA,0		;20 ohm direct feed
#define R100	 	PORTA,1		;100 ohms
#define R470	 	PORTA,4		;470 ohms


CLAMP	=	ra.5		;clamp input to T0
R20	=	ra.0		;20 ohm direct feed
R100	=	ra.1		;100 ohms
R470	=	ra.4		;470 ohms

This is not too bad. Microchip is using the format familiar C compilers. The Tech-Tools format is more like previous assemblers for various processors.


wsave  equ 20h
ssave  equ 21h
dsave  equ 22h
icount equ 24h
       org   20h

wsave  ds   1
ssave  ds   1
dsave  ds   2
icount ds   1

The Microchip format requires you to specify the address of each variable and leave it enough space by adjusting the address of the next variable.

Tech-Tools lets you just define the size of each variable and their order in ram. It creates all the addresses for you. This is the way virtually all assemblers have worked.


getano  addwf  PCL,f
        retlw  1
        retlw  2
        retlw  4
        retlw  8


getano  addwf  PCL
        retw   1,2,4,8

Microchip allows only one RETLW instruction per line, The Tech-Tools assembler lets you put multiple entries on a line. This is handy because this is really like the 'define byte' (db) instruction in many older assemblers. It is the way you get data bytes directly into your code.

Additionally, you can do ASCII strings with mixed decimal values.

prntxy   addwf PCL

         retw  13,10,'This would take a lot of lines'
         retw  13,10,'in the Microchip format!',0

If your program needs a lot of imbedded data, this can make a great difference in readability.

Other than this, the programming looks very much the same in either assembler. If you only need to grab a routine here or there, it is should not take much to put it in the Microchip format. Also, the hex/obj files produced by eithe assembler are identical. Either one will work with any PIC programmer.