Blog:Programovanie v assembleri i8080 pre PMD 85 (4)
Z PMD 85 Infoserver
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.
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.
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.
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.
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 >>