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

Z PMD 85 Infoserver

Programovanie v assembleri i8080 pre PMD 85 (3)


Obsah


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

Aritmetické inštrukcie

Táto skupina inštrukcií vykonáva aritmetické 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. Inštrukcie sčítania a odčítania pracujúce s príznakom prenosu Carry CY sú užitočné pri sčítaní/odčítaní 16 a viac bitových čísel.

ADD r      (Add Register)

Operácia: A <-- A + r

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

Inštrukcia ADD pripočíta k akumulátoru A hodnotu z 8 bitového registra r.

Sčítanie akumulátora a 8 bitového registra      (1 byte / 4T)
add b add c add d add e add h add l add a

ADD m      (Add memory)

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

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

Táto inštrukcia pripočíta k akumulátoru A hodnotu z pamäte, ktorej adresa je v registri HL.

Sčítanie akumulátora a hodnoty z pamäte      (1 byte / 7T)
add m

ADI N      (Add immediate)

Operácia: A <-- A + N

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

Táto inštrukcia pripočíta k akumulátoru A priamu 8 bitovú hodnotu N.

Sčítanie akumulátora a priamej 8 bitovej hodnoty      (2 byty / 7T)
adi N

ADC r      (Add Register with carry)

Operácia: A <-- A + r + CY

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

Inštrukcia ADC pripočíta k akumulátoru A hodnotu z 8 bitového registra r a príznak prenosu CY.

Sčítanie akumulátora, 8 bitového registra a príznaku prenosu      (1 byte / 4T)
adc b adc c adc d adc e adc h adc l adc a

ADC m      (Add memory with carry)

Operácia: A <-- A + (HL) + CY

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

Táto inštrukcia pripočíta k akumulátoru A hodnotu z pamäte, ktorej adresa je v registri HL a príznak prenosu CY.

Sčítanie akumulátora, hodnoty z pamäte a príznaku prenosu      (1 byte / 7T)
adc m

ACI N      (Add immediate with carry)

Operácia: A <-- A + N + CY

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

Táto inštrukcia pripočíta k akumulátoru A priamu 8 bitovú hodnotu N a príznak prenosu CY.

Sčítanie akumulátora, priamej 8 bitovej hodnoty a príznaku prenosu      (2 byty / 7T)
aci N

SUB r      (Subtract Register)

Operácia: A <-- A - r

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

Inštrukcia SUB odpočíta od akumulátora A hodnotu z 8 bitového registra r.

Odčítanie 8 bitového registra od akumulátora      (1 byte / 4T)
sub b sub c sub d sub e sub h sub l sub a

SUB m      (Subtract memory)

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

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

Táto inštrukcia odpočíta od akumulátora A hodnotu z pamäte, ktorej adresa je v registri HL.

Odčítanie hodnoty z pamäte od akumulátora      (1 byte / 7T)
sub m

SUI N      (Subtract immediate)

Operácia: A <-- A - N

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

Táto inštrukcia odpočíta od akumulátora A priamu 8 bitovú hodnotu N.

Odčítanie priamej 8 bitovej hodnoty od akumulátora      (2 byty / 7T)
sui N

SBB r      (Subtract Register with borrow)

Operácia: A <-- A - r - CY

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

Inštrukcia SBB odpočíta od akumulátora A hodnotu z 8 bitového registra r a príznak prenosu CY.

Odčítanie 8 bitového registra a príznaku prenosu od akumulátora      (1 byte / 4T)
sbb b sbb c sbb d sbb e sbb h sbb l sbb a

SBB m      (Subtract memory with borrow)

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

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

Táto inštrukcia odpočíta od akumulátora A hodnotu z pamäte, ktorej adresa je v registri HL a príznak prenosu CY.

Odčítanie hodnoty z pamäte a príznaku prenosu od akumulátora      (1 byte / 7T)
sbb m

SBI N      (Subtract immediate with borrow)

Operácia: A <-- A - N - CY

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

Táto inštrukcia odpočíta od akumulátoru A priamu 8 bitovú hodnotu N a príznak prenosu CY.

Odčítanie priamej 8 bitovej hodnoty a príznaku prenosu od akumulátora      (2 byty / 7T)
sbi N

INR r      (Increment Register)

Operácia: r <-- r + 1

Príznaky: Z, S, P, AC

