Intel 8051 opcodes

by yurikhan

HTML

<table id="opcodes">
    <tr><th></th>
        <th>_0</th><th>_1</th><th>_2</th><th>_3</th>
        <th>_4</th><th>_5</th><th>_6</th><th>_7</th>
        <th>_8</th><th>_9</th><th>_a</th><th>_b</th>
        <th>_c</th><th>_d</th><th>_e</th><th>_f</th></tr>
</table>

CSS

body { font-family: monospace; }
table { border-collapse: collapse; }
th, td { width: 5.5%; border: 0.25pt solid silver; vertical-align: baseline; }

JavaScript

var opcodes = document.getElementById('opcodes');

function element(tag, text)
{
    var e = document.createElement(tag);
    e.textContent = text || '';
    return e;
}

function row(i, x0, x2, x3, x4, x5, x6, x8)
{
    var tr = element('tr');
    tr.appendChild(element('th', '0123456789ABCDEF'[i]+'_'));
    tr.appendChild(element('td', x0));
    tr.appendChild(element('td', ['ajmp a11', 'acall a11'][i % 2]));
    tr.appendChild(element('td', x2));
    tr.appendChild(element('td', x3));
    tr.appendChild(element('td', x4.replace('%', '#ii')));
    tr.appendChild(element('td', (x5||x4).replace('%', 'dd')));
    tr.appendChild(element('td', (x6||x5||x4).replace('%', '@R0')));
    tr.appendChild(element('td', (x6||x5||x4).replace('%', '@R1')));
    for (var i = 0; i < 8; ++i)
        tr.appendChild(element('td', (x8||x6||x5||x4).replace('%', 'R'+i)));
    opcodes.appendChild(tr);
}

row(0, 'nop', 'ljmp a16', 'rr A', 'inc A', 'inc %');
row(1, 'jbc bit, ±rr', 'lcall a16', 'rrc A', 'dec A', 'dec %');
row(2, 'jb bit, ±rr', 'ret', 'rl A', 'add A, %');
row(3, 'jnb bit, ±rr', 'reti', 'rlc A', 'addc A, %');
row(4, 'jc bit, ±rr', 'orl dd, A', 'orl dd, #ii', 'orl A, %');
row(5, 'jnc bit, ±rr', 'anl dd, A', 'anl dd, #ii', 'anl A, %');
row(6, 'jz bit, ±rr', 'xrl dd, A', 'xrl dd, #ii', 'xrl A, %');
row(7, 'jnz bit, ±rr', 'orl C, bit', 'jmp @A+DPTR', 'mov A, #ii', 'mov %, #ii');
row(8, 'sjmp ±rr', 'anl C', 'movc A, @A+PC', 'div AB', 'mov dd, %');
row(9, 'mov DPTR, #i16', 'mov bit, C', 'movc A, @A+DPTR', 'subb A, %');
row(0xA, 'orl C, /bit', 'mov C, bit', 'inc DPTR', 'mul AB', '—', 'mov %, dd');
row(0xB, 'anl C, /bit', 'cpl bit', 'cpl C', 'cjne A, #ii, ±rr', 'cjne A, dd, ±rr', 'cjne %, #ii, ±rr');
row(0xC, 'push dd', 'clr bit', 'clr C', 'swap A', 'xch a, %');
row(0xD, 'pop dd', 'setb bit', 'setb C', 'da A', 'djnz dd, ±rr', 'xhcd A, %', 'djnz %, ±rr');
row(0xE, 'movx A, @DPTR', 'movx A, @R0', 'movx A, @R1', 'clr A', 'mov A, %');
row(0xF, 'movx @DPTR, A', 'movx @R0, A', 'movx @R1,...