180 likes | 364 Views
Spôsoby adresovania v 8051. Úvod. Na to, aby CPU mohla vykonávať príkazy, potrebuje dáta. Dáta sú uložené v pamäti (RAM alebo ROM), odkiaľ ich môžeme vyvolať. Na získavanie dát alebo ich uloženie existujú rôzne metódy zvané spôsoby adresovania. Spôsoby adresovania.
E N D
Úvod • Na to, aby CPU mohla vykonávať príkazy, potrebuje dáta. • Dáta sú uložené v pamäti (RAM alebo ROM), odkiaľ ich môžeme vyvolať. • Na získavanie dát alebo ich uloženie existujú rôzne metódy zvané spôsoby adresovania
Spôsoby adresovania • Priame adresovanie s registrom • Adresovanie s priamym operandom • Priame adresovanie • Nepriame adresovanie • Manipulácia s bitmi
Inštrukcia MOV • Pre ukážku použitia adresovania použijeme inštrukciu MOV, ktorá slúži na presun dát a má nasledovnú syntax MOV cieľ, zdroj cieľ a zdroj sú miesta v pamäti alebo operandy
Priame adresovanie s registrom • V príkaze ako je tento sú adresované iba registre, nie pamäte. Príkazový kód označuje osobitný register alebo registre, s ktorými pracujeme • Napr: Presuň obsah R0 do A: MOV A, R0 R0A • Príkaz zaberá iba 1 pamäťovú bunku.
A MOV A,R0 27 R0 Priame adresovanie s registrom 27 CPU 27
Adresovanie s priamym operandom • V príkaze ako je tento sú prenášané priame operandy (čísla) do registrov alebo pamäťových buniek • Napr: Presuň obsah R0 do A: MOV A, #55 55A • Príkaz zaberá 2 pamäťové bunky pri 8-bitovom priamom operande alebo 3 pamäťové bunky pri 16-bitovom operande.
Adresovanie s priamym operandom • Priamy operand sa zapisuje so znakom mriežka (#) • Čísla sa dajú zapisovať ako desiatkové (55d), šestnástkové (5Ah), dvojkové (10111101b) alebo osmičkové (37o)
A MOV A,#55 Adresovanie s priamym operandom 55 CPU 55
Priame adresovanie • V priamom adresovaní musí byť označená pamäťová bunka obsahujúca dáta, keďže príkaz, ktorý bude vykonávaný, bude využívať dáta z tejto pamäťovej bunky • V 8051 je tento adresový mód využívaný iba v iRAM, čiže adresa označenej bunky je 1-byteové číslo
Priame adresovanie • Napr: Presuň obsah pamäťovej bunky č.55 do A: MOV A, 55 (55)A • Príkaz zaberá 2 byte-y. • Pozn: Niektoré pamäťové bunky v RAM sú špeciálne registre alebo porty • Adresovanie eRAM alebo ROM nie je možné vykonať priamym adresovaním!
A MOV A,55 56 D6 55 Priame adresovanie D6 CPU D6
Nepriame adresovanie • V nepriamom adresovaní nie sú označené ani dáta, ani ich adresa, ale je použitý zvláštny register DPTR (data pointer – ukazovateľ dát) • Pred jeho použitím je naplnený adresou, na ktorú má ukazovať. • V príkaze, ktorý ho používa, sa požadované dáta nachádzajú na adrese označenej týmto registrom.
Nepriame adresovanie • Napr: Presuň obsah pamäťovej bunky s adresou v DPTR do A: MOVX A, @DPTR ((DPTR))A • Príkaz MOVX slúži na prenos dát z externej pamäte
Nepriame adresovanie • Pri nepriamom adresovaní je možné miesto DPTR využiť aj registre R0 a R1 pre adresovanie RAM (veľkosť RAM je 256B, teda nám na adresovanie postačí 8 bitový register) • Napr: Presuň obsah pamäťovej bunky s adresou v R0 do A: MOV A, @R0 ( (R0) )A
A MOV A,@DPTR 56 D6 56 DPTR Nepriame adresovanie D6 CPU 56 D6
Manipulácia s bitmi • V 8051 sa vo FREE RAM nachádza oblasť s adresami pre každý bit. • Adresovanie týchto bitov sa vykonáva prostredníctvom špeciálnych príkazov. • Napr: Nastav bit na adrese 91 na „1“: SETB 91 1(91)
91 SETB 91 Manipulácia s bitmi 1 CPU 1