Bob, I started with SPASM about five years ago and then moved to CVASM. Dr. Imre Bartfai provided a good description in his earlier message. I prefer the Intel-style Parallax syntax but I would caution anyone moving to CVASM (formerly SPASM) to also have a good knowledge of the native Microchip syntax to get the most out of the assembler. The only thing I miss is a macro capability. Most instructions are really macros of native code and the documentation shows exactly what each instruction generates. You have direct equivalents of all of the native set as well as powerful extensions. I find it much more intuitive. Some examples: Compare File Register Fr1 to Fr2 and Jump if Above or Equal CJAE Fr1,Fr2,label Which translates to: MOVF Fr2,0 SUBWF Fr1,0 BTFSC 3,0 GOTO label One of my favorites is the way it handles LCALL so you don't have to mess with PCLATH: LCALL A_Routine_In_Any_Code_Page LSET $ ; Restore PCLATH The assembler, depending on device size, will insert 0-2 BCF/BSF instructions. As far as converting native syntax, the main issues are the differences in the radix and local label syntax. There are a few other things but I've never had a problem converting native code with trivial changes in syntax. By "other things" I'm referring to the way the C, Z flags are defined. In MPASM, they are literals. In CVASM they are STATUS.0 etc. So when you run across something like: BTFSC STATUS,C You can either use: BTFSC STATUS,0 ; Native syntax. BTFSC 3,0 ; same same... JNC ; CVASM equivalent One final thing is to note how the native instructions are qualified by a "0" or "1" (W or F). Normally, CVASM will have no problem with it but if you translate it, be sure to select the equivalent instruction. This is fairly easy but there are a few instructions that may not be so obvious. For example: swapf Register,1 = SWAP Register swapf Register,0 = MOV W,<>Register Again, this is well documented but I wish they would continue to provide the Readme.txt file that Parallax always supplied with SPASM and TDE provided with earlier versions of CVASM. This listed all the device equates as well as the CVASM and the Microchip instruction set with their equivalents. This made it easy to look at a native instruction and see the CVASM equivalent. (Jerry, any word on this?). - Tom At 09:59 PM 5/6/99 -0400, Bob Drzyzgula wrote: >I just got a Clear View Mathias at work. Now, I know >that there are a number of CVM users out there, and I was >wondering if I should take advantage of the assembler >that comes with it. So I thought that I'd ask: > > * How many of y'all use the CVASM16 assembler on > a regular basis? > > * If you do, what are the advantages/disadvantages? > Do you have trouble getting code samples? CVASM16 > takes MPASM instructions but places restrictions > on them; if you feed it MPASM code, do you find > that you frequently have to hand process the code > before you use it, or does most code work with > minimal tweaking? Do you find that if you modify > code for CVASM16 and then try to take it back to > MPASM that you have to do any back-porting? If > you stick to the CV-specific "8051-like" instructions, > again -- are code samples rare? Do you have much > trouble porting code samples from other 8051 chips? > > * If you've considered/tried CVASM16 but stuck with > MPASM (if you just went to using C or BASIC or > something that's another matter), what shortcomings > of CVASM16/advantages of MPASM led you to that > decicsion? If you use MPASM on the CVM, do > you find this putting you at any sort of > significant disadvantage? > >I've been using MPASM for some stuff, and for some >stuff (including a commercial package -- emWare -- >that comes as MPASM source) I'll probably have to >continue using MPASM for some time. But I was just >trying to decide if it was worth the trouble to >learn CVASM16 as well. > >TIA, >--Bob