Much of assembly programming is variants of these commands:<p><pre><code>    - mov &lt;dst&gt;, &lt;src&gt;            | dst = src
    - sub &lt;dst&gt;, &lt;src a&gt;, &lt;src b&gt; | dst = a - b
    - jump &lt;label&gt;                | continue running at &lt;label&gt;
    - jump if equal &lt;label&gt;       | continue running at &lt;label&gt; if both sources of
                                    the last command were equal
    - call &lt;label&gt;                | save the current location, then continue
                                    running at &lt;label&gt;
    - ret                         | continue running after the previous CALL
                                    instruction
</code></pre>
&lt;dst&gt; can be:<p><pre><code>    - any memory address
    - any of 8-32 available temporary integer variables called &quot;registers&quot;
</code></pre>
&lt;src&gt; can be any valid &lt;dst&gt; or a hardcoded integer known as an &quot;immediate&quot;