Instrukce procesoru pro skoky v programu (JMP, JZ, JNZ, JC, JNC)

Slides:



Advertisements
Podobné prezentace
Programování v C jazyku - SEMINÁŘ
Advertisements

Programování v asembleru - multiprocesory Jakub Yaghob.
Programování v asembleru - multiprocesory Jakub Yaghob.
Programování v Pascalu
Zásobník (LiFo) Fronta (FiFo)
Textový procesor Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je MGR. MILOŠ NYGRÝN.
Programovací jazyky Programovací jazyky jsou jazyky sloužící k tvorbě počítačových programů Dělení:  nižší  vyšší jazyky primitivní, jejichž instrukce.
SYSTÉM PŘERUŠENÍ U 68HC11.
Instrukce procesoru pro přesun (MOV) mov X, Y Instrukce kopíruje osmibitová data ze zdroje Y do cíle X mov A, R n mov A, DPH mov A, DPL mov A, SPH mov.
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Principy překladačů Mezikód Jakub Yaghob.
Klopný obvod JK.
Programování PA - 2.
Generování mezikódu Jakub Yaghob
Principy překladačů Architektury procesorů Jakub Yaghob.
Program Programátorský model procesoru Instrukční soubor
TEP Instrukční soubor č.9.
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:
Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Digitální technika Tematická oblast:Mikroprocesorová technika Téma:Atmel AVR – větvení programu Ročník:4.
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Tabulkový procesor (spreadsheet) program zpracovávající tabulku informací umožňuje zapisovat čísla a krátké texty do tabulek a pak tyto zapsané údaje zpracovat.
AVR Assembler Symboly Návěští
Výrok „Počítač je pouze tak inteligentní jako jeho uživatel.“ (Radek Lochman, dnes)
Migrace kódu a procesů Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Pokročilé architektury počítačů (PAP_02.ppt) Karel Vlček, katedra Informatiky, FEI VŠB Technická Univerzita Ostrava.
Popis mikroprocesoru David Rozlílek ME4B.
Adresy a adresování Střední odborná škola Otrokovice Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Miloš Zatloukal.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
P ROGRAMOVÁNÍ V JSA David Rozlílek. P ROGRAMOVÁNÍ V JSA Co to je zkratka JSA - ………….? Je tvořen z jednotlivých - s……. i…….? a k……… ? Jaký program používáme.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Procesor Renesas H8S/2633F.
Tabulkové procesory (MS Excel) Ing. Jan Roubíček.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Zpracoval :Ing. Petr Dlask, Ph.D. Pracoviště :Katedra Ekonomiky a řízení stavebnictví ČVUT v Praze Adresa :Thákurova 7, Praha 6, Dejvice Optimalizace.
Programování v JSA.
Roman Nasadil – ME4C PROGRAMOVÁNÍ V JSA. CO TO JE JSA?
VÍCE OBRÁZKŮ V JEDNOM GRAFICKÉM OKNĚ PŘÍKAZ SUBPLOT(a,b,c) a – POČET OBRÁZKŮ VODOROVNĚ b - POČET OBRÁZKŮ SVISLE c - URČENÍ POZICE KTERÝ OBRÁZEK V MATICI.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Sed O co jde Regulární výrazy Příkazy Adresování Příklady Michal Trs,
Instrukce procesoru.
Základy programování mikropočítačů První program v jazyce symbolických adres.
CZ.1.07/1.5.00/ Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/ Střední odborná škola elektrotechnická, Centrum odborné přípravy.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Interkomunikační adresní systém.
Orbis pictus 21. století Instrukční soubor 2
Instrukční soubor řady 8051 Assembler. Úvod Instrukční soubor má 111 instrukcí a to :  1bytových - 49  2bytových - 45  3bytových - 17 Soubor se rozděluje.
MIKROPROCESOROVÁ TECHNIKA
Základy programování mikropočítačů
Cvičení s mikrokontrolery 8051
Technologie – CNC programování
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Mikropočítač Soubor instrukcí
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
jednočipových počítačů II
Výukový materiál zpracován v rámci projektu
Operační systémy 1. Základní pojmy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Výukový materiál zpracován v rámci projektu
jednočipových počítačů I
Výukový materiál zpracován v rámci projektu
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Název školy Střední škola obchodně technická s. r. o. Číslo projektu
Transkript prezentace:

Instrukce procesoru pro skoky v programu (JMP, JZ, JNZ, JC, JNC) Instrukce zajistí, že jako další se bude provádět instrukce na uvedené adrese. Instrukce nepodmíněného skoku. jmp Adresa16 Místo uvedení číselné hodnoty adresy se doporučuje používat adresu symbolickou (návěští). Návěští je definováno uvedením před vybranou instrukcí v programu (návěští je od instrukce odděleno dvojtečkou). Návěští může být definováno v jednom programu nejvýše jednou. Př.: dynamický STOP mov A, #55H LOOP: jmp LOOP Př.: nekonečná smyčka mov A, #0 LOOP: inc A out 0AAH jmp LOOP Př.: dynamický STOP mov A, #55H jmp $

