Strojový kód, assembler Paměť Číselné soustavy Zápis zdrojového souboru - hlavička Pozvolna začneme s instrukcemi První program Překlad programu |
Obsah této stránky je zde pro ty z Vás, kteří se sem vracejí, nebo již něco znají. Protože vše souvisí se vším, a nelze začít od prostředka, začátečníkům vřele doporučuji obsah přeskočit a začít kupodivu od první řádky. Pokud vydržíte číst do půlky stránky, programovat se nejspíš naučíte. Pokud ne, vzdejte to raději hned a věnujte se něčemu jinému. |
vezměte pánev = jedna instrukce |
vezměte z lednice vejce = další instrukce |
zapněte sporák = další instrukce |
a tak dále. |
:10000000D290B2907BA77AAB7910D9FEDAFADBF600 :0200100080F07E :00000001FFNo uznejte, že to je nečitelné. Aby bylo programování pro člověka možné (a snadné) byl vytvořen jazyk symbolických adres (JSA) - vžilo se označení assembler. Assembler je nejnižší programovací jazyk. Je to soubor instrukcí toho kterého procesoru, které se postupně zapisují do zdrojového souboru. Tyto instrukce mnemotechnicky vyjadřují jednotlivé povely pro procesor, jsou to zkratky anglických pojmů (např. instrukce DJNZ - decrement and jump is zero - dekrementuj a skoč, pokud je nula).
rozklepni vejce |
ukliď skořápku |
zvedni ruku a uchop do ní vejce |
klepni s ním o hrnek |
šup s obsahem do hrnku |
otevři koš |
zahoď skořápku |
zavři koš |
Důležité: Cokoli ve zdrojovém kódu začíná středníkem, je bráno do konce řádku jako komentář. Pokud je před číslem znak # znamená to zápis čísla. Pokud tento znak nezapíšete, pracujete s paměťovou buňkou. Každý zdrojový kód musí být ukončen direktivou END. U překladače pro 8051 nezáleží na velikosti písmen (velká, malá), ale doporučuji si udělat nějaký systém, jak programy zapisovat, pokud pak přejdete na programování procesorů PIC, tam již na stylu zápisu záleží a to tak, že dost. |
Schéma zkušebního zapojení | Náhled na zapojení |
$MOD52 $TITLE(BYTE SIGNED MULTIPLY) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING org 0 LED equ P1.2 ;vystup LED ;------------------------------ setb LED zacatek:cpl LED mov R3,#167 cas_1: mov R2,#171 cas_2: mov R1,#16 cas_3: djnz R1,cas_3 djnz R2,cas_2 djnz R3,cas_1 sjmp zacatek end |
$MOD52 $TITLE(BYTE SIGNED MULTIPLY) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING org 0 LED equ P1.2 ;vystup LED setb LED zacatek:cpl LED mov R1,#164 opak: djnz R1,opak sjmp zacatek end |
Spuštění překladu | Ukončení překladu bez chyby |
Výsledek překladu | Listing překladu |
Chyba v překladu | Listing chybného překladu |
Tuto chybu jsem způsobil záměrně vynecháním písmena e v přiřazení equ. Tím vznikla první chyba - kdy překladači není jasné slovo qu. A protože touto chybou nemáme nikam přiřazeno uživatelské jméno LED, následují chyby, kdy se na toto jméno odkazujeme. (kuchařková analogie: pokud například v kuchařce nebude vysvětleno, že GOUDA je sýr, pak těžko pochopíme recept - vezměte 15dkg GOUDY.) | ||
Listing chybného překladu - spodní část souboru |
| Oba příklady - ASM i HEX soubory |
© DH servis 2002 - |