You can use assembly language on any microcontroller. The real question is "What IDE can I use?"
Strictly speaking, you don't need an IDE at all. A simple text editor, a command line assembler, and a tool to transfer the binary is all you need. An IDE makes it easier but isn't required.
The Arduino IDE includes everything you need to transfer the binary to the microcontroller. From what I've read, it also includes everything you need to use assembly language.
According to this thread on the Arduino forum, it is relatively easy to use assembly language with the Arduino IDE.
Summary:
- Start a project and save it. This will generate the .ino file and the folder it belongs in.
- Add a tab to the project (little "down arrow" far to the right of the tab showing the project tab.)
- Name the new file "test.S" where "test" is whatever name you want to use. The file extension must be "S" and it must be upper case.
- Add assembly code to the .S file.
- Call the assembly code from the .ino file.
You can define a subroutine in assembly like this:
.global example
example:
;assembly code goes here.
You would call it from the .ino file like this:
extern "C" {
// function prototype
void example();
}
void loop() {
example();
}
I haven't tried it, so I can't tell you how well it works or what difficulties may arise.
Check out the link and follow the directions there - I've only posted a quick summary that doesn't include many of the details from the Arduino forum thread.
I expect that at least one downside to that is that there'll be some code from the Arduino libraries included in your binary. That will restrict you somewhat in the size of your assembly code.
Another thing is that the Arduino system requires a bootloader installed on the microcontroller. That occupies space in the microcontroller's flash space, again limiting how much space your own code can occupy.
For fiddling around and learning, you should have plenty of space. If you were going to produce a product to sell then the requirement of the Arduino bootloader and the space it occupies might be a problem.