If you want an alternative to the good suggestions that others have already provided, you might like the recent game &quot;Human Resource Machine&quot;[1], by the creators of &quot;World Of Goo&quot;. As they describe the game:<p><pre><code>   Your office is a simple computer. ... You might describe this machine
   as Harvard Architecture with a single accumulator.
</code></pre>
Don&#x27;t think of it so much as a game, but a fun interactive CPU that you program in assembler. It starts with how to use basic opcodes (I&#x2F;O, math) and registers (&quot;save a copy on the floor&quot;). Conditional jumps (w&#x2F; an implicit flag register) are gradually added, and later puzzles use indirect addressing a lot.<p>[1] <a href="http:&#x2F;&#x2F;tomorrowcorporation.com&#x2F;humanresourcemachine" rel="nofollow">http:&#x2F;&#x2F;tomorrowcorporation.com&#x2F;humanresourcemachine</a>