Inštrukcia INR pripočíta k 8 bitovému registru jednotku - inkrementuje ho. Príznak prenosu CY sa nemení, ani pri zmene hodnoty z 255 -> 0!

Inkrement 8 bitového registra      (1 byte / 5T)
inr b inr c inr d inr e inr h inr l inr a

INR m      (Increment memory)

Operácia: (HL) <-- (HL) + 1

Príznaky: Z, S, P, AC

Táto inštrukcia inkrementuje hodnotu v pamäti, ktorej adresa je v registri HL. Príznak prenosu CY sa nemení, ani pri zmene hodnoty z 255 -> 0!

Inkrement hodnoty v pamäti      (1 byte / 10T)
inr m

DCR r      (Decrement Register)

Operácia: r <-- r - 1

Príznaky: Z, S, P, AC

Inštrukcia DCR odpočíta od 8 bitovému registra jednotku - dekrementuje ho. Príznak prenosu CY sa nemení, ani pri zmene hodnoty z 0 -> 255!

Dekrement 8 bitového registra      (1 byte / 5T)
dcr b dcr c dcr d dcr e dcr h dcr l dcr a

DCR m      (Decrement memory)

Operácia: (HL) <-- (HL) - 1

Príznaky: Z, S, P, AC

Táto inštrukcia dekrementuje hodnotu v pamäti, ktorej adresa je v registri HL. Príznak prenosu CY sa nemení, ani pri zmene hodnoty z 0 -> 255!

Dekrement hodnoty v pamäti      (1 byte / 10T)
dcr m

INX rp      (Increment Register pair)

Operácia: rp <-- rp + 1

Príznaky: žiadne

Inštrukcia INX pripočíta k 16 bitovému registru jednotku - inkrementuje ho. Žiadne príznaky sa nemenia (aj keď by to niekedy bolo užitočné)!

Inkrement 16 bitového registra      (1 byte / 5T)
inx b inx d inx h inx sp

DCX rp      (Decrement Register pair)

Operácia: rp <-- rp - 1

Príznaky: žiadne

Inštrukcia DCX odpočíta od 16 bitového registra jednotku - dekrementuje ho. Opäť sa žiadne príznaky nemenia!

Dekrement 16 bitového registra      (1 byte / 5T)
dcx b dcx d dcx h dcx sp

DAD rp      (Add Register pair to HL)

Operácia: HL <-- HL + rp

Príznaky: CY

Inštrukcia DAD pripočíta k 16 bitovému registru HL hodnotu ďalšieho 16 bitového registra rp. Inštrukcia ovplyvňuje iba príznak CY. Ak pri sčítaní dôjde k pretečeniu - výsledok by mal byť väčší ako 65535 - príznak CY sa nastaví, inak sa vynuluje.

16 bitové sčítanie      (1 byte / 10T)
dad b dad d dad h dad sp

DAA      (Decimal Adjust Accumulator)

Operácia: A <-- BCD(A)

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

Inštrukcia DAA vykoná tzv. desiatkovú korekciu hodnoty v akumulátore A, teda prevedie jeho hodnotu do BCD formátu, čo znamená, že každý nibble v byte (dolná alebo horná štvorica bitov) predstavuje jednu desiatkovú číslicu. Inštrukcia DAA pracuje nasledujúcim spôsobom:

  • Ak je hodnota dolných štyroch bitov akumulátora väčšia ako 9 alebo je nastavený príznak AC, je k akumulátoru pripočítaná hodnota 6. Zároveň je príznak AC nastavený, ak je hodnota dolných štyroch bitov akumulátora väčšia ako 9 (ešte pred pripočítaním hodnoty 6).
  • Ak je teraz hodnota horných štyroch bitov akumulátora väčšia ako 9 alebo je nastavený príznak CY, je k akumulátoru pripočítaná hodnota 60h a zároveň je nastavený aj príznak CY.

Vykonanie inštrukcie DAA má teda zmysel po nejakej inej aritmetickej inštrukcii, kedy sa príslušne nastavia (pripravia) príznaky AC a CY.

Úprava hodnoty akumulátora do BCD formátu      (1 byte / 4T)
daa



<< Inštrukčná sada mikroprocesora - Inštrukcie pre presun dát Inštrukčná sada mikroprocesora - Logické inštrukcie >>