Instrukce procesoru pro skoky v programu (JMP, JZ, JNZ, JC, JNC) Instrukce podmíněných skoků: jz Adresa16 Je-li Z=1 chová se instrukce jako jmp, jinak jako nop jnz Adresa16 Je-li Z=0 chová se instrukce jako jmp, jinak jako nop jc Adresa16 Je-li C=1 chová se instrukce jako jmp, jinak jako nop jnc Adresa16 Je-li C=0 chová se instrukce jako jmp, jinak jako nop Instrukce porovná obsah akumulátoru A, s daty. Je-li A<>data8, provede se skok na adresu, jinak se pokračuje další instrukcí. Je-li A<data8, nastaví se jednobitový registr C na 1, jinak na 0. cjne A,#data8,Adresa16 cjne Rn,#data8,Adresa16 Stejně, ale místo s A pracuje s registrem Rn

Cykly řízené proměnnou Př.: … počet průchodů smyčkou ... mov R0, #100 LOOP: dec R0 mov A, #1 out 01H, A nop mov A, #0 mov A, R0 jnz LOOP R0  100 R0  R0-1 Registr R0 použit jako počítadlo průchodů opakovaně prováděná část programu R0<>0 ANO NE Instrukce nejprve dekrementuje obsah registru. Je-li výsledek různý od nuly provede se skok na adresu, jinak se pokračuje další instrukcí. djnz Rn,Adresa16

Cykly řízené proměnnou Př.: … počet průchodů smyčkou ... mov R0, #100 LOOP: mov A, #1 out 01H, A nop mov A, #0 djnz R0, LOOP TĚLO CYKLU Registr R0 použit jako počítadlo průchodů R0  R0-1 R0<>0 ANO NE Uvniř těla cyklu s instrukcí DJNZ neměnit hodnotu proměnné, která cyklus řídí !!! Neskákat do a z těla cyklu

Má se nulovat jen 17 bytů. Šlo by to i „ručně“: Příklad (paměť 1) Cyklem je to lepší Sestavte program, který, vynuluje oblast paměti mezi adresami AAh a BBh (včetně). Z mov R0,#0AAh mov A, #0 L1: mov @R0, A inc R0 cjne R0,#0BCh,L1 jmp $ Má se nulovat jen 17 bytů. Šlo by to i „ručně“: mov A, #0, mov 0AAh, A mov 0ABh, A mov 0ACh, A … mov 0BBh, A R0První adresa A0 Zapiš A do paměti na adresu, která je uložena v R0 R0  Další adresa Je v R0 číslo o 1 větší než poslední adresa? K

Vnořené cykly R0  100 R0  100 R1  10 TĚLO CYKLU TĚLO CYKLU R1  10 ANO ANO R1  R1-1 NE NE R1<>0 ANO NE R0  R0-1 R0<>0 ANO NE

Sestavte program, který zjistí, kolik bytů uložených v paměti Příklad (paměť 2) mov R7,#0 mov R0,#0AAh L1: mov A,@R0 rrc A jc L2 inc R7 L2: inc R0 cjne R0,#0BCh,L1 jmp $ Počítadlo  0 Sestavte program, který zjistí, kolik bytů uložených v paměti Mezi adresami AAh a BBh splňuje tu podmínku, že představuje ve standardním binárním váhovém kódování sudé číslo. Výsledek uložit do registrů procesoru. R0První adresa Do A přečti byte z adresy, která je uložena v R0 Je v A sudé číslo? NE ANO Počítadlo  Počítadlo + 1 Jak se pozná sudé číslo? R0  Další adresa Je v R0 číslo o 1 větší než poslední adresa? NE Jak veliký může být výsledek ? Vejde se mi do jednoho registru? Co když ne? ANO Výsledek je v R7 ! K

Sestavte program, který zjistí, kolik bytů uložených v paměti Příklad (paměť 3) mov R7,#0 mov DPTR,#0AAEEh L1: mov A,@DPTR rrc A jnc L2 inc R7 L2: inc DPTR mov A, DPH cjne A,#0ABh,L1 mov A, DPL cjne A,#0BCh,L1 jmp $ Počítadlo  0 Sestavte program, který zjistí, kolik bytů uložených v paměti Mezi adresami AAEEh a ABBBh splňuje tu podmínku, že představuje ve standardním binárním váhovém kódování liché číslo. Výsledek uložit do registrů procesoru. DPTRPrvní adresa Do A přečti byte z adresy, která je uložena v DPTR Je v A liché číslo? NE ANO Počítadlo  Počítadlo + 1 Pomocí osmibitového registru lze adresovat jen v intervalu adres 00H..FFH. Musí se zde použít DPTR. DPTR  Další adresa Je v DPTR číslo o 1 větší než poslední adresa? NE Vejde se výsledek do jednoho registru? ANO K

