I did roughly the same thing many moons ago as the final "exam" for my undergraduate embedded systems course. We made Space Invaders, though :^) <a href="https://github.com/tuckerpo/MicroSpaceInvaders">https://github.com/tuckerpo/MicroSpaceInvaders</a><p>We targetted a real SoC, though, so a lot of my implementation can be thought of as a "board support package" or HAL, twiddling LEDs, taking in input, TTY in/out, i2c, timers, IRQ/FIQ handlers, etc...<p>Assembly programming in general is more or less just getting a feel for any given ISA's most important instructions, mnemonics ordering and data/code separation. The rest is a walk in the park if you're comfortable with boring old procedural programming.