Blog:Programovanie v assembleri i8080 pre PMD 85 (4)

Z PMD 85 Infoserver

(Rozdiel medzi revíziami)
Rombor (Diskusia | príspevky)
(Nový Blogový článok)
Aktuálna verzia (10:17, 31. august 2021) (upraviť) (vrátiť)
Rombor (Diskusia | príspevky)
(Opravený preklep a pridané obrázky inštrukcií rotácií)
 
Riadok 234: Riadok 234:
Inštrukcia {{Kbd|RLC}} prevedie rotáciu akumulátora {{Kbd|A}} vľavo s tým, že vystupujúci bit {{Kbd|7}} sa uloží do bitu {{Kbd|0}} a aj do príznaku {{Kbd|CY}}.
Inštrukcia {{Kbd|RLC}} prevedie rotáciu akumulátora {{Kbd|A}} vľavo s tým, že vystupujúci bit {{Kbd|7}} sa uloží do bitu {{Kbd|0}} a aj do príznaku {{Kbd|CY}}.
 +
<html><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOIAAAAwAQMAAAA2KDSwAAAABlBMVEUAAAD///+l2Z/dAAAApklEQVR4XrXQYQrDIAwF4IAH2FUK/hXe1XuAQa4i5O/gjYCW2sFs1u4hQf0kYIRfst6imv34IPnywhTQ7EolaeZPakDhSmz6jKj6ne9qimpu2juXgOqoTAH9yL9VjCtJSV52wQlFJkDCzMtu4ZzSQUctnKtYU5G010Uw1dxV7dB5rsX6j0YF5ooltUnaYZJz3ULjkKDigurPWmVMRHnozJDigvJGfQNYzX/1ItpuegAAAABJRU5ErkJggg==" alt="RLC" title="RLC"></html>
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
Riadok 249: Riadok 250:
Inštrukcia {{Kbd|RRC}} prevedie rotáciu akumulátora {{Kbd|A}} vpravo s tým, že vystupujúci bit {{Kbd|0}} sa uloží do bitu {{Kbd|7}} a aj do príznaku {{Kbd|CY}}.
Inštrukcia {{Kbd|RRC}} prevedie rotáciu akumulátora {{Kbd|A}} vpravo s tým, že vystupujúci bit {{Kbd|0}} sa uloží do bitu {{Kbd|7}} a aj do príznaku {{Kbd|CY}}.
 +
<html><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANIAAAAyAQMAAAATExeDAAAABlBMVEUAAAD///+l2Z/dAAAApElEQVR4Xr3RAQYDMRBG4WEPkKuUACxz9Ryg7FWGH2B4pUgbVLLL9hngY0jG+Fm71VoBsgBsQMrXjAOQgAxAddW82xOQFi0BYuuWrFrfuQPaz1l/e07s7/ezKA2wrxzCfGJe5Y67+AwSKwbHaDk3i+LE9m0Pszq1Knc07lRqarsOd/lomptXNTT+mQib2TsxJIDTlhdN6xY2tC3amOCS5UXjRnsBUD5mSyDwWV8AAAAASUVORK5CYII=" alt="RRC" title="RRC"></html>
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
Riadok 264: Riadok 266:
Inštrukcia {{Kbd|RAL}} prevedie rotáciu akumulátora {{Kbd|A}} vľavo s tým, že vystupujúci bit {{Kbd|7}} sa uloží do príznaku {{Kbd|CY}} a pôvodná hodnota príznaku {{Kbd|CY}} sa uloží do bitu {{Kbd|0}}.
Inštrukcia {{Kbd|RAL}} prevedie rotáciu akumulátora {{Kbd|A}} vľavo s tým, že vystupujúci bit {{Kbd|7}} sa uloží do príznaku {{Kbd|CY}} a pôvodná hodnota príznaku {{Kbd|CY}} sa uloží do bitu {{Kbd|0}}.
 +