Sestavte program, který zjistí, kolik bytů uložených v paměti Příklad (paměť 4) mov R7,#0 mov R6,#0 mov DPTR,#0AAEEh L1: mov A,@DPTR rlc A jc L2 inc R7 mov A, R7 jnz L2 inc R6 L2: inc DPTR mov A, DPH cjne A,#0ABh,L1 mov A, DPL cjne A,#0BCh,L1 jmp $ Počítadlo  0 Sestavte program, který zjistí, kolik bytů uložených v paměti Mezi adresami AAAAh a BBBBh splňuje tu podmínku, že představuje ve standardním binárním váhovém kódování Číslo menší než 128. Výsledek uložit do registrů procesoru. DPTRPrvní adresa Do A přečti byte z adresy, která je uložena v DPTR A<128 NE ANO Počítadlo  Počítadlo + 1 Pomocí osmibitového registru lze adresovat jen v intervalu adres 00H..FFH. Musí se zde použít DPTR. DPTR  Další adresa Je v DPTR číslo o 1 větší než poslední adresa? NE Vejde se výsledek do jednoho registru? ANO K

mezi adresami 0A000h a 0AFFFh je záporných. mov R7,#0 mov R6,#0 mov DPTR,#0A000h L1: mov A,@DPTR inc DPTR mov A,@DPTR rlc A jnc L2 inc R7 mov A, R7 jnz L2 inc R6 L2: inc DPTR mov A, DPH cjne A,#0B0h,L1 mov A, DPL cjne A,#000h,L1 jmp $ Příklad (paměť 5) Z Sestavte program, který zjistí, kolik čísel ve formátu Integer uložených v paměti mezi adresami 0A000h a 0AFFFh je záporných. Počítadlo  0 DPTRPrvní adresa oblasti Do A přečti byte z adresy, která je uložena v DPTR DPTR  Další adresa Každé číslo je uloženo na dvou po sobě jdoucích bytech. Do A přečti byte z adresy, která je uložena v DPTR NE Nejvyšší bit A = 0 O znaménku čísla rozhoduje nejvyšší bit druhého bytu. ANO Je v DPTR číslo o 1 větší než poslední adresa? NE Počítadlo  Počítadlo + 1 DPTR  Další adresa ANO K

Cykly řízené podmínkou Př.: … čekání na stav … ... LOOP: in A,02H anl A, #01H add A, #0 jz LOOP A  port 02 A  A and 00000001B Mikro- počítač A=0 ANO NE P2.0 A  port 02 Př.: … jiné řešení … ... LOOP: in A,02H rrc A jnc LOOP Tlačítko Stisknuto  1 Rozepnuto  0 Rotace A,C doprava C=1 NE ANO

Jaká je FREKVENCE výstupního tónu? Příklady na cykly Mikro- počítač Z Př.: Pískání LOOP: mov A, #1 out 12, A mov R0, #0 djnz R0, $ mov A, #0 out 12, A mov R0, #0 djnz R0, $ jmp LOOP Vyslat 0 P12.0 Počkat Vyslat 1 Reproduktor 0 – 1 – 0 – 1 – 0 …. Počkat Jaká je FREKVENCE výstupního tónu?

Jaká je PERIODA blikání? Příklady na cykly Mikro- počítač Př.: Blikání LOOP: mov A, #0 out 12, A mov R1, #0 W1: mov R0, #0 djnz R0, $ djnz R1, W1 mov A, #1 out 12, A W2: mov R0, #0 djnz R0, $ djnz R1, W2 jmp LOOP Z Zhasni P12.0 Počkat Rozsviť Žárovka 0 – nesvítí 1 - svítí Počkat Jaká je PERIODA blikání?

pokud je stisknuto tlačítko. Příklad Z Př.: Blikat, kdyz tlačítko LOOP: mov A, #0 out 12, A mov R1, #0 W1: mov R0, #0 djnz R0, $ djnz R1, W1 TLAC: in A, 2 anl A, #01 add A, #0 jz TLAC mov A, #1 out 12, A W2: mov R0, #0 djnz R0, $ djnz R1, W2 jmp LOOP Sestavte program, který bliká žárovkou, pokud je stisknuto tlačítko. Připojení žárovky a tlačítka, viz obrázek. Zhasni Počkat Stisknuto? Mikro- počítač NE ANO Rozsviť P12.0 Počkat P2.0

Sestavte program, který v registru R7 udržuje počet stisků tlačítka. Příklad (tlačítko 1) Z Sestavte program, který v registru R7 udržuje počet stisků tlačítka. Počítadlo  0 mov R7, #0 B1: in A, 2 rrc A jnc B1 B2: in A, 2 jc B2 inc R7 jmp B1 Stisknuto? NE ANO ANO Stisknuto? Mikro- počítač NE Počítadlo  Počítadlo + 1 P2.0 Po 256 stiscích je registr vynulován a čítání probíhá znovu od nuly