Sida 1 av 1

Fråga om assembler!

Postat: 10 juli 2007, 22:30:14
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.

Postat: 10 juli 2007, 23:49:03
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.

Postat: 11 juli 2007, 07:25:54
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?

Postat: 11 juli 2007, 09:10:09
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!

Postat: 11 juli 2007, 11:03:22
av spufuz
ok. jag förstår.
Så var kan jag hitta bättre guidning gällande en mer korrekt programmering!?

Postat: 11 juli 2007, 12:12:05
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... :-)

Postat: 11 juli 2007, 12:15:49
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

Postat: 11 juli 2007, 12:33:33
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... :-)

Postat: 11 juli 2007, 13:47:20
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!