Q
Guest
Wed Nov 10, 2004 10:02 am
1.
co zrobic, zeby assembler uzywany w cvavr
widzial stale umieszczone w plikach "megaxxx.h"?
assembler (w cvavr) wywala mi blad jak dam:
#asm("out SPMCR, r27");
i musze uzywac takiej postaci:
#asm("out 0x37, r27");
2.
jak w ogole dolaczyc do projektu
pliki napisane w "czystym" assemblerze?
3.
w roznych przykladach widze, ze
czesto uzywane sa zamiennie instrukcje "sts" i "out";
jaka jest podstawowa roznica miedzy tymi instrukcjami?
Adam Dybkowski
Guest
Thu Nov 11, 2004 10:18 pm
Q wrote:
Quote:
w roznych przykladach widze, ze
czesto uzywane sa zamiennie instrukcje "sts" i "out";
jaka jest podstawowa roznica miedzy tymi instrukcjami?
Instrukcja sts zapisuje zawartosc rejestru do dowolnej komorki pamieci
(w jej kodzie podaje sie 16-bitowy adres komorki w RAMie), natomiast
instrukcja out mozna zapisywac tylko dolna przestrzen adresowa rejestrow
wejscia-wyjscia (czy jak tam zwal) czyli obszar adresow I/O 0..63.
Instrukcja sts trwa 2 cykle procesora i jest 2-slowowa (zajmuje 4 oktety
w pamieci programu) bo w drugim slowie zawiera 16-bitowy adres.
Instrukcja out trwa 1 cykl i jest 1-slowowa (adres 6-bitowy zawarty w
kodzie instrukcji) i dlatego lepiej ja uzywac kiedy mozna, bo zajmuje
mniej miejsca w pamieci i jest szybsza. I na koniec: najprostsze AVRki
nie maja instrukcji sts, a w tych bardziej rozbudowanych jest tyle
rejestrow, ze nie mieszcza sie w obszarze dzialania instrukcji out i
trzeba uzywac sts.
Mam nadzieje, ze nie sciemnilem zbyt mocno. :)
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.