Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Základy mikroprocesorové techniky 11. Týden – Instrukční sada ‘51 Garant:Prof. Zdeněk Bohuslávek, CSc. Přednášející:Ing. Jiří Nesládek Podklady:http://www.rabaka.net/ZMT.

Podobné prezentace


Prezentace na téma: "Základy mikroprocesorové techniky 11. Týden – Instrukční sada ‘51 Garant:Prof. Zdeněk Bohuslávek, CSc. Přednášející:Ing. Jiří Nesládek Podklady:http://www.rabaka.net/ZMT."— Transkript prezentace:

1 Základy mikroprocesorové techniky 11. Týden – Instrukční sada ‘51 Garant:Prof. Zdeněk Bohuslávek, CSc. Přednášející:Ing. Jiří Nesládek Podklady:http://www.rabaka.net/ZMT

2 Typy operandů A – střadač C – příznak přenosu ve stavovém slově (PSW) DPTR – SFR registr používaný pro nepřímé adresování Rx – registr R0  R7 @Rr – nepřímá adresa v R0 resp. R1 – obsah registru určuje adresu místa, s jehož obsahem se bude pracovat a8, a11, a16 – přímá adresa (8, 11 resp. 16-ti bitová) #d8, #d16 – přímá data (8 resp. 16-ti bitová) r8 – relativní adresa b8 – bitová adresa /b8 – negovaná hodnota bitu b8

3 Instrukce přesunů MOV – Move Memory MOVC – Move Code Memory MOVX – Move Extended Memory PUSH – Push Value Onto Stack POP – Pop Value From Stack XCH – Exchange bytes XCHD – Exchange digits

4 Instrukce přesunů MOV –Přesune bajt ze zdrojového umístění (src) do cílového umístění (dst) –Syntaxe:MOVdst, src ARxa8@Rr#d8#d16Cb8 A Rx a8a8 @Rr DPTR C b8

5 Instrukce přesunů MOVC –Přesune bajt z programové paměti do střadače. Adresa místa, jehož obsah se přesouvá, získáme jako 16-ti bitový součet obsahu střadače (8 bitů) a ukazatele dat DPTR nebo čítače instrukcí PC. V případě čítače instrukcí do výpočtu vstupuje již adresa odpovídající následující instrukci. –Syntaxe:MOVCA, @A+DPTR MOVCA, @A+PC MOVX –Přesune byte z/do střadače do/z vnější paměti dat. Instrukce mohou využívat 16-ti nebo 8-mi bitovou nepřímou adresu. V prvním případě se vysílá adresa uložená v DPTR na bránu P2 (DPH) a bránu P0 (DPL). V druhém případě se vysílá na bránu P0 adresa uložená v registru R0 nebo R1 a na bráně P2 zůstává hodnota naposledy zapsaná. –Syntaxe:MOVXA, @Rr MOVXA, @DPTR MOVX@Rr, A MOVX@DPTR, A

6 Instrukce přesunů PUSH –Přičte jedničku k ukazateli zásobníku a potom uloží obsah adresovaného místa na vrcholu zásobníku (zásobník je vždy ve vnitřní datové paměti). –Syntaxe:PUSHa8 POP –Vyzvedne obsah vrcholu zásobníku a uloží jej na adresované paměťové místo. Pak odečte od ukazatele zásobníku jedničku. –Syntaxe:POPa8 XCH –Vymění (navzájem prohodí) obsah střadače a určeného registru nebo adresovaného paměťového místa. –Syntaxe:XCHA, Rx XCHA, a8 XCHA, @Rr XCHD –Vymění (navzájem prohodí) obsah nižšího „půlbajtu“ střadače s nepřímo adresovaným paměťovým místem vnitřní paměti RAM. –Syntaxe:XCHDA, @Rr

7 Aritmetické operace INC – Increment Register DEC – Decrement Register ADD (ADDC) – Add Accumulator (With Carry) SUBB – Subtract From Accumulator With Borrow MUL – Multiply Accumulator by B DIV – Divide Accumulator by B DA – Decimal Adjust

8 Aritmetické operace INC –Přičte k obsahu adresovaného paměťového místa jedničku. –Syntaxe:INCA INCRx INCa8 INC@Rr INCDPTR DEC –Odečte jedničku od obsahu adresovaného paměťového místa. –Syntaxe:DECA DECRx DECa8 DEC@Rr

9 Aritmetické operace ADD, ADDC –Přičte ke střadači obsah adresovaného bytu. ADDC navíc přičítá ještě příznak přetečení (Carry). –Syntaxe:ADDA, RxADDCA, Rx ADDA, @RrADDCA, @Rr ADDA, a8ADDCA, a8 ADDA, #d8ADDCA, #d8 SUBB –Odečte od střadače obsah adresovaného bytu včetně příznaku přenosu (Borrow = Carry). –Syntaxe:SUBBA, Rx SUBBA, @Rr SUBBA, a8 SUBBA, #d8

10 Aritmetické operace MUL –Vynásobí dvě osmibitová čísla bez znaménka uložená ve střadači a registru B. Po operaci se do A uloží nižší byte výsledku, do B vyšší byte výsledku. –Syntaxe:MULAB DIV –Celočíselně vydělí obsah střadače obsahem registru B. Celá část podílu se uloží do střadači, zbytek (nikoliv desetinná část) zůstává v registru B. –Syntaxe:DIVAB DA –Koriguje obsah střadače po binárním sčítání dvou dekadických čísel vyjádřených v BCD kódu tak, aby výsledek opět tvořil dvě čtyřbitová BCD čísla. Je-li hodnota na nižších čtyřech bytech >9 nebo AC=1, potom se ke střadači přičte hodnota 6. Je-li hodnota na vyšších čtyřech bitech >9 nebo AC=1, potom se ke střadači přičte hodnota 60H. –Syntaxe:DAA

