Stránka 2 z 6

Napsal: 27 úno 2018, 19:43
od Hill
Když mi nezbývá, než program hodit do RAMky a nemůžu zakázat zápis, tak můžu definici label DB # použít kdekoli v programu, ba můžu použít třeba ld label,A a přepsat obsahem akumulátoru tu původně nadefinovanou konstantu. Ostatně na Spectru takto se za chodu modifikujících programů existovaly spousty, většinou proto, aby se program vešel do paměti a ještě zbylo na grafiku a další data. Pochopitelně se nemodifikovaly jen konstanty, dokonce se měnily i instrukce v procedurách, takže celá procedura dělala něco jiného (i když se to používalo především kvůli grafice, která měla v RAMce pevné adresy a jednoznačnou organizaci danou hardware ULA).
Takže se omlouvám za nepřesnou terminologii někdejšího samouka, kterému to sice docela šlo, ale pak zjistil, že docházejí lidi na analog a hardware, tak by sice ještě leccos naprogramovat zvládl, ale nevidí důvod, proč by měl.

Napsal: 27 úno 2018, 20:16
od ZdenekHQ
Ano. Má být jasně napsáno, co je to za procesor. Něco jinýho je FLASH/ROM a něco jinýho RAM a ZX Spectrum.

P.S. Používám procesor, kde SW je nahraný v externí EEPROM a při zapnutí napájení se nabootuje do interní pseudo-ROM. Tam se taky dají dělat docela kouzla, protože jinak se ta EEPROM skutečně chová jako EEPROM.

Napsal: 27 úno 2018, 20:56
od lesana87
Nevím, proč se tu furt píše o koze (DB), když řeč byla o voze (EQU). EQU není DB, EQU nemá žádnou adresu, je to symbolická konstanta, DB definuje obsah paměťového místa (s nějakou adresou, je jedno ve které paměti). :roll:

Napsal: 27 úno 2018, 21:17
od ZdenekHQ
No protože většina vláken se rozvine trošku více do šířky. Až nás poctíš aktivní návštěvou častěji, než jednou za měsíc, tak si zvykneš.

Napsal: 27 úno 2018, 21:54
od lesana87
Klást DB na rovinu s EQU, jak to tu prezentuje Hill, není rozvinutí debaty do šířky, řekla bych spíše do hloubky, dosti temné.

Napsal: 27 úno 2018, 22:09
od pettter
Uff.. týýý jo!!!
Za prvé, všetkým Vám ďakujem!!!
Za druhé, čakal som tak dve tri odpovede, z toho jednu ktorá ma privedie k svetlu na konci tunela...
Nečakal som, že ten tunel ja taký ku_va dlhý, temný a kľukatý... a to som len pri EQU, no nazdar!!!

Asi ste si nevšimli v predmete témy slovo NOOB! Takže pre spresnenie, trávim mrazivé večery na PICkom 16f88 a cez MPLAB X IDE a jeho assembler sa ho snažím ovládnuť. Zatiaľ nehrozí... Väčšinou narazím na SW problém MPLAB X IDE, bo mi neIDE a neIDE, len sem tam.

Držím sa kurzu z PE ešte z rokov 2008-2013. Asi jediný česko/slovenský zrozumiteľný kurz o PICkách (my english so poor). Teda ja neviem o lepšom. On ten kurz vlastne beží dodnes, ale teraz je to o perifériách...

Je v tom kurze (31 lekcia PE 07/2010) o.i. kód kde je o.i. aj direktíva:
LEDMEM EQU 0x20
DEF_STEPS EQU 0x70
CBLOK 0x28
steps
ENDC
Ďalej ide direktíva:
MOVLW DEF_STEPS
MOVWF steps
vo watch okne vidím že sa do W a steps dostala hodnota rovná 0x70, takže je mi jasné, že DEF_STEPS = 70 hex = 0111 000 bin = 112 dec, čiže je to skrátka číselná hodnota, nie adresa...

Avšak ďalej v kóde je o.i. táto direktíva:
MOVLW LEDMEM
MOVWF FSR
Čiže prečítal som číslo 20 hex = 0010 0000 bin = 32 dec skryté za odkazom LEDMEM a strčil som ho do File Selct Registra, čím som mu povedal na akú adresu má ísť.

Aha ja som si práve odpovedal! EQU je číslo. Len číslo. Čo s ním urobím je moja vec. Ide len o to, že to číslo pomenujem napr. Jožo...
...sa tu plácam smiechom, že sa najprv musím spýtať sám saba aby som si sám sebe odpovedal a popri tom zapojím pol republiky do debaty... sorry dáma a páni..

Najlepšie mi pomohla poznámka od lesana87, ale aj ostatný... ešte raz Ď.

To mi pripomína vtip... "Cigán, koľko? A cigáň pohotovo odpovedá "20 pánko". "A čoho 20?" pýta sa pánko. "A čoho koľko?" pýta sa cigáň...

Napsal: 27 úno 2018, 22:32
od Celeron
lesana87 píše:Klást DB na rovinu s EQU, jak to tu prezentuje Hill, není rozvinutí debaty do šířky, řekla bych spíše do hloubky, dosti temné.
Jo tak nějak. Tady je třeba vzor jak se používalo obojí u Z80, program začínal od adresy 100h:

Kód: Vybrat vše

BDOS	EQU	5
REIPL	EQU	0
FCB	EQU	5CH		; SYSTEM FCB
DMA	EQU	80H		;DMA BUFFER 128 BYTE

