1 / 20

Základy mikroprocesorové techniky

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. Typy operandů. A – střadač C – příznak přenosu ve stavovém slově (PSW)

jiro
Download Presentation

Základy mikroprocesorové techniky

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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:MOVC A, @A+DPTR MOVC A, @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:MOVX A, @Rr MOVX A, @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: PUSH a8 • 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: XCH A, Rx XCH A, a8 XCH A, @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: INC A INC Rx INC a8 INC @Rr INC DPTR • DEC • Odečte jedničku od obsahu adresovaného paměťového místa. • Syntaxe: DEC A DEC Rx DEC a8 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: ADD A, RxADDC A, Rx ADD A, @RrADDC A, @Rr ADD A, a8ADDC A, a8 ADD A, #d8 ADDC A, #d8 • SUBB • Odečte od střadače obsah adresovaného bytu včetně příznaku přenosu (Borrow = Carry). • Syntaxe: SUBB A, RxSUBB A, @RrSUBB A, a8SUBB A, #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: MUL AB • 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: ANL dst, src ORL dst, src XRL dst, src

  13. Logické operace • CLR • Vynuluje obsah střadače resp. adresovaný bit. • Syntaxe: CLR A CLR C CLR b8 • CPL • Neguje každý bit střadače resp. adresovaný bit. • Syntaxe: CPL A CPL C CPL b8

  14. Instrukce posunů • RL – Rotate Accumulator Left Syntaxe: RL A • RLC – Rotate Accumulator Left Throuht Carry Syntaxe: RLC A • RR – Rotate Accumulator Right Syntaxe: RR A • RRC – Rotate Accumulator Right Throuht Carry Syntaxe: RRC A • SWAP – Swap Accumulator Nibbles Syntaxe: SWAP A b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0 C b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0 C b7  b4 b3  b0

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

  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: JC r8 JNC r8 • 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: JB r8 JNB r8 • 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: JZ r8 JNZ r8

  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: CJNE A, a8, r8 CJNE A, #d8, r8 CJNE Rx, #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: DJNZ Rx, r8 DJNZ a8, r8

  19. Instrukce skoků • ACALL – Absolute Call Syntaxe: ACALL a11 • LCALL – Long Call Syntaxe: LCALL a16 • RET – Return From Subroutine Syntaxe: RET • RETI – Return From Interrupt Syntaxe: RETI • AJMP – Absolute Jump Syntaxe: AJMP a11 • LJMP – Long Jump Syntaxe: LJMP a16 • SJMP – Short Jump Syntaxe: SJMP r8 • JMP – Jump to Address Syntaxe: JMP @A+DPTR

  20. Příklad: blikání LEDkou $MOD52 ; use 8052 predefined symbols LED EQU P3.4 ; P3.4 is red LED on eval board CSEG ; MAIN PROGRAM ORG 0000h ;============================================================================== BLINK: CPL LED ; flash (complement) the red LED CALL DELAY ; call software delay JMP BLINK ; repeat indefinately ;============================================================================== DELAY: ; delay 100ms MOV R7, #200 ; 200 * 500us = 100ms DLY1: MOV R6, #229 ; 229 * 2.17us = 500us DJNZ R6, $ ; sit here for 500us DJNZ R7, DLY1 ; repeat 200 times (100ms delay) RET ;============================================================================== END

More Related