skokové inštrukcie

21
Skokové Skokové inštrukcie inštrukcie Inštrukcie pre vetvenie programu Delia sa na: -podmienené - nepodmienené

Upload: dixon

Post on 21-Jan-2016

50 views

Category:

Documents


3 download

DESCRIPTION

Skokové inštrukcie. Inštrukcie pre vetvenie programu Delia sa na:-podmienené -nepodmienené. Skokové inštrukcie. LJMPaddr 16 PC  addr 16 Program skočí na adresu uvedenú v poli operandov. Adresa je 16 bitová, tak môže pracovať s celou programovou pamäťou (64kB). Skokové inštrukcie. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

Inštrukcie pre vetvenie programu

Delia sa na:-podmienené

-nepodmienené

Page 2: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

LJMPLJMP addr 16addr 16

PC PC addr 16 addr 16

Program skočí na adresu uvedenú v poli Program skočí na adresu uvedenú v poli operandov. Adresaoperandov. Adresa je 16 bitová, tak môže je 16 bitová, tak môže

pracovať s celou programovou pracovať s celou programovou

pamäťou (64kB). pamäťou (64kB).

Page 3: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

AJMPAJMP addr 11addr 11

PC PC addr 11 addr 11

Program skočí na adresu uvedenú v poli Program skočí na adresu uvedenú v poli operandooperandovv. Adresa je len 11 bitová, . Adresa je len 11 bitová, pretopreto

ciecieľľ skoku sa musí nachádzať vo vnútri toho skoku sa musí nachádzať vo vnútri toho istého 2kB bloku programovej pamäte ako istého 2kB bloku programovej pamäte ako

prvý bajt inštrukcie nasledujúcej za prvý bajt inštrukcie nasledujúcej za

inštrukciou AJMP.inštrukciou AJMP.

Page 4: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

SJMPSJMP addr 8addr 8PC PC addr 8 addr 8

Program vykoná nepodmienený skok na Program vykoná nepodmienený skok na adresu reprezentovanú návestím. Adresa je adresu reprezentovanú návestím. Adresa je

len 8-bitová, preto môže táto inštrukcia len 8-bitová, preto môže táto inštrukcia skákať len v rámci jednej pamäťovej skákať len v rámci jednej pamäťovej

stránky. stránky.

Tieto 3 inštrukcie sa dajú nahradiť inštrukciou Tieto 3 inštrukcie sa dajú nahradiť inštrukciou JMPJMP

Page 5: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JMPJMP @A+DPTR@A+DPTR

PC PC A+DPTR A+DPTR

Nepodmienený skok - Skočí na adresuNepodmienený skok - Skočí na adresu,, ktorú ktorú získa ako súčet obsahu akumulátora a získa ako súčet obsahu akumulátora a

registra DPTRregistra DPTR

Page 6: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukciePodmienené skoky:Podmienené skoky:

JZJZ addr 8addr 8Ak A = 0Ak A = 0 PC PC addr 8 addr 8

Ak A Ak A ≠ ≠ 00 PC = PC+2PC = PC+2

Ak je obsah akumulátora nulový skočí na Ak je obsah akumulátora nulový skočí na návestie.návestie.

Ak nie je obsah akumulátora nulový program Ak nie je obsah akumulátora nulový program pokračuje ďalej.pokračuje ďalej.

Napr. : JZNapr. : JZ BBBBBB

Page 7: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JNZJNZ addr 8addr 8Ak A = 0Ak A = 0 PC = PC+2PC = PC+2

Ak A Ak A ≠ ≠ 00 PC PC addr 8 addr 8

Ak je obsah akumulátora nulový program Ak je obsah akumulátora nulový program pokračuje ďalej.pokračuje ďalej.

Ak nie je obsah akumulátora nulový skočí na Ak nie je obsah akumulátora nulový skočí na návestie.návestie.

Napr. : JNZNapr. : JNZ BBBBBB

Page 8: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JCJC addr 8addr 8Ak C = 0Ak C = 0 PC = PC+2PC = PC+2

Ak C = 1Ak C = 1 PC PC addr 8 addr 8

Ak je obsah carry bitu nulový program Ak je obsah carry bitu nulový program pokračuje ďalej.pokračuje ďalej.

Ak je obsah carry bitu 1 skočí na návestie.Ak je obsah carry bitu 1 skočí na návestie.

Napr. : JCNapr. : JC BBBBBB

Page 9: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JNCJNC addr 8addr 8Ak C = 1Ak C = 1 PC = PC+2PC = PC+2

Ak C = 0Ak C = 0 PC PC addr 8 addr 8

Ak je obsah carry bitu 1 program pokračuje Ak je obsah carry bitu 1 program pokračuje ďalej.ďalej.

