Best Microcontroller for Assembly Language Programming

Thread Starter

Fran3

Joined Mar 28, 2019
51
I've been mostly out of the game for years but way back I did a lot of hardware and firmware design for both microprocessors and microcontrollers. Namely the old Z80, 8048, and 8051.
Back then I wrote all the code in assembly language.
I know the world has moved on and higher level languages like C, C++, and others are what folks use but I still like assembly language.
Now I have a few simple projects in mind and...
I know that selecting the microcontroller depends on the application...
But I'm looking for a starting point to catch up and do some simple projects using assembly language...
so... My Questions...
1 - What microcontrollers would you suggest I look at to bring my skills up to date... that can be programmed using assembly language...
2 - What SDK or development would you suggest for programming using assembly language?
Broad question I know but share your suggestions.
Thanks for any help.
 

MaxHeadRoom

Joined Jul 18, 2013
30,559
Take a look at the Assembly exercises posted on Nigel Goodwin's site , http://www.winpicprog.co.uk/ they cover many of the modern features of the Picmicro range, also see Gooligum Electronics tutoriols.
The will show you many of the basic features of higher end Pics, then there is the later version where you can change the pic features on the fly , e.g. switch the PWM ouput pin on the fly, starting with the 16F18313 etc,.
There is the older version of MPLAB IDE for assembly & the later version, MPLAB-X IDE for the later version Ver 5.35 will allow you to develop in assembly.
 
Last edited:

MrChips

Joined Oct 2, 2009
34,628
There were/are many good/great microprocessor hardware and programming models. My list would include the following:

MOSTEK 6502
Motorola 6800, 6809, 68000,
Freescale (Motorola) 6805, 68HC11, 68HC12
NXP (Freescale) MC9S08
Atmel (Microchip) AVR, ATmega
TI MSP430
ST STM32

If you are asking for current MCUs for learning ASM, my goto would have to be TI MSP430.

https://forum.allaboutcircuits.com/ubs/msp430-tutorial-index-of-articles.1773/

I use IAR Embedded Workbench but TI Code Compiler Studio is also free to use.
 

Brass Cat

Joined Jan 17, 2025
9
Bring back memories. I did programming for the Z80. Board design also. Why back with CPM.

Although I did other micros with assembly, I did a lot with the 8 bit Microchip PIC. Looking forward
to maybe doing a project for myself with the 16 bit dsPic. Instruction set seems to be vary familiar
after using the 8 bit. Trying to remember, 18F877 ???

I really liked how close to the machine you could get. Very tight loops.
 

nsaspook

Joined Aug 27, 2009
16,250
Learn how of create low-level embedded applications in C (nearly every controller on the planet has some sort of C compiler), then you can use just about any modern controller (8 -> 32-bit) once you understand the underlying target hardware to write efficient code in C as a replacement for most ASM coding.
 

nsaspook

Joined Aug 27, 2009
16,250
If it was easy, anyone could do it.

I don't program software, I engineer it, like hardware but using C as the foundational hardware machine abstraction (with compilers for specific families optimized for that hardware) for the engineered software product.
https://www.stroustrup.com/abstraction-and-machine.pdf
C++ maps directly onto hardware. Its basic types (such as char, int, and double) map directly into memory entities (such as bytes, words, and registers), most arithmetic and logical operations provided by processors are available for those types. Pointers, arrays, and references directly reflect the addressing hardware. There is no “abstract”, “virtual” or mathematical model between the C++ programmer’s expressions and the machine’s facilities. This allows relatively simple and very good code generation. C++’s model, which with few exceptions is identical to C’s, isn’t detailed.
All this means is that C can be very efficient if you take the time to learn how to do it.
1739650251236.png
1739650385141.png

You can do the same with assembler but it limits the range of hardware platforms usable with that specialized knowledge of low-level details.
 
Last edited:

MaxHeadRoom

Joined Jul 18, 2013
30,559
I've been mostly out of the game for years but way back I did a lot of hardware and firmware design for both microprocessors and microcontrollers. Namely the old Z80, 8048, and 8051.
Back then I wrote all the code in assembly language.
I know the world has moved on and higher level languages like C, C++, and others are what folks use but I still like assembly language.
I started out with the 8080 & 8085 , in assembly also, found the transition to Picmicro assembly fairly easy and just prefer it as I do not really get into very large systems and controllers.
 

MrChips

Joined Oct 2, 2009
34,628
Learn how to construct algorithms, not write code. I learned to do this with Algol, Pascal, and C.
Knowing the fundamentals of microcontroller architecture and how machine code interacts with the hardware will help you out when you're stuck in the muck.
 

nsaspook

Joined Aug 27, 2009
16,250
For those that are really good in assembler, they do engineer software systems, construct proper algorithms, use structured programing to reduce bugs/errors and even use OOP data structures when needed. It's just that, IMO, it's more useful, long term to use a HLL like C for the implementation of the software engineered product while using those principles.
 

BobaMosfet

Joined Jul 1, 2009
2,211
I've been mostly out of the game for years but way back I did a lot of hardware and firmware design for both microprocessors and microcontrollers. Namely the old Z80, 8048, and 8051.
Back then I wrote all the code in assembly language.
I know the world has moved on and higher level languages like C, C++, and others are what folks use but I still like assembly language.
Now I have a few simple projects in mind and...
I know that selecting the microcontroller depends on the application...
But I'm looking for a starting point to catch up and do some simple projects using assembly language...
so... My Questions...
1 - What microcontrollers would you suggest I look at to bring my skills up to date... that can be programmed using assembly language...
2 - What SDK or development would you suggest for programming using assembly language?
Broad question I know but share your suggestions.
Thanks for any help.
I would recommend ATMEL MCUs (now owned by PIC), or PIC MCUs. I think ATMEL's datasheets and documentation are a bit better, and you can use both assembly language and C. Like you I'm an old hand at assembly. But you need to learn C as well. It's easy if you know assembly, it will make a lot of sense. You can then drop in and out of assembly wherever you need, if necessary.

I also like ATMEL's toolchain, AND, they have a really, really affordably USB programmer, you can tie right to your IDE, so you don't have to work with bootloaders to get started. Write the code, burn it, try it, rinse and repeat. Furthermore, all their 8-bit MCUs are along the same family so are familiar based on whatever size, pinout, or speed you might need. IMHO
 
Last edited:

Ian0

Joined Aug 7, 2020
13,097
ARM assembler is the best by far.
Because it's 32-bit you can get a long way before you need multi-precision arithmetic. Having to write the routines for two-byte precision arithmetic is what spoils assembler programming for 8-bit devices.
Also, there are only a small number of instructions to learn.
 
Top