Zaslal: út únor 27 2018, 8:34 Předmět: pettter´s noob faq...
Sorry že otravujem, ale fakt sa na assembler nemám koho spýtať. Všetci (teda žiaľ iba jeden) okolo mňa čo poznám a programujú tak sa vŕtajú v C...
Otázka: direktíva EQU napr.
Pettter EQU 0x00
znamená, že slovo Pettter nesie hodnotu nula (čo celkom vystihuje realitu), alebo že je za slovom Pettter obsah v bunke pameti s adresou 00h?
Alebo:
Jožo EQU 0xFF (sorry Jožo)
znamená že slovo Jožo reprezentuje číslo s hodnotou 255, alebo je to adresa, za ktorou je bunka v pameti a hodnota tej bunky je daná inicializáciou premenných...
Teda je direktíva konštanta s hodnotou, alebo odkaz na adresu? Som s toho akýsi vynulovaný...
Ď za pomoc.
Sa PICnem...[/u]
Naposledy upravil pettter dne pá březen 30 2018, 16:43, celkově upraveno 2 krát.
Reprezentuje jen to cislo. Pokud chces adresu, musis to pettter pouzit v instrukci tak jako adresu.
Nevim jaky MCU programujes, ale napr u x51 znamena
mov a,pettter nahrajes do akumulatoru obsah bunky s adresou pettter
mov a,#pettter nahrajes do akumulatoru hodnotu pettter
Založen: May 17, 2004 Příspěvky: 582 Bydliště: Kosice
Zaslal: út únor 27 2018, 9:17 Předmět:
EQU je to iste ako v C #define, preprocesor prejde kodom a nahradi v prvom prechode vsetky Petter cislom 0x00 a Jozo cislom 0xFF, a dalej ako mas popisane vyssie, zavisi ako sa toto cislo interpretuje v danom kontexte zavisi od daneho asembleru (moze to predstavovat konstatnu, adresu, offset..)
Založen: Sep 10,
2004 Příspěvky: 19487 Bydliště: Jičín, Český ráj
Zaslal: út únor 27 2018, 10:00 Předmět:
Assembler je přece jazyk symbolických adres. Jména Pettter i Jožo takové adresy symbolizují, nepotřebuji je tedy pro další sestavování programu znát, překladač si je podle jmen přiřadí sám. Ostatně ty konkrétně přiřazené adresy najdeš po skončení překladu na závěr ve výpisu tabulky adres.
Instrukcí EQU (nebo DB pro ASM80) jsem na příslušnou adresu vložil konkrétní počáteční hodnotu, kterou ale v průběhu programu můžu změnit tím, že příkazem MOV (nebo LD pro Z80 Assembler) do ní z registru procesoru přepíšu jeho momentální obsah. Obdobně z této adresy můžu poslední uloženou hodnotu přepsat do některého z registrů procesoru. _________________ Těm, kdo si nevybírají odpovědi na soukromé zprávy, už příště neodpovím. Tak.
Ja myslim ze to funguje vsude stejne.
Kdyz napises treba:
slepice equ 0x80h
pocet equ 20
instrukci
mov slepice,#pocet
nahrajes do bunky 80h cislo 20
muzes tak pojmenovat prakticky cokoliv, treba
vystup equ p1.21
pojmenujes pin p1.21 a muzes pak v programu pouzivat prehlednejsi nazev vystup misto cisla portu apod. Vyhodu to ma taky v tom, ze pokud chces zmenit port za jiny, prepises to jen v radku s equ a nemusis vyhledavat vsechny vyskyty cisla portu (cehokoliv jineho) v programu.
Naposledy upravil termit256 dne út únor 27 2018, 11:33, celkově upraveno 1 krát.
Založen: Mar 21, 2006 Příspěvky: 33850 Bydliště: Bratislava
Zaslal: út únor 27 2018, 11:28 Předmět:
EQU nie je instrukcia procesora ale definicia konstanty v jazyku. Najlepsie to napisal fero_b - vyskyt danej konstanty v programe sa nahradi jej hodnotou.
DB tiez nie je instrukcia, ale definicia bajtu v pamati.
Založen: Nov 20, 2012 Příspěvky: 1453 Bydliště: Praha
Zaslal: út únor 27 2018, 12:06 Předmět:
S tím souhlasím, ale reagoval jsem na Hillovo
citace:
Instrukcí EQU (nebo DB pro ASM80) jsem na příslušnou adresu vložil konkrétní počáteční hodnotu...
V těch nemnoha assemblerech co si pamatuji, bylo vždy EQU definice konstanty (jako v C #define, v pascalu const, ...) ale nikdy to nebylo vyhrazení paměti (na rozdíl od DB, DW, ...)
Založen: Sep 10,
2004 Příspěvky: 19487 Bydliště: Jičín, Český ráj
Zaslal: út únor 27 2018, 17:21 Předmět:
Ale v podstatě bylo, jen už si nepamatuju, jak to kdo tehdy pojmenovával: funkce DB nebo DW překladači prostě řekla "na tu adresu, která právě při překladu vyšla první volná, zapiš konstantu uvedenou jako argument a posuň čítač asres o jednu resp. o dvě nahoru". Adresa se zde neuváděla, ta při překladu vyšla automaticky jako první volná, když na DB nebo DW kompilátor narazil.
Protože musela mít jméno, zkompilovaný program pak pracoval s touto konkrétní adresou (nebo jejich párem). _________________ Těm, kdo si nevybírají odpovědi na soukromé zprávy, už příště neodpovím. Tak.
Pleteš se Hille, EQU nikdy není vyhrazení místa v paměti, je to zkratka equals, česky rovná se, v některých asemblerech se místo EQU dá použít =. Je to definice symbolické konstanty.
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: út únor 27 2018, 18:14 Předmět:
To mně připomíná krvavé bitky s mým zákazníkem, co se na starý kolena snaží programovat v JSA a nedokáže pochopit, že překladači v základním nastavení je srdečně jedno, jestli je to equ, data, dokonce i bit, pořád je to jen číslo. Konkrétní použití z toho dělá až instrukce, t.j. jestli je tam :
mov a,Petter
nebo
mov a,#Petter
a podobně (nakonec tento případ byl už několikrát zmíněn)
Pak dělá školácké chyby a všechno to svádí na mě a na překladač. A nejraději se topí v tom, že si v přerušení přepisuje registry, acc, C atd. Ale opět za to můžu já. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Založen: Sep 10,
2004 Příspěvky: 19487 Bydliště: Jičín, Český ráj
Zaslal: út únor 27 2018, 19:19 Předmět:
lesana87 napsal(a):
Pleteš se Hille, EQU nikdy není vyhrazení místa v paměti, je to zkratka equals, česky rovná se, v některých asemblerech se místo EQU dá použít =. Je to definice symbolické konstanty.
Díky, žes to upřesnila, fakt už to neumím popsat líp, však už jsem z programování v ASM80 za těch 25 let hodně zapomněl. Hlavně názvosloví, tehdy jsem se o tom neměl ani s kým bavit.
Samozřejmě s tebou souhlasím.
Ovšem nikdy jsem netvrdil, že se definicí DB vyhrazuje místo v pamětí. Jen tolik, že překladač během překladu uloží na první volnou adresu takto definované číslo a jeho adresu uloží do tabulky symbolických adres, s nimiž pracuje, takže ve zkompilovaném programu nic nebrání modifikaci obsahu této adresy. _________________ Těm, kdo si nevybírají odpovědi na soukromé zprávy, už příště neodpovím. Tak.
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: út únor 27 2018, 19:23 Předmět:
DB zapíše data do programové paměti (nikoliv do RAM), ale pokud před ně nedáš label, nikdy se k těm datům nedostaneš (i když i tady existuje výjimka).
Je to dobrý třeba na texty, předdefinované konstanty atd. Jen to obecně nelze přepsat... _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2, 3, 4, 5, 6Další
Strana 1 z 6
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.