8051 - Instrukce

Co budeme potřebovat


Abych pravdu řekl, na to abychom mohli vyvinout a odzkoušet program pro procesor, není nutné žádný procesor vlastnit. Ani programátor. Stačí nám nějaký vhodný editor pro psaní kódu – mě se osvědčil například PSPad, který umožňuje zvýrazněním syntaxe zpřehlednit kód a nějaký simulátor, kde si program odzkoušíme. Opět i já mám jeden vyzkoušený a to AS51. Pro překlad z assembleru budeme potřebovat nějaký kompilátor. Já používám CASS51 a může se pro některé programátory hodit převodník formátů z HEX do BIN

A samozřejmě také znalost samotného programovacího jazyka

Příkazy tohoto jazyka si rozdělíme do několika kategorií:



Instrukce přesunu

MOV přesune obsah zdrojového byte do cílového byte, bez ovlivnění zdroje
MOVC přesune byte z programové paměti do střadače (A)
MOVX přesun dat mezi střadačem a vnější pamětí dat
PUSH Instrukce přičte jedničku k ukazateli zásobníku a potom uloží obsah adresovaného místa do vrcholu zásobníku.
POP opak k PUSH
XCH vymění obsah střadače a registru (paměťového místa)
XCHD to samé ale pouze nižší půlbyte (místo v paměti musí být nepřímo adresováno)


Aritmetické instrukce

INC zvětší honotu registru o 1
DECC zmenší hodnotu registru o 1
ADD součet dvou registrů
ADDC součet dvou registrů s přenosem
DA dekadická korekce
SUBB odčítání
MUL násobení
DIV dělení


Logické instrukce

ANL logický součin
ORL logický součet
ORL exclusive OR
CLR smaže registr
CPL neguje registr


Instrukce posunu

RL rotace vlevo
RR rotace vpravo
RLC rotace vlevo s posunem
RRC rotace vpravo s posunem


Bitové instrukce

CLR nuluje bit
SETB nastaví bit
CPL neguje bit


Skokové instrukce

CALL volání rutiny
ACALL absolutní volání rutiny
LCALL dlouhé volání rutiny
RET návrat z rutiny
RETI návrat přerušení
JMP skok
AJMP absolutní skok
SJMP krátký skok
JZ je-li střadač nulový, skočí
JNZ není-li střadač nulový, skočí
JC je-li nastaven přenos, skočí
JB je-li nastaven bit, skočí
JNB není-li nastaven bit, skočí
JNC není-li nastaven přenos, skočí
CJNE nejsou-li si registry rovny, pak skočí
DJNZ zmenší argument o jednu a není li nulový, skočí


Ostatní

NOP prázdný příkaz - hodí se například při zpoždění

Komentovat článek

Jméno:  
Zpráva:

Komentáře k článku

Batex - 7.12.2007 10:59

Ahoj, diky za pekne clanky. Rad bych vyvojarum ze sve zkusenosti doporucil vyborne vyvojove prostredi od firmy Raisonance (http://www.raisonance.com/products/info/RIDE.php). Pro kody do 2kB je zdarma, umi simulovat ruzne typy procesoru (vcetne x051) i nekterych jejich periferii. Kod je mozno psat jak v mem oblibenem ASM tak i v C. Pripadne dotazy na batex@email.cz :)