Blog:Programovanie v assembleri i8080 pre PMD 85 (4)
Z PMD 85 Infoserver
(Nový Blogový článok) |
(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. | + | 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
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 >>