11 Logické operace ANL – Bitwise AND ORL – Bitwise OR XRL – Bitwise Exclusive OR CLR – Clear Register CPL – Complement Register

12 Logické operace ANL/ORL/XRL –Provede logický součin/součet/výlučný součet mezi odpovídajícími bity z cílového a zdrojového umístění a výsledek uloží do cílového umístění. –Syntaxe:ANLdst, src ORLdst, src XRLdst, src ARxa8@Rr#d8b8/b8 A a8 C

13 Logické operace CLR –Vynuluje obsah střadače resp. adresovaný bit. –Syntaxe:CLRA CLRC CLRb8 CPL –Neguje každý bit střadače resp. adresovaný bit. –Syntaxe:CPLA CPLC CPLb8

14 Instrukce posunů RL – Rotate Accumulator LeftSyntaxe: RL A RLC – Rotate Accumulator Left Throuht CarrySyntaxe: RLC A RR – Rotate Accumulator RightSyntaxe: RR A RRC – Rotate Accumulator Right Throuht CarrySyntaxe: RRC A SWAP – Swap Accumulator NibblesSyntaxe: SWAP A b7b6b5b4b3b2b1b0 b7b6b5b4b3b2b1b0C b7b6b5b4b3b2b1b0 b7b6b5b4b3b2b1b0C b7  b4b3  b0

15 Výhradně bitové operace SETB – Set Bit –Nastaví přímo adresovaný bit na log.1. –Syntaxe:SETBC SETBb8

16 Instrukce podmíněných skoků JC – Jump if Carry Set JNC – Jump if Carry Not Set JB – Jump if Bit Set JNB – Jump if Bit NotSet JBC – Jump if Bit Set And Clear Bit JZ – Jump if Accumulator Zero JNZ – Jump if Accumulator Not Zero CJNE – Compare and Jump if Not Equal DJNZ – Decrement Register and Jump if Not Zero

17 Instrukce podmíněných skoků JC/JNC –Testuje příznak přenosu (C) a v případě jeho nastavení (log. 1) resp. nulovosti (log. 0) provede skok na adresu, kterou vypočte jako součet čítače instrukcí a relativní adresy. –Syntaxe:JCr8JNCr8 JB/JNB –Testuje adresovaný bit a v případě jeho nastavení (log.1) resp. nulovosti (log. 0) provede skok na adresu, kterou vypočte jako součet čítače instrukcí a relativní adresy. –Syntaxe:JBr8JNBr8 JZ/JNZ –Testuje obsah střadače a v případě je nulovosti resp. nenulovosti provede skok na adresu, kterou vypočte jako součet hodnoty čítače instrukcí a relativní adresy. –Syntaxe:JZr8JNZr8

18 Instrukce podmíněných skoků CJNE –Porovná dva bajty z umístění daného prvními dvěma operandy. V případě jejich nerovnosti provede relativní skok. Adresa skoku se vypočte přičtením relativního posunu k čítači instrukcí. Pokud se cílový a zdrojový byte rovnají, program pokračuje vykonáváním další instrukce následující po instrukci CJNE. –Syntaxe:CJNEA, a8, r8 CJNEA, #d8, r8 CJNERx, #d8, r8 CJNE@Rr, #d8, r8 DJNZ –Odečte od adresovaného paměťového místa jedničku a zjistí, zda je výsledek nulový. Je-li výsledek nenulový, provede skok na definovanou adresu. Je-li výsledek nulový, program pokračuje vykonáváním další instrukce následující po instrukci DJNZ. –Syntaxe:DJNZRx, r8 DJNZa8, r8

19 Instrukce skoků ACALL – Absolute CallSyntaxe:ACALLa11 LCALL – Long CallSyntaxe:LCALLa16 RET – Return From SubroutineSyntaxe:RET RETI – Return From InterruptSyntaxe:RETI AJMP – Absolute JumpSyntaxe:AJMPa11 LJMP – Long JumpSyntaxe:LJMPa16 SJMP – Short JumpSyntaxe:SJMPr8 JMP – Jump to AddressSyntaxe:JMP@A+DPTR

20 Příklad: blikání LEDkou $MOD52; use 8052 predefined symbols LEDEQUP3.4; P3.4 is red LED on eval board CSEG; MAIN PROGRAM ORG0000h ;============================================================================== BLINK:CPLLED; flash (complement) the red LED CALLDELAY; call software delay JMPBLINK; repeat indefinately ;============================================================================== DELAY:; delay 100ms MOVR7, #200; 200 * 500us = 100ms DLY1:MOVR6, #229; 229 * 2.17us = 500us DJNZR6, $; sit here for 500us DJNZ R7, DLY1; repeat 200 times (100ms delay) RET ;============================================================================== END


Stáhnout ppt "Základy mikroprocesorové techniky 11. Týden – Instrukční sada ‘51 Garant:Prof. Zdeněk Bohuslávek, CSc. Přednášející:Ing. Jiří Nesládek Podklady:http://www.rabaka.net/ZMT."

Podobné prezentace


Reklamy Google