Upload
dixon
View
50
Download
3
Embed Size (px)
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
Citation preview
Skokové inštrukcieSkokové inštrukcie
Inštrukcie pre vetvenie programu
Delia sa na:-podmienené
-nepodmienené
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).
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.
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
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
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
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
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
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
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
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
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
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ý.
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ý.
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ý.
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ý.
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.
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
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.
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..
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..