;****************************************
.Z80
	ASEG
	ORG	100H

	jp	START			;GO, PRINT ID

MSG_ID::
	DB	'*** PRIJEM SOUBORU Z PC ***',CR,LF
	DB	'   pres DSM-1 nebo DSP-1',CR,LF,LF,'$'

START::
	ld	de,MSG_ID	;VEM ID MESSAGE
	call	PRINT_MESSAGE
EQU se používalo na definování hodnot pouze pro překladač. Hodnoty v DB a DW se ukládaly přímo na adresy v paměti.

Napsal: 28 úno 2018, 00:00
od ZdenekHQ
pettter píše:Asi ste si nevšimli v predmete témy slovo NOOB!
Ale všimli. Jen to přejmenování vlákna muselo chvíli počkat, kam se to posune... 8-)

Napsal: 28 úno 2018, 06:54
od AB1
Klást DB na rovinu s EQU, jak to tu prezentuje Hill, není rozvinutí debaty do šířky, řekla bych spíše do hloubky, dosti temné.
Myslím, že Hill měl na mysli to, jak se kdysi umisťovaly proměnné na pevnou adresu. Také jsem to používal před dvaceti lety.

.equ prom1 = 0x100 // proměnná prom1 bude na adrese 0x100
.equ prom2 = 0x101

ldi r16, 30
sts prom1, r16 // ulož hodnotu 30 do prom1

Napsal: 28 úno 2018, 09:54
od ZdenekHQ
Aha, já hlásím třetí případ podobného uvažování-programování (nikoliv mého), a od chlapa v podobném věku. Já na něj taky "koukal jak Lesana"... :lol:

Napsal: 28 úno 2018, 10:39
od Hill
Zdeňku, je to uvažování z doby, kdy jen u nás existovalo nějakých 70 mikropočítačů, které se mezi sebou navzájem nedomluvily, a programy mezi nimi byly přenositelné jen omezeně a za cenu přepsání od zdrojového kódu, přestože běhaly jen na nějakých čtyřech různých procesorech. Vyžadovalo to znalost architektury a u některých bezprostředně i hardware, jinak ani to přepsání od zdrojáku k ničemu nebylo.
Literatura sice nějaká existovala, ale když se spectrista zeptal sharpisty nebo sorďáka, moc si nepomohl, ačkoli všechny běhaly na Zilogu Z80, a už vůbec ne, jestli se ptal péemdéčkáře, íqéčkáře (Intel 8080), o ataristech a commodorákách (Motorola 6502/6510/68000) nemluvě. Přesto u toho někteří vydrželi hodně dlouho a povedlo se jim napsat hodně dost dobrých programů.
Ve škole nám ukazovali jen sálový počítač EC1025 skrz skleněnou stěnu, ale dovnitř nás nepustili, abychom na něco nesáhli... Jenže od té doby se i programátorské názvosloví poněkud změnilo.

Napsal: 28 úno 2018, 19:43
od pettter
Tak ďalšia otázka!
MCU PIC16F88, SW MPLAB X IDE, Assembler

Trochu sa strácam vo vzťahu registrov INDF a FSR. Rozumiem tomu dobre ak predpokladám, že keď zapíšem číslo do INDF, tak zmením obsah bunky pamete, na ktorú je nastavený FSR register?
Napr:

Kód: Vybrat vše

petter   EQU   0x20
jozo   EQU   .30

movlw   petter
movwf   FSR
nastavil som FSR na adresu 20h

Kód: Vybrat vše

movlw   jozo
movwf   INDF
zmenil som obsah bunky 20h na hodnotu 30dec? Či?

Napsal: 01 bře 2018, 19:46
od Atlan
Stiahni si cesky preklad pre pic 16f84. Zase taky rozdiel medzi nimi nieje.
Ako ovladat asm, fajn. Ale doporucujem preskocit rovno na Cko.

Preco pouzivat zbugovane labX nechapem ked existuje napr mplab8.84
Nic tak nepotesi ako ked sa po celodenom trapeni zisti chyba prekladaca alebo Mplabu.

Napsal: 01 bře 2018, 19:53
od MiloPS3
pettter : viz priloha (jedna se o neprime adresovani)

co te nuti pouzivat MPLAB X ? prejdi na starsi verzi ,je jednodussi a simulator funguje paradne

Napsal: 01 bře 2018, 21:07
od pettter
Ďakujem Vám.

MPLAB X IDE som stiahol z Microchip webu ako doporučený. Tak som myslel, že keď je doporučený, tak je OK. Ale nebyť toho SW, tak som isto oveľa ďalej. Lebo ak ma čosi nasiera tak je to mohutnosť a z toho plynúca komplikovanosť tohoto nástroja, pre mňa a moje začiatočnícke serepetičky tak zbytočná.
Už len úvedné nastavenia je niekedy vec na týždenné bádanie, kým vydolujem zo všemožných fór info, prečo mi čosi neIDE...
No na druhej strane už o ňom aspoň čosi máličko viem. Zase sa učiť nanovo... a MPLAB 8.x už nemá podporu, či?

Preto sa babrem s X
MiloPS3 píše:pettter : viz priloha (jedna se o neprime adresovani)...
Takže je to jasné, EQU je blbé číslo, nič viac. Ak hodnotu toho čísla použijem ako adresu, bude adresou. Ak ho použijem ako obsah peňaženky, bude tým...
A aj s tým INDF a FSR som už v obraze, som si robil pár pokusov...

ešte raz ďakujem.