is valid?      

Text formatted with Texy:

Asembler HC08

Registry

  • A (8b)
  • HX (16b)
  • SP (16b)
  • PC (16b)
  • CCR (8b) – stavový registr:
    • V
    • H
    • I
    • N
    • Z
    • C

Instrukce

Rozdělení
přesuny dat
aritmetické
logické
řídící

Operační kód každé instrukce je 1 bajt.

Přesuny dat

Akumulátor

  • LDA: vložení do A
  • STA: vložení z A do paměti

Zásobník

* PSHA, PSHX, PSHH : push
* PULA, PULX, PULH : pop Zásobník roste od vyšších adres k nižším. SP vždy ukazuje na první volné místo.

Aritmetické

  • ADD, SUB: A s operandem
  • MUL: X * A → X:A
  • DIV: H:A / X → A, zbytek → H
  • NEGA: dvojkový doplněk A
  • CLR: nulování paměti
  • CLR[A/H/X]: nulování registrů
  • [INC/DEC][X/A]: změny o 1

Logické

  • Bxxx: podmínky – rozhodují podle obsahu A

ostatní

  • RSP: reset HX a SP:
    • HX, SP ← 00FF

Zápis hodnot

  • %xxx: dvojkově
  • $xxx: šestnáctkově
  • jinak: desítkově

HC08 je big-endian, tj. bajty ve slově i bity v bajtu jsou s rostoucí adresou od MSB do LSB – stejně jako číslo normálně napsané na papír. x86 je little-endian, tj. bajty ve slově jsou opačně.

Adresování

  • vlastní (inherent): (bez operandu)
  • přímý operand (immediate): #operand

S neoznačeným operandem

* přímé (direct): adresa 0–255 (přístup do tzv. nulté stránky)
* rozšířené (extended): 2-bajtová adresa (přístup kamkoliv)
* indexované (indexed): bázová adresa a offset
* relativní (relative): posun od aktuální instrukce (používají to skoky)

Paměť

  1. IO & Control ($0000)
  2. RAM ($0040):
    • Relocatible Stack ($0040)
    • User RAM ($00FF)
  3. (nic)
  4. User Flash/ROM ($8000)
  5. Monitor ROM ($FE20)
  6. (něco dalšího)
  7. Interrupt Vectors ($FF52)

Generated HTML code:

<h1 id="toc-asembler-hc08">Asembler HC08</h1>

<h2 id="toc-registry">Registry</h2>

<ul>
	<li>A (8b)</li>

	<li>HX (16b)</li>

	<li>SP (16b)</li>

	<li>PC (16b)</li>

	<li>CCR (8b)&nbsp;&ndash; stavový registr:
		<ul>
			<li>V</li>

			<li>H</li>

			<li>I</li>

			<li>N</li>

			<li>Z</li>

			<li>C</li>
		</ul>
	</li>
</ul>

<h2 id="toc-instrukce">Instrukce</h2>

<dl>
	<dt>Rozdělení</dt>

	<dd>přesuny dat</dd>

	<dd>aritmetické</dd>

	<dd>logické</dd>

	<dd>řídící</dd>
</dl>

<p>Operační kód každé instrukce je 1&nbsp;bajt.</p>

<h3 id="toc-presuny-dat">Přesuny dat</h3>

<h4 id="toc-akumulator">Akumulátor</h4>

<ul>
	<li>LDA: vložení do A</li>

	<li>STA: vložení z&nbsp;A&nbsp;do paměti</li>
</ul>

<h4 id="toc-zasobnik">Zásobník</h4>

<p>* PSHA, PSHX, PSHH : push<br>
* PULA, PULX, PULH : pop Zásobník roste od vyšších adres k&nbsp;nižším. SP
vždy ukazuje na první volné&nbsp;místo.</p>

<h3 id="toc-aritmeticke">Aritmetické</h3>

<ul>
	<li>ADD, SUB: A&nbsp;s&nbsp;operandem</li>

	<li>MUL: X * A → X:A</li>

	<li>DIV: H:A / X → A, zbytek → H</li>

	<li>NEGA: dvojkový doplněk A</li>

	<li>CLR: nulování paměti</li>

	<li>CLR[A/H/X]: nulování registrů</li>

	<li>[INC/DEC][X/A]: změny o&nbsp;1</li>
</ul>

<h3 id="toc-logicke">Logické</h3>

<ul>
	<li>Bxxx: podmínky&nbsp;&ndash; rozhodují podle obsahu A</li>
</ul>

<h3 id="toc-ostatni">ostatní</h3>

<ul>
	<li>RSP: reset HX a SP:
		<ul>
			<li>HX, SP ← 00FF</li>
		</ul>
	</li>
</ul>

<h2 id="toc-zapis-hodnot">Zápis hodnot</h2>

<ul>
	<li>%xxx: dvojkově</li>

	<li>$xxx: šestnáctkově</li>

	<li>jinak: desítkově</li>
</ul>

<p>HC08 je big-endian, tj. bajty ve slově i&nbsp;bity v&nbsp;bajtu jsou s&nbsp;rostoucí
adresou od MSB do LSB&nbsp;&ndash; stejně jako číslo normálně napsané na papír.
x86 je little-endian, tj. bajty ve slově jsou opačně.</p>

<h2 id="toc-adresovani">Adresování</h2>

<ul>
	<li>vlastní (inherent): (bez operandu)</li>

	<li>přímý operand (immediate): #operand</li>
</ul>

<h4 id="toc-s-neoznacenym-operandem">S&nbsp;neoznačeným operandem</h4>

<p>* přímé (direct): adresa 0&ndash;255 (přístup do tzv. nulté stránky)<br>
* rozšířené (extended): 2-bajtová adresa (přístup kamkoliv)<br>
* indexované (indexed): bázová adresa a offset<br>
* relativní (relative): posun od aktuální instrukce (používají
to&nbsp;skoky)</p>

<h2 id="toc-pamet">Paměť</h2>

<ol>
	<li>IO &amp; Control ($0000)</li>

	<li>RAM ($0040):
		<ul>
			<li>Relocatible Stack ($0040)</li>

			<li>User RAM ($00FF)</li>
		</ul>
	</li>

	<li>(nic)</li>

	<li>User Flash/ROM ($8000)</li>

	<li>Monitor ROM ($FE20)</li>

	<li>(něco dalšího)</li>

	<li>Interrupt Vectors ($FF52)</li>
</ol>

Verze Texy: 3.2.1 (konfigurace)