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

Z PMD 85 Infoserver

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 >>