<html><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOIAAAAyAQMAAAB74JW7AAAABlBMVEUAAAD///+l2Z/dAAAAo0lEQVR4Xr3RUQoDIQwE0IAH2KsU/BXm6j1AwasI87uQGoHFBammCw4aiE8EVfRH3hs0R2uPCqcVDQ6NpporkLalOBRNcenHo9nWrCnBq/FS0jQ5NN9Vg0O3/6+cBypIsNIFC4pIU5BWugGH5rsmnauUAK2TIqHXl2CqkYRydPJcU9PRjeaKSAFHLznXFuogy4oHmv/WIoMsqo5O1lXFA9W9+gWQoanpbafyBQAAAABJRU5ErkJggg==" alt="RAL" title="RAL"></html>
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
Riadok 279: Riadok 282:
Inštrukcia {{Kbd|RAR}} prevedie rotáciu akumulátora {{Kbd|A}} vpravo s tým, že vystupujúci bit {{Kbd|0}} sa uloží do príznaku {{Kbd|CY}} a pôvodná hodnota príznaku {{Kbd|CY}} sa uloží do bitu {{Kbd|7}}.
Inštrukcia {{Kbd|RAR}} prevedie rotáciu akumulátora {{Kbd|A}} vpravo s tým, že vystupujúci bit {{Kbd|0}} sa uloží do príznaku {{Kbd|CY}} a pôvodná hodnota príznaku {{Kbd|CY}} sa uloží do bitu {{Kbd|7}}.
 +
<html><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAAAyAQMAAACUIv6FAAAABlBMVEUAAAD///+l2Z/dAAAAqUlEQVR4XsXTwQnDMAwFUIEHyCoFXw1avQMUskJGEPyr4Le6pCm4lZ1D8zEfwQODbSz8ke0Pel9IehRLTNBx5UoSCLCY6ozqro9QTKhHWdnVOalAaAtt87rfhud63fuKL0JSDlHSolLVClWqgu9FgOO6fqqPqVgRWjnqTaS+SlOtQCV6O+fagEb0TpSr1qDeTeYaIdjJedXz6hxVk05y/RIneVapiV73B59iBrLhl0F3JgAAAABJRU5ErkJggg==" alt="RAR" title="RAR"></html>
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
Riadok 307: Riadok 311:
''Príznaky:'' CY
''Príznaky:'' CY
-
Inštrukcia {{Kbd|CMC}} nastaví príznak {{Kbd|CY}} na jeho opačnú hodnotu. Ako bol {{Kbd|CY}}=1, bude {{Kbd|CY}}=0. Ak bol {{Kbd|CY}}=0, bude {{Kbd|CY}}=1.
+
Inštrukcia {{Kbd|CMC}} nastaví príznak {{Kbd|CY}} na jeho opačnú hodnotu. Ak bol {{Kbd|CY}}=1, bude {{Kbd|CY}}=0. Ak bol {{Kbd|CY}}=0, bude {{Kbd|CY}}=1.
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"

Aktuálna verzia

Programovanie v assembleri i8080 pre PMD 85 (4)


Obsah

Inštrukčná sada mikroprocesora i8080 (pokračovanie)

Logické inštrukcie

Táto skupina inštrukcií vykonáva logické operácie medzi registrami a pamäťou. Všetky inštrukcie v tejto skupine, ak nie je uvedené inak, nastavujú príznaky podľa výsledku operácie. Ďalej sú tu inštrukcie pre rotácie akumulátora a ďalšie špeciálne inštrukcie.

Operácie AND (logický súčin), OR (logický súčet) a XOR (vyhradený logický súčet) vykonávajú tieto funkcie.

      A | B | AND                       A | B | OR                       A | B | XOR
     ---|---|-----                     ---|---|----                     ---|---|-----
      0 | 0 |  0                        0 | 0 |  0                       0 | 0 |  0
      0 | 1 |  0                        0 | 1 |  1                       0 | 1 |  1
      1 | 0 |  0                        1 | 0 |  1                       1 | 0 |  1
      1 | 1 |  1                        1 | 1 |  1                       1 | 1 |  0
 
      01101110   6E                     10101001   A9                    00101101   2D
  AND 10111011   BB                  OR 00011100   1C                XOR 10110111   B7
      --------   --                     --------   --                    --------   --
      00101010   2A                     10111101   BD                    10011010   9A

