Stránka 1 z 2

Instrukce movf

Napsal: 18 kvě 2009, 17:57
od markoni
Zdravím
Co dělám špatně když chci naplnit registr jiným registrem například

Kód: Vybrat vše

          data1 equ 15
          nin  equ 32
          movf data1,nin
         end

toto mi to píše
Warning[202] C:\PROGRAM FILES\MICROCHIP\MOVF.ASM 3 : Argument out of range. Least significant bits used.
díky

Napsal: 18 kvě 2009, 18:10
od Andrea
markoni píše:Zdravím
Co dělám špatně když chci naplnit registr jiným registrem například

Kód: Vybrat vše

          data1 equ 15
          nin  equ 32
          movf data1,nin
         end

toto mi to píše
Warning[202] C:\PROGRAM FILES\MICROCHIP\MOVF.ASM 3 : Argument out of range. Least significant bits used.
díky

Asi protože ten registr můžeš přesunout jen do W nebo zpátky do toho samého registru.

Napsal: 18 kvě 2009, 19:42
od markoni
Andrea píše:
markoni píše:Zdravím
Co dělám špatně když chci naplnit registr jiným registrem například

Kód: Vybrat vše

          data1 equ 15
          nin  equ 32
          movf data1,nin
         end

toto mi to píše
Warning[202] C:\PROGRAM FILES\MICROCHIP\MOVF.ASM 3 : Argument out of range. Least significant bits used.
díky

Asi protože ten registr můžeš přesunout jen do W nebo zpátky do toho samého registru.

tak jak to mám udělat když chci zkopírovat data z jednoho registru do druhého?? dík

Napsal: 18 kvě 2009, 20:50
od Stan3
data1 equ 15
nin equ 32
.
.
movf nin,W hodnotu z nin do W
movwf data1 hodnotu z W do data1
end

Napsal: 19 kvě 2009, 11:28
od Andrea
[OT] Co to je za procesor, když nemůže přesouvat data přímo mezi dvěma "univerzálními" registry, jsou to vůbec registry? Nechápu proč lidi používají PIC, vždyť je to taková hrůza. Vyjmenujte alespoň jednu výhodu oproti jakémukoliv jinému procesoru. [/OT]

Napsal: 19 kvě 2009, 11:40
od Atlan
no ja neviem len 35 instrukcii ? netreba ich vela vediet :D

Teoreticki ide aj :)

Movfw min........hodnotu z nin do W
movwf data1.....hodnotu z W do data1

usetris ciarku a cislo :)

Napsal: 19 kvě 2009, 16:57
od markoni
Andrea píše:[OT] Co to je za procesor, když nemůže přesouvat data přímo mezi dvěma "univerzálními" registry, jsou to vůbec registry? Nechápu proč lidi používají PIC, vždyť je to taková hrůza. Vyjmenujte alespoň jednu výhodu oproti jakémukoliv jinému procesoru. [/OT]


Andreo když jsem se začal zajímat o tuhle problematiku tak jsem narazil právě na tento tip PIC vůbec netušil že existuje ATMEL a podobně a ještě z důvodu že programátory na atmelky byli moc drahé můj první programátor na PIC který vyšel tuším Amáru nebo kte a postavil jsem si ho za pár korun sám i když už mám koupený za 1200 Kč SCPD2 který funguje s MPLAB IDE v7.41

Napsal: 19 kvě 2009, 17:18
od Andrea
Já dělám už 10 let s AVR a když jsem s nima začínala, tak na ně nebylo nic. Takže jsem si udělala programátor z 5-žilového kabelu na LPT a napsala jsem si na to soft. Používám ho do dneška. A dneska už je na netu spousta programátorů za pár korun. Prostě mě PIC nesedí, to jak má blbě dělenou paměť, nemá pořádné registry, je 10x-20x pomalejší než AVR atd.

Napsal: 19 kvě 2009, 17:28
od markoni
Andrea píše:Já dělám už 10 let s AVR a když jsem s nima začínala, tak na ně nebylo nic. Takže jsem si udělala programátor z 5-žilového kabelu na LPT a napsala jsem si na to soft. Používám ho do dneška. A dneska už je na netu spousta programátorů za pár korun. Prostě mě PIC nesedí, to jak má blbě dělenou paměť, nemá pořádné registry, je 10x-20x pomalejší než AVR atd.

ale já mám jen základní vzdělaní ty určitě něco máš vystudovaného myslím v tomto oboru ne?

Napsal: 19 kvě 2009, 17:35
od Andrea
markoni píše:ale já mám jen základní vzdělaní ty určitě něco máš vystudovaného myslím v tomto oboru ne?

Mám. Ale tím spíš bych doporučovala to AVR, protože je podle mě jednodušší. Když vidím, jaké problémy tu řešíš s PICem, tak si říkám zlaté AVR, tam takové hrůzy nejsou. Ale třeba to co mě přijde jako hrůza připadá někomu normální a co mě přijde jako normální, někomu jinému přijde jako postavené na hlavu. :wink:

Napsal: 19 kvě 2009, 17:42
od markoni
Andrea píše:
markoni píše:ale já mám jen základní vzdělaní ty určitě něco máš vystudovaného myslím v tomto oboru ne?

