Search code examples
assemblyx86raspberry-pi

Programmable microcontroller in Assembly language with breadboard


I am looking for a microcontroller product like/or if possible a Raspberry-PI that will allow me to program in Assembly Language. This is for a extra credit school project but needs to be specifically programmed in assembly with some hardware like (Logic gates, I/O, etc). If I got the RPi route, is there a program, (that works with the I/O on the board) that will do this? Or other suggestions on what I can do?

I don't want to drop $100+ on a kit (RPi) that doesn't fit my needs.

Arduino's aren't the best option either.


Solution

  • If by logic gates you mean hardware logic gate integrated circuits, a Raspberry Pi will allow you to do this, so will an Arduino, or a PICAX microcontroller, or a Zilog Z80 microprocessor. The options really are endless, all MCUs/MPUs use assembly to one extent or another. I would suggest either the Arduino or Raspberry Pi. Whole books are written for programming assembly specifically on the Raspberry pi. (Haven't seen any for arduino, but I'm sure they're out there.) So finding out how to program in assembly on them shouldn't be too hard at all.

    You don't need to buy a $100 raspberry pi kit. Just buy the raspberry pi, figure out what other hardware you need, and buy it separately. Just be sure you have a keyboard, HDMI chord and a monitor if you buy the raspberry pi so you can program on it just like you would on a computer. I'm sure you can also program it via SSH, but this may be very difficult to set up. (I could be wrong, I haven't used a raspberry pi in many years.)

    If you go for the Arduino, be sure you also get a USB chord of the proper type to program it.

    A note, your answer tags "x86". Be forewarned: The Raspberry Pi does not use x86, it uses the ARM architecture. The Arduino uses AVR architecture, and the PICAX also uses its own architecture. So you won't be able to program on any of these in x86 assembly.

    What about x86 then?

    The Zilog Z80 was originally designed as an extension for the Intel 8080, so it's "binary compatible" with the 8080. (This means if you were to have a program written in binary for the 8080, it would run exactly the same on a Z80) Programming on the Zilog Z80 is similar to programming in basic 8-bit x86, (Not full x86, remember, it's binary compatible with the 8080, not chips added afterwards that had more commands. If you know x86, the 8080 and Z80 syntax will be familiar to you.) just with different mnemonics and some added features like the Index registers. So the Z80 is an option if you're good at hardware and aren't afraid of reading a few datasheets. (The Z80 data sheet is very comprehensive and not terribly long.)

    If you're not comfortable using the Z80 though, I would suggest the Intel Quark D2000 development board. It's supposedly arduino-like, and will run full 32 bit x86 assembly for you. The Quark will run Zephyr, which is a Linux Real Time Operating System that should simplify running code on the Quark by quite a bit.