ANA r      (AND Register)

Operácia: A <-- A and r

Príznaky: Z, S, P, CY, AC

Inštrukcia ANA prevedie operáciu logického súčinu medzi akumulátorom A a jedným z 8 bitových registrov r a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznak prenosu CY.

Logický súčin akumulátora a 8 bitového registra      (1 byte / 4T)
ana b ana c ana d ana e ana h ana l ana a

ANA m      (AND memory)

Operácia: A <-- A and (HL)

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu logického súčinu medzi akumulátorom A a hodnotou z pamäte, ktorej adresa je v registri HL a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznak prenosu CY.

Logický súčin akumulátora a hodnoty z pamäte      (1 byte / 7T)
ana m

ANI N      (AND immediate)

Operácia: A <-- A and N

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu logického súčinu medzi akumulátorom A a priamou 8 bitovou hodnotou N a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznak prenosu CY.

Logický súčin akumulátora a priamej 8 bitovej hodnoty      (2 byty / 7T)
ani N

ORA r      (OR Register)

Operácia: A <-- A or r

Príznaky: Z, S, P, CY, AC

Inštrukcia ORA prevedie operáciu logického súčtu medzi akumulátorom A a jedným z 8 bitových registrov r a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Logický súčet akumulátora a 8 bitového registra      (1 byte / 4T)
ora b ora c ora d ora e ora h ora l ora a

ORA m      (OR memory)

Operácia: A <-- A or (HL)

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu logického súčtu medzi akumulátorom A a hodnotou z pamäte, ktorej adresa je v registri HL a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Logický súčet akumulátora a hodnoty z pamäte      (1 byte / 7T)
ora m

ORI N      (OR immediate)

Operácia: A <-- A or N

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu logického súčtu medzi akumulátorom A a priamou 8 bitovou hodnotou N a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Logický súčet akumulátora a priamej 8 bitovej hodnoty      (2 byty / 7T)
ori N

XRA r      (XOR Register)

Operácia: A <-- A xor r

Príznaky: Z, S, P, CY, AC

Inštrukcia XRA prevedie operáciu vyhradeného logického súčtu medzi akumulátorom A a jedným z 8 bitových registrov r a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Vyhradený logický súčet akumulátora a 8 bitového registra      (1 byte / 4T)
xra b xra c xra d xra e xra h xra l xra a

XRA m      (XOR memory)

Operácia: A <-- A xor (HL)

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu vyhradeného logického súčtu medzi akumulátorom A a hodnotou z pamäte, ktorej adresa je v registri HL a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Vyhradený logický súčet akumulátora a hodnoty z pamäte      (1 byte / 7T)
xra m

XRI N      (XOR immediate)

Operácia: A <-- A xor N

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie operáciu vyhradeného logického súčtu medzi akumulátorom A a priamou 8 bitovou hodnotou N a výsledok uloží opäť do akumulátora. Inštrukcia nuluje príznaky prenosu CY a AC.

Vyhradený logický súčet akumulátora a priamej 8 bitovej hodnoty      (2 byty / 7T)
xri N

CMP r      (Compare Register)

Operácia: A - r

Príznaky: Z, S, P, CY, AC

Inštrukcia CMP prevedie porovnanie akumulátora A s jedným z 8 bitových registrov r. Táto inštrukcia je v podstate "nedotiahnuté" odčítanie. Obsah jedného z registrov sa odpočíta od akumulátora, nastavia sa príznaky podľa výsledku odčítania, ale výsledok odčítania sa zahodí. Pri tomto porovnaní sú najdôležitejšie príznaky CY a Z a tie sa nastavia nasledovne:

  • ak A < r potom CY=1, Z=0 (v podmienke to bude C (Carry) a NZ (Not Zero))
  • ak A > r potom CY=0, Z=0 (v podmienke to bude NC (No Carry) a NZ (Not Zero))
  • ak A = r potom CY=0, Z=1 (v podmienke to bude NC (No Carry) a Z (Zero))
