Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

pettter´s noob faq...
Jdi na stránku 1, 2, 3, 4, 5, 6  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: út únor 27 2018, 8:34    Předmět: pettter´s noob faq... Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
termit256



Založen: Dec 06, 2007
Příspěvky: 10335

PříspěvekZaslal: út únor 27 2018, 9:02    Předmět: Citovat

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

snad jsem to napsal srozumitelne.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
fero_b



Založen: May 17, 2004
Příspěvky: 582
Bydliště: Kosice

PříspěvekZaslal: út únor 27 2018, 9:17    Předmět: Citovat

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..)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: út únor 27 2018, 9:17    Předmět: Citovat

u AVR je to takhle:

definuje konstantu s hodnotou nula
.EQU Petter = 0

vyhradí jeden byte v RAM
Petter: .BYTE 1
pak třeba přesun do registru
LDI R28, LOW(Petter)

uloží konstantu do FLASH nebo EEPROM (nutno použít správný segment)
.DB Petter = 0
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19487
Bydliště: Jičín, Český ráj

PříspěvekZaslal: út únor 27 2018, 10:00    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: út únor 27 2018, 10:11    Předmět: Citovat

Bylo by dobré napsat, který konkrétní assembler řešíš. Evidentně je to pro různé µC jiné.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
termit256



Založen: Dec 06, 2007
Příspěvky: 10335

PříspěvekZaslal: út únor 27 2018, 11:27    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rnbw



Založen: Mar 21, 2006
Příspěvky: 33850
Bydliště: Bratislava

PříspěvekZaslal: út únor 27 2018, 11:28    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: út únor 27 2018, 12:06    Předmět: Citovat

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, ...)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19487
Bydliště: Jičín, Český ráj

PříspěvekZaslal: út únor 27 2018, 17:21    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: út únor 27 2018, 17:50    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: út únor 27 2018, 18:14    Předmět: Citovat

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[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Rako



Založen: Mar 29, 2014
Příspěvky: 40

PříspěvekZaslal: út únor 27 2018, 18:28    Předmět: Citovat

Tiež sa rehocem, čo za bludy tu inžineri vygrcli. Mládenci dnes vám to natrela ženská. (1:0) pre Lesanu, Lesana Number one
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19487
Bydliště: Jičín, Český ráj

PříspěvekZaslal: út únor 27 2018, 19:19    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: út únor 27 2018, 19:23    Předmět: Citovat

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[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3, 4, 5, 6  Další
Strana 1 z 6

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.20 sekund