I came across this when I was searching for resources to help better understand ALUs and assembler.

I love it because:

1. My first computer (an Acorn Electron) had a 6502 processor, and gave me my first exposure to assembler.

2. It's been built so you can do all the exercises in the browser. I really like stuff like this (e.g. Scrimba), as it makes it so much more likely that you'll get started.

A related point: as I go through it, I'm thinking about which instructions are really necessary (maybe all of them?) and why it would be inconvenient if you didn't have a particular instruction.

The simplest computer has only one instruction:

https://en.wikipedia.org/wiki/One-instruction_set_computer

There is even ZISC:

https://en.wikipedia.org/wiki/No_instruction_set_computing

Check out brainfuck if you are into stuff like this.

Haha these are really interesting.

It seems to program with such a reduced instruction set requires one to be either a genius or a computer (i.e. generated code). I'm neither :(

Someone wrote a C compiler that generates code using only x86 MOV instructs.

https://github.com/xoreaxeaxeax/movfuscator