Porovnanie akumulátora a 8 bitového registra      (1 byte / 4T)
cmp b cmp c cmp d cmp e cmp h cmp l cmp a

CMP m      (Compare memory)

Operácia: A - (HL)

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie porovnanie akumulátora A a hodnoty z pamäte, ktorej adresa je v registri HL. Všetko ostatné platí ako pri inštrukcii CMP r.

Porovnanie akumulátora a hodnoty z pamäte      (1 byte / 7T)
cmp m

CPI N      (Compare immediate)

Operácia: A - N

Príznaky: Z, S, P, CY, AC

Táto inštrukcia prevedie porovnanie akumulátora A s priamou 8 bitovou hodnotou N. Všetko ostatné platí ako pri inštrukcii CMP r.

Porovnanie akumulátora a priamej 8 bitovej hodnoty      (2 byty / 7T)
cpi N

RLC      (Rotate left)

Operácia: An+1 <-- An : A0 <-- A7 : CY <-- A7

Príznaky: CY

Inštrukcia RLC prevedie rotáciu akumulátora A vľavo s tým, že vystupujúci bit 7 sa uloží do bitu 0 a aj do príznaku CY.

RLC

Rotácia akumulátora vľavo      (1 byte / 4T)
rlc

RRC      (Rotate right)

Operácia: An <-- An+1 : A7 <-- A0 : CY <-- A0

Príznaky: CY

Inštrukcia RRC prevedie rotáciu akumulátora A vpravo s tým, že vystupujúci bit 0 sa uloží do bitu 7 a aj do príznaku CY.

RRC

Rotácia akumulátora vpravo      (1 byte / 4T)
rrc

RAL      (Rotate left through carry)

Operácia: An+1 <-- An : CY <-- A7 : A0 <-- CY

Príznaky: CY

Inštrukcia RAL prevedie rotáciu akumulátora A vľavo s tým, že vystupujúci bit 7 sa uloží do príznaku CY a pôvodná hodnota príznaku CY sa uloží do bitu 0.

RAL

Rotácia akumulátora vľavo cez Carry      (1 byte / 4T)
ral

RAR      (Rotate right through carry)

Operácia: An <-- An+1 : CY <-- A0 : A7 <-- CY

Príznaky: CY

Inštrukcia RAR prevedie rotáciu akumulátora A vpravo s tým, že vystupujúci bit 0 sa uloží do príznaku CY a pôvodná hodnota príznaku CY sa uloží do bitu 7.

RAR

Rotácia akumulátora vpravo cez Carry      (1 byte / 4T)
rar

CMA      (Complement Accumulator)

Operácia: A <-- A alebo tiež A <-- 255 - A

Príznaky: žiadne

Inštrukcia CMA invertuje (komplementuje) hodnotu akumulátora A. Všetky jednotkové bity sa nastavia na nulu a nulové bity na jednotku.

Komplement akumulátora      (1 byte / 4T)
cma

CMC      (Complement carry)

Operácia: CY <-- CY

Príznaky: CY

Inštrukcia CMC nastaví príznak CY na jeho opačnú hodnotu. Ak bol CY=1, bude CY=0. Ak bol CY=0, bude CY=1.

Komplement príznaku Carry      (1 byte / 4T)
cmc

STC      (Set carry)

Operácia: CY <-- 1

Príznaky: CY

Inštrukcia STC nastaví príznak CY=1.

Nastavenie príznaku Carry      (1 byte / 4T)
stc



<< Inštrukčná sada mikroprocesora - Aritmetické inštrukcie Inštrukčná sada mikroprocesora - Inštrukcie skokov >>