Mám. Ale tím spíš bych doporučovala to AVR, protože je podle mě jednodušší. Když vidím, jaké problémy tu řešíš s PICem, tak si říkám zlaté AVR, tam takové hrůzy nejsou. Ale třeba to co mě přijde jako hrůza připadá někomu normální a co mě přijde jako normální, někomu jinému přijde jako postavené na hlavu. :wink:

díval jsem se na tvoji stránku a to vysvětluje vše :oops:

Napsal: 21 kvě 2009, 08:44
od piitr
Já jsem si kdysi oblíbil PICy kvůli tomu, že tam jedna instrukce vždy trvá jeden takt. Takže se tam velice jednoduše dělá přesné časování po mikrosekundách. Víš poměrně přesně, kdy se daná hodnota projeví na výstupu. To je u těch 51 problematičtější, alespoň tedy dřív asi bylo, ale zase tolik je neznám.

Zcela ale souhlasím, že instrukční sada je poměrně nestandardní a pro začátečníka v assembleru bych PIC určitě nedoporučil. Nicméně, taky má něco do sebe, rozhodně bych neřekl, že je horší. Například nemusíš řešit, co mít v registrech a co v paměti, protože to je to samé.

Ovšem to přepínání stránek při adresaci větší paměti je otrava, to mi taky hodně vadí. Ona celá ta architektura je asi myšlená pro jednoduchý řadič a pak je moc hezká. Dělat z toho velký počítač je asi blbost. Výkonější jednočip bych hledal jinde. Možná tu 51, ale já ji moc rád nemám. Nevím proč. Víc se mi líbí 8080 (Z80 i v nějakých jendočipech snad bylo), 68000 (to se taky, myslím, dělá), 8086 (to se asi moc nedělá).

Napsal: 21 kvě 2009, 10:01
od Andrea
piitr píše:Já jsem si kdysi oblíbil PICy kvůli tomu, že tam jedna instrukce vždy trvá jeden takt.

A u kterých PICů trvá instrukce VŽDY jeden takt? PIC nemá podmíněné/nepodmíněné skoky a volání podprogramů?
80Cx96 má taky vnitřní paměť jako registry, ale dá se s nimi provádět jakákoliv operace (včetně přesunu jednoho do druhého, to beru u registrů jako samozřejmost), takže se to chová jako skutečné registry a ne jako ty PIC "skororegistry", kde nejde ani jeden přesunout do druhého.
Myslím, že název PICu to říká jasně, je to řadič periferií a ne standardní mikroprocesor (mikrokontrolér), je to asi jako 8042 versus 8052.

Napsal: 21 kvě 2009, 11:14
od piitr
Andrea píše:A u kterých PICů trvá instrukce VŽDY jeden takt? PIC nemá podmíněné/nepodmíněné skoky a volání podprogramů?
No, já vím, skoky jsou na dva cykly. To je detail, chtěl jsem říci, že se s tím dobře počítá. U těch CISCů člověk pořád hledá, co trvá 2 cykly, co 5, co 7, ve kterém cyklu se zapisuje a čte, atd. Některý instrukce se snad i trochu překrývají. Když mi jde o přesné časování, je to zdroj chyb.
Andrea píše:80Cx96 má taky vnitřní paměť jako registry, ale dá se s nimi provádět jakákoliv operace (včetně přesunu jednoho do druhého, to beru u registrů jako samozřejmost), takže se to chová jako skutečné registry a ne jako ty PIC "skororegistry", kde nejde ani jeden přesunout do druhého.
Pak ale musíš mít v instrukci dvě adresy a je delší. Je to kompromis, já bych to nekritizoval. Na tohle se dá docela dobře zvyknout. Navíc je to poměrně běžný přístup, že instrukce má jen jeden operand a druhý je vždy akumulátor, akorát tady je otočené pořadí operandů. Co je lepší, je otázka pro statistiku.
Andrea píše:Myslím, že název PICu to říká jasně, je to řadič periferií a ne standardní mikroprocesor (mikrokontrolér), je to asi jako 8042 versus 8052.
42 neznám, ale řekl bych, že v tomhle jsme zajedno.

Napsal: 21 kvě 2009, 11:57
od Andrea
piitr píše:Navíc je to poměrně běžný přístup, že instrukce má jen jeden operand a druhý je vždy akumulátor, akorát tady je otočené pořadí operandů

Neznám jiný RISC, který by měl akumulátor a neuměl přesouvat data mezi registry. Když už to má málo instrukcí, tak by to mělo mít hodně univerzálních registrů a ne jeden akumulátor. To je důvod proč je AVR 20x-50x rychlejší než x51 a 10x-20x rychlejší než PIC, protože nemusí kvůli každé aritmetické/logické operaci přesouvat data do akumulátoru a zase z něj přendávat jinam.

Když jsi psal, že se ti líbí 8086, tak u něj už to počítání taktů moc nefunguje, protože má prefetch frontu a doba pro vykonání instrukce se může lišit podle jejího zaplnění. Markantní je to u 80(1)88, protože přes 8-bit sběrnici nestíhá tu frontu doplňovat. U většiny osmibitů (včetně x51 a AVR) se naopak dá všechno jednoduše spočítat, protože tam jsou ty časy pevné.