www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro BASIC

Basic je programovací jazyk vyvinutý v 80. letech pro 8 bitové počítače. Je programátorsko-uživatelsky orientován. Nabízí velké množství různých příkazů pracujících s disketovou jednotkou, tiskárnou či systémem. Ačkoliv je tento jazyk příkazově dobře vybaven, byl postupně vytlačen jinými jazyky jako Pascal, které pracují s strukturovanější formou zadávání příkazů, což umožňuje pohodlnější tvorbu delších programu. V současné době byl Basic opět v nové formě představen na softwarovém trhu.


Basic má jednu velkou výhodu v podobě struktury příkazů. Velmi se principiálně podobá assembleru. My si popíšeme klasickou formu Basicu, jeho specifika, architekturu ukládání programu, dat, proměnných a pod.


Programový řádek

Basic a assembler mají společnou věc sekvenčního provádění příkazů. U assembleru má každá instrukce svou adresu. U Basicu je příkaz specifikován číslem řádku, které ho zařadí dle velikosti čísla řádku na příslušné místo v programu. Program je vykonáván od nižšího čísla řádku po vyšší. Přirozeně je zde možnost odskoku. Odskok se zpravidla určoval číslem řádku. Na jednom program. řádku je možnost zadání více příkazů, ale nesmí se překročit určitý limit.

Ukázka programového řádku:

10 A=10:DIM B(100,100):GOSUB 1000


Proměnné

Basic dříve nerozlišoval typ proměnných, používal standardně jednu formu ukládání čísel, což u některých operacích způsobilo zpomalení programu. Některé verze basicu vyžadovaly deklaraci proměnné před jejím použitím. Deklarací se musela zadat počáteční hodnota. Pro písmenný kód proměnné bylo možno použít písmen a některých znaků, ale bylo zakázáno speciálních kombinací, které znamenaly příkazy, jako např. OR, ON a pod. Velikost délky názvu proměnné byla omezena na dva znaky. Později bylo možno vypsat proměnou celým jedním slovem (např. VELIKOST), ale pro interpret byla proměnná označena prvními dvěma písmeny (např. VE). Proměnná se ukládala do speciální části paměti věnovanou pro proměnné. Uložení se provádělo v použitém formátu s rezervou pro 11 indexovaných. Indexovaná proměnná (např. VE(a,b,c) ) je proměnná, která má tvořit pole dat. Ovšem při použití této proměnné basic vyžadoval deklaraci použité velikosti, aby mohl v paměti rezervovat místo. Standardní příkaz DIM se používá dodnes. Dle typu proměnné (čí Ukázky proměnných:

A=10 ;nastavení číselné proměnné na hodnotu 10

B$="Ahoj" ;nastavení řetězcové proměnné

C(1,5)=11 ;nastavení indexové proměnné


Výpis programu

Basic ukládá program do paměti tak, aby příkazy šly po sobě. Basic spustí program z paměti, kde je skutečně uložen. Nedochází zde k žádné kompilaci, ale interpret provádí rutiny dle kódu příkazu. Další, následující příkazový kód je buď dopočten z předchozího, nebo je určen za číslem programové řádky. Basic si totiž ukládá čísla řádků také do paměti a při listování jej generuje na začátek řádku obrazovky. Pro uložení čísla programové řádky používá basic dva bajty, takže čísla řádků mohou být od 0 do 65535. Některé verze číslo řádku 0 nepovolují. Basic si číslo řádku rozdělí známou metodou na dva bajty a při výpisu je opět složí. Výpis programu se dělá nejčastěji instrukcí LIST. Basic spustí rutinu, která listuje v paměti programu a hledá kódy příkazů. Ovšem místo kódů vypíše na obrazovku písmennou verzi příkazu dle formátu, který je také uložen v paměti.

Můžeme demonstrovat na příkladu :

* Máme příkaz BEEP, který generuje tón o určité frekvenci, kterou zadáme.

* Příkaz by vypadal i s řádkem asi takhle: 10 BEEP (65535)

* Počítač si uloží příkaz do paměti: 00 0a _4a ff ff

* První dva bajty (00, 0a) jsou číslo programového řádku (10)

* Pak může následovat jiný pomocný bajt ( _ ), který není zatím podstatný.

* Další bajt (4a) je informací interpretu o rutině a jméně příkazu (BEEP)

* Interpret také ví, že musí následovat parametr (frekvence) a vezme si hned následující dva bajty (ff, ff)

* Dále interpret otestuje další bajt, který oznámí, zda bude další příkaz či řádek


Kód příkazu

Kód příkazu je informací pro interpret o příslušné rutině. Pro paměť by bylo velmi neefektivní ukládat příkazy v jejích celých názvech (BEEP, CLEAR), proto si interpret ke každému příkazu stanovil číselný kód ve velikosti jednoho bajtu. Každý příkaz má několik míst v paměti, ve kterých je prezentován. Jednak je v COMMANDBAKu, kde je jeho jméno, formát a adresa rutiny. Vlastní rutina je v oblasti INSTRUKBANK, kde jsou uloženy i ostatní pomocné rutiny. Oběma těmto oblastem říkáme jádro Basicu.

Ukázka přiřazení kódu:

00 NEW

01 RUN

02 LIST

a tak dále


Formát příkazu

Každý příkaz je specifikován určitým formátem, který zajišťuje správné pochopení interpretu následně zadaných parametrů. Ve výpisu paměti nepřevedeného programu jsou bajty doslova namrskány na sobě. Interpret při výpisu programu či jeho provádění musí vědět, co který bajt znamená. Zjednodušeně lze říct, že si jednotlivé informace vypočítá. Jak má počítat, mu právě sdělí informace formátu příkazu. Nejjednodušší případ je u příkazu bez parametru (např. NEW). Zde interpret netestuje další bajt pro rutinu (NEW).


Vykonání příkazu

Po spuštění programu příkazem RUN jsou otestovány dva systémové bajty, které ukazují na adresu, kde jsou uložena data programu. Interpret vezme pořadový bajt, který musí být instrukční kód. Podle číselné formy této instrukce zjistí v COMMANDBANKu, o jaký formát příkazu se jedná, a inicializuje příslušné subrutiny. Jedná-li se o instrukci, za kterou musí následovat data, provede se test, např. na závorku. Každý příkaz má definovanou formu zápisu, od kterého je odvozeno další pokračování interpretu. Následná data za instrukcí jsou jako hodnoty uloženy do speciálních NUMERS pamětí. Po ukončení všech testovacích cyklů, třeba test na poslední závorku, se interpret obrátí opět do COMMANDBANKu, která mu předá startovací adresu v INSTRUKBANKu. Procesor provádí Basicový příkaz ve strojovém kódu, jehož obsah je zpravidla v části operační paměti ROM. Po vykonání příkazu se interpret vrátí na poslední místo v paměti, odkud odskočil, a provede test na dvojtečku nebo konce řádku. V případě dvojtečky následuje další inst

Abecední seznam všech článků Vyhledání pojmů ve článcích
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.