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
- Aritmetické operace
- Logické operace
- Instrukce posunu
- Bitové oprace
- Skokové instrukce
- Ostatní
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
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 :)

