Quote
If you really want to stick to assembler, the AVR based MCU's (ATtiny - ATmega) will be easy to use.
The AVRs and TI's MSP430 series are both pretty nice to program in assembly language.
But the "most recent" AVRs you should be looking at are the AVRmmmFFpp families that have come out since the microchip acquisition. (mmm is memory size. FF is "family", DA, DB, DD, DU, EA, EB, and pp indicates the pin count. I haven't quite figured out the "family" names, but roughly the Dx families are ATmega equivalents, the Ex are ATtiny equivalents, and the DU has native USB. An AVR64DA28 (64k program memory, 8k RAM, 28pin SOIC or SSOP) will set you back about $1.50, in ones, from Digikey. (DIP somewhat more expensive.))
Note that direct USB support in 8bit chips is pretty rare. But program/debug had become easier and cheaper than it used to be. (The above families all use UPDI, which can be implemented with USB/Serial converter and a diode.)
I'm going to disagree with all the people claiming that "you can program any chip in assembly" and "ARM assembly is nice."
The fact is that modern 32bit architectures do a really poor job of documenting their assembly languages - datasheet examples are all in C, books and tutorials use C, the development environments provide peripheral definitions in C, etc.
While the ARM32 instruction set isn't so bad, most of the low-end microcontrollers will be M0 or M0+ that implement the V6m architecture, which is a rather ugly thumb subset of the full ARM (ugly particularly WRT the size and availability of immediate operands.) (M3 and M4 are considerably better.)
RISC-V would start out my figuring out exactly which "extensions" your particular chip implements, and which it doesn't, and having to remember that each time you refer to the instruction set references (published by the RISC-V folks, not the chip vendors. So you won't get nice "instruction set summary" pages in your datasheet or chip reference manual.
ESP... another "extensible" architecture. I don't know whether the chips actually implement any extensions. Good luck even tracking down the assembly language docs. (Hmm. I guess they do actually exist, from Espressif, without having to go all the way back to the Cadence Tensilica docs.)
And then there's converting the header files for the (complex) peripherals. Because they're probably full of "struct" and "enum" stuff that won't parse in the assembler. There was a discussion quite a while ago now about putting together a minimal assembly language environment for STM32F103. Outcome (and pointers to the discussion) here:
https://github.com/WestfW/Minimal-ARMAnd mostly: there's no significant "user community" for assembly language on ESP, ARM Cortex M, or RISC-V. Unlike AVR or i86. :-( You can't pop up a question "why doesn't this instruction sequence work like I think it should; is there a better way?" without getting mostly silence and/or "Why don't you just use C?" as reply.