Ak je obsah carry bitu nulový skočí na Ak je obsah carry bitu nulový skočí na návestie. návestie.

Napr. : JNCNapr. : JNC BBBBBB

Page 10: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JBJB bit addr,addr 8bit addr,addr 8Ak bit vo v.p.d. = 1Ak bit vo v.p.d. = 1 PC PC addr 8 addr 8

Ak bit vo v.p.d. = 0Ak bit vo v.p.d. = 0 PC = PC+3 PC = PC+3

Ak je obsah bitu vo v.p.d. 1 skočí na návestie. Ak je obsah bitu vo v.p.d. 1 skočí na návestie.

Ak je obsah bitu vo v.p.d. nulový program Ak je obsah bitu vo v.p.d. nulový program pokračuje ďalej.pokračuje ďalej.

Napr. : JBNapr. : JB 30,BBB30,BBB

Page 11: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JBCJBC bit addr,addr 8bit addr,addr 8Ak bit vo v.p.d. = 1Ak bit vo v.p.d. = 1 PC PC addr 8 addr 8

bit vo v.p.d. = 0bit vo v.p.d. = 0

Ak bit vo v.p.d. = 0Ak bit vo v.p.d. = 0 PC = PC+3 PC = PC+3Ak je obsah bitu vo v.p.d. 1 skočí na návestie Ak je obsah bitu vo v.p.d. 1 skočí na návestie

a bit vo ;v.p.d. sa vynuluje. a bit vo ;v.p.d. sa vynuluje.

Ak je obsah bitu vo v.p.d. nulový program Ak je obsah bitu vo v.p.d. nulový program pokračuje ďalej.pokračuje ďalej.

Napr. : JBCNapr. : JBC 50,BBB50,BBB

Page 12: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

JNBJNB bit addr,addr 8bit addr,addr 8Ak bit vo v.p.d. = 0Ak bit vo v.p.d. = 0 PC PC addr 8 addr 8

Ak bit vo v.p.d. = 1Ak bit vo v.p.d. = 1 PC = PC+3 PC = PC+3

Ak je obsah bitu vo v.p.d. nulový program skočí na návestie.

Ak je obsah bitu vo v.p.d. rovný 1 program pokračuje ďalej.

Napr. : JNB 80,BBB

Page 13: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

CJNECJNE A,data addr,addr 8A,data addr,addr 8Ak A Ak A ≠ ≠ číslo vo v.p.d. PC číslo vo v.p.d. PC addr 8 addr 8

Ak A = čislo vo v.p.d. PC = PC+3Ak A = čislo vo v.p.d. PC = PC+3

Ak A Ak A < čislo vo v.p.d. C = 1(inak C=0)< čislo vo v.p.d. C = 1(inak C=0)Napr. : CJNENapr. : CJNE A,30,BBBA,30,BBB

Ak sa nerovnajú hodnoty v akumulátore a vo Ak sa nerovnajú hodnoty v akumulátore a vo v.p.d. tak program skočí na návestie BBB.v.p.d. tak program skočí na návestie BBB.

Ak sa rovnajú hodnoty v akumulátore a vo Ak sa rovnajú hodnoty v akumulátore a vo v.p.d. tak program pokračuje ďalej.v.p.d. tak program pokračuje ďalej.

Ak je hodnota v akumulátore menšia ako Ak je hodnota v akumulátore menšia ako hodnota vo v.p.d. tak carry bit sa nastaví hodnota vo v.p.d. tak carry bit sa nastaví

na 1 inak je nulový.na 1 inak je nulový.

Page 14: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

CJNECJNE A,A,##data,addr 8data,addr 8Ak A Ak A ≠ ≠ číslo číslo PC PC addr 8 addr 8

Ak A = čisloAk A = čislo PC = PC+3 PC = PC+3

Ak A Ak A < čislo< čislo C = 1 ( inak C = 0 )C = 1 ( inak C = 0 )

Napr. CJNENapr. CJNE A,#30,BBBA,#30,BBB

Ak sa nerovnajú hodnoty v akumulátore a Ak sa nerovnajú hodnoty v akumulátore a čísla tak program skočí na návestie BBB.čísla tak program skočí na návestie BBB.

Ak sa rovnajú hodnoty v akumulátore a čísla Ak sa rovnajú hodnoty v akumulátore a čísla tak program pokračuje ďalej.tak program pokračuje ďalej.

Ak je hodnota v akumulátore menšia ako číslo Ak je hodnota v akumulátore menšia ako číslo tak carry bit sa nastaví na 1 inak je nulový.tak carry bit sa nastaví na 1 inak je nulový.

Page 15: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

