-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOpcodeTable.xhtml
More file actions
29 lines (29 loc) · 55.5 KB
/
OpcodeTable.xhtml
File metadata and controls
29 lines (29 loc) · 55.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">- no title specified</title><meta name="DCTERMS.title" content="" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.issued" content="2017-06-08T16:11:00.712000000" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.modified" content="2017-06-08T23:47:33.026000000" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="" xml:lang="en-US"/><meta name="DCTERMS.subject" content="," xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
@page { }
table { border-collapse:collapse; border-spacing:0; empty-cells:show }
td, th { vertical-align:top; font-size:10pt;}
h1, h2, h3, h4, h5, h6 { clear:both }
ol, ul { margin:0; padding:0;}
li { list-style: none; margin:0; padding:0;}
<!-- "li span.odfLiEnd" - IE 7 issue-->
li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
span.footnodeNumber { padding-right:1em; }
span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
* { margin:0;}
.ta1 { writing-mode:lr-tb; }
.Default { font-family:Liberation Sans; }
.ce1 { font-family:Liberation Serif; border-width:0.0133cm; border-style:solid; border-color:#000000; vertical-align:middle; text-align:center ! important; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
.ce2 { font-family:Liberation Serif; border-width:0.0133cm; border-style:solid; border-color:#000000; text-align:center ! important; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:bold; }
.ce3 { font-family:Liberation Serif; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
.ce4 { font-family:Liberation Serif; background-color:#99ff66; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
.ce5 { font-family:Liberation Serif; background-color:#99ff66; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
.ce6 { font-family:Liberation Serif; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; font-style:normal; text-shadow:none; text-decoration:none ! important; font-weight:normal; }
.ce7 { font-family:Liberation Sans; background-color:transparent; }
.co1 { width:64.01pt; }
.co2 { width:353.4pt; }
.ro1 { height:12.81pt; }
.ro2 { height:23.75pt; }
<!-- ODF styles with no properties representable as CSS -->
{ }
</style></head><body dir="ltr"><table border="0" cellspacing="0" cellpadding="0" class="ta1"><colgroup><col width="99"/><col width="99"/><col width="99"/><col width="545"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/><col width="99"/></colgroup><tr class="ro1"><td colspan="4" style="text-align:left;width:64.01pt; " class="ce1"><p>From Github: https://en.wikipedia.org/wiki/CHIP-8#Opcode_table</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce2"><p>Opcode</p></td><td style="text-align:left;width:64.01pt; " class="ce2"><p>Type</p></td><td style="text-align:left;width:64.01pt; " class="ce2"><p>C Pseudo</p></td><td style="text-align:left;width:353.4pt; " class="ce2"><p>Explanation</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>0NNN</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Call</p></td><td style="text-align:left;width:64.01pt; " class="ce6"> </td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Calls <a href="https://en.wikipedia.org/wiki/RCA_1802">RCA 1802</a> program at address NNN. Not necessary for most ROMs.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce4"><p>“00E0”</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Display</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>disp_clear()</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Clears the screen.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>00EE</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Flow</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>return;</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Returns from a subroutine.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>1NNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Flow</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>goto NNN;</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Jumps to address NNN.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>2NNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Flow</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>*(0xNNN)()</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Calls subroutine at NNN.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>3XNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Cond</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>if(Vx==NN)</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Skips the next instruction if VX equals NN. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>4XNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Cond</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>if(Vx!=NN)</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Skips the next instruction if VX doesn't equal NN. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>5XY0</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Cond</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>if(Vx==Vy)</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Skips the next instruction if VX equals VY. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>6XNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Const</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx = NN</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets VX to NN.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>7XNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Const</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx += NN</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Adds NN to VX.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY0</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Assign</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx=Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets VX to the value of VY.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY1</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>BitOp</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx=Vx|Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets VX to VX <a href="https://en.wikipedia.org/wiki/Logical_disjunction">or</a> VY. (Bitwise OR operation)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY2</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>BitOp</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx=Vx&Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets VX to VX <a href="https://en.wikipedia.org/wiki/Logical_conjunction">and</a> VY. (Bitwise AND operation)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY3</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>BitOp</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx=Vx^Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets VX to VX <a href="https://en.wikipedia.org/wiki/Xor">xor</a> VY.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY4</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Math</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx += Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Adds VY to VX. VF is set to 1 when there's a carry, and to 0 when there isn't.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>8XY5</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Math</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>Vx -= Vy</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>VY is subtracted from VX. VF is set to 0 when there's a borrow, and 1 when there isn't.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>8XY6</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>BitOp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx >> 1</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Shifts VX right by one. VF is set to the value of the <a href="https://en.wikipedia.org/wiki/Least_significant_bit">least significant bit</a> of VX before the shift.<a href="https://en.wikipedia.org/wiki/CHIP-8#cite_note-shift-2">[2]</a></p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>8XY7</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Math</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx=Vy-Vx</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets VX to VY minus VX. VF is set to 0 when there's a borrow, and 1 when there isn't.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>8XYE</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>BitOp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx << 1</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Shifts VX left by one. VF is set to the value of the <a href="https://en.wikipedia.org/wiki/Most_significant_bit">most significant bit</a> of VX before the shift.<a href="https://en.wikipedia.org/wiki/CHIP-8#cite_note-shift-2">[2]</a></p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>9XY0</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Cond</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>if(Vx!=Vy)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Skips the next instruction if VX doesn't equal VY. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce5"><p>ANNN</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>MEM</p></td><td style="text-align:left;width:64.01pt; " class="ce5"><p>I = NNN</p></td><td style="text-align:left;width:353.4pt; " class="ce5"><p>Sets I to the address NNN.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>BNNN</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Flow</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>PC=V0+NNN</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Jumps to the address NNN plus V0.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>CXNN</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Rand</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx=rand()&NN</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets VX to the result of a bitwise and operation on a random number (Typically: 0 to 255) and NN.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>DXYN</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Disp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>draw(Vx,Vy,N)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Draws a sprite at coordinate (VX, VY) that has a width of 8 pixels and a height of N pixels. Each row of 8 pixels is read as bit-coded starting from memory location I; I value doesn’t change after the execution of this instruction. As described above, VF is set to 1 if any screen pixels are flipped from set to unset when the sprite is drawn, and to 0 if that doesn’t happen</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>EX9E</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>KeyOp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>if(key()==Vx)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Skips the next instruction if the key stored in VX is pressed. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>EXA1</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>KeyOp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>if(key()!=Vx)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Skips the next instruction if the key stored in VX isn't pressed. (Usually the next instruction is a jump to skip a code block)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX07</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Timer</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx = get_delay()</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets VX to the value of the delay timer.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX0A</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>KeyOp</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Vx = get_key()</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>A key press is awaited, and then stored in VX. (Blocking Operation. All instruction halted until next key event)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX15</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Timer</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>delay_timer(Vx)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets the delay timer to VX.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX18</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>Sound</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>sound_timer(Vx)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets the sound timer to VX.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX1E</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>MEM</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>I +=Vx</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Adds VX to I.<a href="https://en.wikipedia.org/wiki/CHIP-8#cite_note-onlgame-3">[3]</a></p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX29</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>MEM</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>I=sprite_addr[Vx]</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Sets I to the location of the sprite for the character in VX. Characters 0-F (in hexadecimal) are represented by a 4x5 font.</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX33</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>BCD</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>set_BCD(Vx); </p><p>*(I+0)=BCD(3);</p><p>*(I+1)=BCD(2);</p><p>*(I+2)=BCD(1);</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Stores the <a href="https://en.wikipedia.org/wiki/Binary-coded_decimal">binary-coded decimal</a> representation of VX, with the most significant of three digits at the address in I, the middle digit at I plus 1, and the least significant digit at I plus 2. (In other words, take the decimal representation of VX, place the hundreds digit in memory at location in I, the tens digit at location I+1, and the ones digit at location I+2.)</p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX55</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>MEM</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>reg_dump(Vx,&I)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Stores V0 to VX (including VX) in memory starting at address I.<a href="https://en.wikipedia.org/wiki/CHIP-8#cite_note-memi-4">[4]</a></p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="ce3"><p>FX65</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>MEM</p></td><td style="text-align:left;width:64.01pt; " class="ce3"><p>reg_load(Vx,&I)</p></td><td style="text-align:left;width:353.4pt; " class="ce3"><p>Fills V0 to VX (including VX) with values from memory starting at address I.<a href="https://en.wikipedia.org/wiki/CHIP-8#cite_note-memi-4">[4]</a></p></td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:353.4pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr><tr class="ro2"><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td><td style="text-align:left;width:353.4pt; " class="Default"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="ce7"> </td><td style="text-align:left;width:64.01pt; " class="Default"> </td></tr></table></body></html>