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

Z PMD 85 Infoserver

Programovanie v assembleri i8080 pre PMD 85 (5)


Obsah

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

Inštrukcie skokov

Táto skupina inštrukcií umožňuje meniť sled vykonávania inštrukcií (programu). Jedná sa o inštrukcie skoku, volaní podprogramov (rutín) a návratov z nich. Väčšina týchto inštrukcií má svoje nepodmienené aj podmienené verzie. Nepodmienené skoky jednoducho podľa danej operácie zmenia hodnotu registra PC. Podmienené skoky zmenia alebo nezmenia hodnotu PC podľa stavu štyroch príznakov - Z, S, P a CY, čo predstavuje 8 rôznych podmienok:

  • NZ - Not Zero (Z=0)
  • Z - Zero (Z=1)
  • NC - No Carry (CY=0)
  • C - Carry (CY=1)
  • PO - Parity Odd (P=0)
  • PE - Parity Even (P=1)
  • P - Plus (S=0)
  • M - Minus (S=1)

Pri podmienených volaniach rutín a návratov z nich sa líši aj trvanie inštrukcií. Ak je podmienka splnená, inštrukcia Cc NN trvá 17T, v opačnom prípade iba 11T. Podobne pri inštrukcii Rc, ak je podmienka splnená, inštrukcia trvá 11T, v opačnom prípade iba 5T. Inštrukcie podmieneného skoku Jc NN trvajú vždy rovnako 10T, bez ohľadu na to, či bola podmienka splnená alebo nie.


JMP NN      (Jump)

Operácia: PC <-- NN

Príznaky: žiadne

Inštrukcia JMP prevedie nepodmienený skok na adresu NN.

Nepodmienený skok      (3 byty / 10T)
jmp NN

Jc NN      (Conditional jump)

Operácia: if (c) then PC <-- NN

Príznaky: žiadne

Inštrukcia Jc prevedie skok na adresu NN, ak je splnená podmienka c. Ak podmienka nie je splnená, pokračuje sa nasledujúcou inštrukciou.

Podmienený skok      (3 byty / 10T)
jnz NN jnc NN jpo NN jp NN
jz NN jc NN jpe NN jm NN

CALL NN      (Call)

Operácia: SP <-- SP - 2 : (SP) <-- PC + 3 : PC <-- NN

Príznaky: žiadne

Inštrukcia CALL prevedie volanie podprogramu na adrese NN. Pred samotným skokom na adresu NN sa najprv na zásobník uloží adresa za touto inštrukciou - návratová adresa - čo znamená, že sa adresa zásobníka SP zníži o 2 a na túto adresu sa uloží táto návratová adresa.

Volanie podprogramu      (3 byty / 17T)
call NN

Cc NN      (Conditional call)

Operácia: if (c) then SP <-- SP - 2 : (SP) <-- PC + 3 : PC <-- NN

Príznaky: žiadne

Inštrukcia Cc prevedie volanie podprogramu na adrese NN, ak je splnená podmienka c. Ak podmienka nie je splnená, pokračuje sa nasledujúcou inštrukciou. Opäť platí, že pred skokom na adresu NN sa najprv uloží na zásobník návratová adresa.

Podmienené volanie podprogramu      (3 byty / 11/17T)
cnz NN cnc NN cpo NN cp NN
cz NN cc NN cpe NN cm NN

RET      (Return)

Operácia: PC <-- (SP) : SP <-- SP + 2

Príznaky: žiadne

Inštrukcia RET prevedie nepodmienený návrat z podprogramu, čo znamená, že sa do registra PC uloží hodnota na vrchole zásobníka a adresa zásobníka SP sa zvýši o 2.

Návrat z podprogramu      (1 byte / 10T)
ret

Rc      (Conditional return)

Operácia: if (c) then PC <-- (SP) : SP <-- SP + 2

Príznaky: žiadne

Inštrukcia Rc prevedie návrat z podprogramu, ak je splnená podmienka c. Ak podmienka nie je splnená, pokračuje sa nasledujúcou inštrukciou.

Podmienený návrat z podprogramu      (1 byte / 5/11T)
rnz rnc rpo rp
rz rc rpe rm

RST N      (Restart)

Operácia: SP <-- SP - 2 : (SP) <-- PC + 1 : PC <-- N * 8

Príznaky: žiadne

Inštrukcia RST prevedie volanie podprogramu rovnako ako inštrukcia CALL. Rozdiel je iba v tom, že je jednobytová a cieľová adresa je pevne daná operandom N, ktorý je zakódovaný v operačnom kóde inštrukcie a môže byť v intervale 07. Tento operand vynásobený ôsmimi určuje teda 8 pevných adries, na ktoré je možné skočiť: 0000h, 0008h, 0010h, 0018h, 0020h, 0028h, 0030h a 0038h.

Pôvodné použitie týchto jednobytových volaní bolo v roli "vektorov" obsluhy prerušení pre radič prerušenia i3214. Na PMD 85 však nie je použitý.

Inštrukcie RST možno voľne používať pre volanie podprogramov, len musíme zabezpečiť, že tie podprogramy budú začínať na daných adresách. Je to rýchlejšie a aj kratšie volanie. Napríklad BASIC-G V2/2A/3 práve takto tieto inštrukcie volania podprogramu využíva.

Volanie podprogramu na pevnej adrese      (1 byte / 11T)
rst 0 rst 1 rst 2 rst 3 rst 4 rst 5 rst 6 rst 7

PCHL      (Jump indirect)

Operácia: PC <-- HL

Príznaky: žiadne

Inštrukcia PCHL prevedie skok na adresu, ktorá je v registri HL - nepriamy skok.

Nepriamy skok      (1 byte / 5T)
pchl



<< Inštrukčná sada mikroprocesora - Logické inštrukcie Inštrukčná sada mikroprocesora - Inštrukcie pre prácu so zásobníkom, inštrukcie pre vstup/výstup, ostatné inštrukcie >>