CJNECJNE Rr,Rr,##data,addr 8data,addr 8Ak Rr Ak Rr ≠ ≠ číslo číslo PC PC addr 8 addr 8

Ak Rr = čisloAk Rr = čislo PC = PC+3 PC = PC+3

Ak Rr Ak Rr < čislo< čislo C = 1 ( inak C = 0 )C = 1 ( inak C = 0 )

Napr. CJNENapr. CJNE R4,#30,BBBR4,#30,BBB

Ak sa nerovnajú hodnoty v registry R4 a čísla Ak sa nerovnajú hodnoty v registry R4 a čísla tak program skočí na návestie BBB.tak program skočí na návestie BBB.

Ak sa rovnajú hodnoty v registry R4 a čísla Ak sa rovnajú hodnoty v registry R4 a čísla tak program pokračuje ďalej.tak program pokračuje ďalej.

Ak je hodnota v registry R4 menšia ako číslo Ak je hodnota v registry R4 menšia ako číslo tak carry bit sa nastaví na 1 inak je nulový.tak carry bit sa nastaví na 1 inak je nulový.

Page 16: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

CJNECJNE @Ri,@Ri,##data,addr 8data,addr 8Ak číslo vo v.p.d. Ak číslo vo v.p.d. ≠ ≠ číslo PC číslo PC addr 8 addr 8

Ak číslo vo v.p.d. = čisloAk číslo vo v.p.d. = čislo PC = PC+3 PC = PC+3

Ak číslo vo v.p.d. Ak číslo vo v.p.d. < čislo C=1(inak C= 0 )< čislo C=1(inak C= 0 )

Napr. CJNENapr. CJNE @R1,#30,BBB@R1,#30,BBB

Ak sa nerovnajú hodnoty vo v.p.d. a Ak sa nerovnajú hodnoty vo v.p.d. a čísla tak program skočí na návestie.čísla tak program skočí na návestie.

Ak sa rovnajú hodnoty vo v.p.d. a čísla Ak sa rovnajú hodnoty vo v.p.d. a čísla tak program pokračuje ďalej.tak program pokračuje ďalej.

Ak je hodnota vo v.p.d. menšia ako Ak je hodnota vo v.p.d. menšia ako číslo tak carry bit sa nastaví na 1 číslo tak carry bit sa nastaví na 1

inak je nulový.inak je nulový.

Page 17: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

DJNZDJNZ Rr,addr 8Rr,addr 8Rr = Rr – 1Rr = Rr – 1

Ak Rr Ak Rr ≠ ≠ 0 0 PC PC addr 8 addr 8

Ak Rr = 0Ak Rr = 0 PC = PC+2 PC = PC+2

Napr. DJNZNapr. DJNZ R5,BBBR5,BBB

Dekrementuje obsah registra R5 a ak sa Dekrementuje obsah registra R5 a ak sa nerovná nule tak skočí na návestie BBB, ak nerovná nule tak skočí na návestie BBB, ak

je nulový tak program pokračuje ďalej.je nulový tak program pokračuje ďalej.

Page 18: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

DJNZDJNZ data addr,addr 8data addr,addr 8Čislo vo v.p.d. = čislo vo v.p.d. – 1Čislo vo v.p.d. = čislo vo v.p.d. – 1

Ak čislo vo v.p.d. Ak čislo vo v.p.d. ≠ ≠ 0 PC 0 PC addr 8 addr 8

Ak čslo vo v.p.d. = 0Ak čslo vo v.p.d. = 0 PC = PC+3 PC = PC+3

Napr. DJNZNapr. DJNZ 20,BBB20,BBB

Dekrementuje číslo vo v.p.d. ak sa nerovná Dekrementuje číslo vo v.p.d. ak sa nerovná nule tak skočí na návestie BBBnule tak skočí na návestie BBB ak je nulové ak je nulové

tak program pokračuje ďalejtak program pokračuje ďalej

Page 19: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

CALLCALL addr 16addr 16

Volanie podprogramu Volanie podprogramu

Napr. CALLNapr. CALL BBBBBB

Program skočí do podprogramu BBB.Program skočí do podprogramu BBB.

Page 20: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

RETRET

Návrat z podprogramuNávrat z podprogramu

Program pokračuje na inštrukcii, ktorá Program pokračuje na inštrukcii, ktorá nasleduje za inštrukciou CALLnasleduje za inštrukciou CALL..

Page 21: Skokové inštrukcie

Skokové inštrukcieSkokové inštrukcie

RETIRETI

Návrat z podprogramu pre prerušenieNávrat z podprogramu pre prerušenie

Program pokračuje na tej adrese, na ktorej Program pokračuje na tej adrese, na ktorej došlo k prerušeniudošlo k prerušeniu..