asm1825 Assembler 0.8.1

asm1825 is a lightweight standalone assembler for PIC microcontrollers, specifically the PIC16(L)F1825 and similar variants. It is a two pass command line based assembler producing ready to burn .hex output with support for macros, file inclusion, and arithmetic evaluation of operands. It follows the opcode definitions in the '1825 datasheet and makes no explicit attempt at full compatibility with other specific assemblers (such as mpasm), but hopefully does not break compatibility without good cause. Speed of assembly is one of its primary goals. asm1825 has no library dependencies beyond a standard libc. As development continues, support for more PIC12 and PIC16 series microcontrollers will be added.

Tags assembler assembly cross-plattform unix developers microcontroller embedded systems
License MITL
State beta

Recent Releases

0.8.120 Sep 2021 14:32 major feature: Added scoping of symbols (so symbols no longer need to be globally unique). New BANKANY psect class use any available banked memory. Code support for PIC12F683 and similar chips with more reduced opcode set. Bugfix: Far calls to forward references are now fixed. Other bugs may have been fixed in passing.
0.8.026 Feb 2021 19:23 major feature: Rewrote expression parsing to use GNU flex for tokenization. Added a full complement of operators for expressions. Added SET directive for variable symbols.
0.7.304 Feb 2021 03:34 major bugfix: Fixed serialization of local labels inside macros, as well as substitution of the same labels. Added -V option to show program version. A few bonus bug fixes.
0.7.022 May 2018 02:56 major feature: Added 'pragma smallmem' directive to tell assembler that all calls/gotos can be near. Added processor directive to specify target chip (for memory map information); support for 16F1825 and 16F183XX series chips. Added more standard fcall and lgoto pseudo-opcodes. Several bugfixes (including (here) label handling, file/line numbering in output, and memory usage summary information).
0.6.110 Oct 2017 01:00 minor feature: Adding DW and DS directives. Memory usage statistics are now generated, and messages are now output with current file name and line number. Bug fixes: psDefine now fully evaluates abs= parameter value; moviw/movwi opcodes also have full evaluation of index values.
0.6.028 Sep 2017 15:50 major feature: Program sections (psects) added, supporting both absolute and relocatable sections in program, EEPROM, and data memory. DB directive added to allocate/define memory spaces.
0.5.416 Sep 2017 18:58 minor feature: ORG directives may now have full expression evaluation. Added support for unary +/- operators. Bug fixes in negative decimal number evaluation and short macro argument substitutions. Complete register definition include files for pic16f1825 and pic12f1840. Added example program. Bank selection optimizations and bug fixes. Expanded documentation.
0.5.112 Aug 2017 00:26 major feature: First full release. Most major features implemented, including macros and operand evaluation. Capable of assembling non-trivial programs.