Fråga om assembler!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
spufuz
Inlägg: 704
Blev medlem: 15 september 2006, 00:00:39
Ort: Tanum

Fråga om assembler!

Inlägg av spufuz »

Ta en kik på den HÄR tutorialen. (hela koden längre ner på sidan)

Jag är nybörjare så min fråga är om det är assembler som författaren till guiden skriver.
Ser att den skiljer sig en del från t.ex. Sodjans LCD-exempel här på forumet som skall vara assembler.
Är det olika "dialekter" bara!?

Hursomhelst så förstår jag tutorialen till fullo, och har nu pillat ihop den första fungerande koden! :D
Blev lite nyfiken bara på vad för språk jag egentligen skriver.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det är assembler i båda fallen, dock gör den som har gjort tutorialen flera misstag.
Det största är att han kör utan att använda INC filerna. Han definierare själv
alla register, vilket naturligtsvis är fullständigt galet !

Men visst layout och så är snyggt... :-)

Jag kan för övrigt inte se att det skilljer speciellt mycket.
Förrutom att han kör i den gamla "absolute mode" och jag skrev min
kod i "relocatable mode", vilket man bör göra 2007.
spufuz
Inlägg: 704
Blev medlem: 15 september 2006, 00:00:39
Ort: Tanum

Inlägg av spufuz »

Ok! Intressant.
Mycket att tänka på.
Skulle behöva en felfri tutorial/guide för reloctable mode då!
Någon som vet var?
Det största är att han kör utan att använda INC filerna. Han definierare själv
alla register, vilket naturligtsvis är fullständigt galet !
Antar att du menar det här?

Kod: Markera allt

	   STATUS		equ		03h
		TRISA		 equ		85h
		PORTA		 equ		05h
		COUNT1		equ		08h
		COUNT2		equ		09h
Varför är det fullständigt galet när det verkar fungera?
Vad gör INC-filerna?
Användarvisningsbild
Earendil
EF Sponsor
Inlägg: 448
Blev medlem: 2 juni 2004, 09:06:43
Ort: Lund

Inlägg av Earendil »

Fördelen med att använda INC-filerna är (förutom att man slipper att skriva en massa equ själv) att ens kod blir mer lättporterad till andra besläktade PIC:ar. Man slipper hålla på och ändra adresser i sin egen kod utan behöver bara få en uppdaterad INC-fil.

Självklart är problemet inte särskilt stort om man bara använder 3-4 maskinregister och någon egen variabel som i det här fallet!
spufuz
Inlägg: 704
Blev medlem: 15 september 2006, 00:00:39
Ort: Tanum

Inlägg av spufuz »

ok. jag förstår.
Så var kan jag hitta bättre guidning gällande en mer korrekt programmering!?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Varför är det fullständigt galet när det verkar fungera?

Köra på vänster sida av E4'an mitt i natten kan också "verka fungera",
i alla fall ett tag. Det är lika fullt fullkomligt galet...

> Vad gör INC-filerna?

Samma sak (och lite till). Så varför göra det själv ?
Men, varför inte kolla i en INC-fil så förstår du varför man inte
ska sitta och göra om jobbet själv.

Dessutom innehåller INC filen viktig information på de sista raderna
om CONFIG inställningarna. Denna info måste man i princip alltid
kolla, speciellt när man skriver en kod till en ny (för en själv) processor.

> Så var kan jag hitta bättre guidning gällande en mer korrekt programmering!?

Korrekt och korrekt... :-)

Det finns alltid personliga åsikter om hur en "korrekt" kod ska se ut.
Men det finns dock vissa grunder som jag anser alltid ingår i en
korrekt programmering. Där ingår t.ex att använda INC filerna
istället för att göra som den där tutorialen gör.

Sedan tycker jag personligen att "relocatable mode" ska ingå i
begreppet "korrekt kod". Det gör det hela mer lätthanterligt när
koden växer eller när man vill byta mål-processor.

Jag vill inte gå så långt som att säga att all *min* kod är "korrekt",
men jag strävar i alla fall åt det hållet... :-)
BoF
EF Sponsor
Inlägg: 222
Blev medlem: 7 oktober 2006, 16:43:37

Inlägg av BoF »

Här är en sida som jag tycker är ok!
http://www.amqrp.org/elmer160/lessons/index.html
Korrekt programmering har nog lika många svar som det finns programmerare!

Men så länge ditt program fungerar och du förstår vad du gjorde ett halvår senare så var ju det en korrekt programmering för dig.

Edit:
En annan viktig sak med INC filerna är att namnen på register adressen är samma som i databladen för PIC’en
Senast redigerad av BoF 11 juli 2007, 12:34:17, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Elmer är nog den bästa tutorialen som är tillgänglig just nu.
*Även* om den bygger på 16F84A... :-)

Speciellt dessa innehåller intressanta delar :

Lesson #16: http://www.amqrp.org/elmer160/lessons/E160L16.pdf
Appendix "A": http://www.amqrp.org/elmer160/lessons/e160aa.pdf
Appendix "B": http://www.amqrp.org/elmer160/lessons/E160AB.pdf

Men även :
Lesson #1: http://www.amqrp.org/elmer160/lessons/E160L01.pdf

Och läser man det med vetskap om att 16F84A är en processor som
man sannolikt *aldrig* kommer att använda, så är det OK... :-)

> Men så länge ditt program fungerar och du förstår vad du gjorde...

Det är ofta lika viktigt att *någon annan* förstår vad du gjorde... :-)
spufuz
Inlägg: 704
Blev medlem: 15 september 2006, 00:00:39
Ort: Tanum

Inlägg av spufuz »

Då ska jag kolla in den tutorialen.
Tänker inte försöka argumentera emot dina tips och åsikter Sodjan, tack för hjälpen!
Skriv svar