Kann mir jemand mit erfahrung ein paar tips geben wie man am besten
vorgeht wenn man Assembler lernen will.
Und einpaar gute tutorial links wären sehr hilfeich.
Ich muss in 2 wochen mit 8051 etwas coden, das problem ist das die
meisten bücher zu umfangreich/komplex sind.
Vielen dank
> Ich muss in 2 wochen mit 8051 etwas coden, ...
Musst du in 2 Wochen mit der Programmierung beginnen und hast dann 2
Monate Zeit, die Sache fertigzustellen, wobei das zu erstellende
Programm lediglich eine LED zum Blinken bringen soll?
Dann fang jetzt an, ein 8051-Buch zu lesen. Wenn du bis in zwei Wochen
noch nicht alles kapiert hast, kannst du dir den Rest in den verblei-
benden 2 Monaten erarbeiten.
Oder muss in 2 Wochen das Programm schon fertig sein, und das Programm
ist eine Segway-Steuerung mit allem drum und dran?
Dann würde ich vielleicht doch eher den ersten Vorschlag von "..." in
Erwägung ziehen, dabei aber "Wochen" durch "Jahre" ersetzen ;-)
Spaß beiseite: Wenn dir ein paar Mikroprozessorbegriffe (wie Speicher-
adresse, Akkumulator oder Stack) bereits geläufig sind, kannst du mit
Hilfe eines ordentlichen 8051-Buchs (Tipps habe ich leider keine) bis in
zwei Wochen bestimmt schon kleinere Anwendungen (auch etwas mehr als die
blinkende LED) programmieren. Sooo schwierig ist die Assemblerprogram-
miererei auch wieder nicht.
Schwieriger wird es dann, wenn du in Assembler komplizierte Berechnungen
anstellen und dir die einzelnen Rechenroutinen (z.B. 16-Bit-Division)
aus einzelnen 8051-Befehlen zusammenstückeln musst, und wenn das Pro-
gramm so umfangreich ist, dass du dir über eine ordentlich Software-
struktur Gedanken machen musst, um den Überblick zu behalten.
Naja also die sache ist die ich studiere elektrotechnik wir haben eine
Vorlesungen die nennt sich Mikcomputertechnik gehts um Hardwarestruktur
und Assembler programierung mit 8051/52 und PIC und DSP.
Die Klausur ist erst in 2 Monaten oder so aber ich muss jetzt anfangen
zu lernen lese seit einpaar tagen exzessiv bücher werde daraus aber
nicht so wirklich schlau.
Die klausur ist recht umfangreich daa fängt mit einfachen Assembler
befehlen über state machines struktogramme,Hardwarespezifische
fragen,und schließlich
mega Aufgabe wie sie haben 4 sensoren 8 tasten usw usw schreiben sie
assembler code dazu...
Die Vorlesung besuche ich nicht weil unser Prof redet in Assembler man
versteht ihn einfach nicht.
MFG
> Die Vorlesung besuche ich nicht weil unser Prof redet in Assembler> man versteht ihn einfach nicht.
"Ein Teufelskreis ...", würde Herr Kaiser sagen ;-)
Hast du ein Stückchen Hardware oder Software, auf dem du das Gelernte
zappeln lassen kannst? Mir geht es jedenfalls so, dass Bücher zwar
wichtig sind, der Aha-Effekt aber erst durch das Ausprobieren kommt.
Da bin ich z.B. gerade über einen 8051-Simulator gestolpert:
http://www.edsim51.com/
Ich habe keine Ahnung, ob der etwas taugt, aber er sieht ganz lustig
aus, da insbesondere auch etwas virtuelle Peripherie (Schalter, LEDs,
Tastatur, Schieberegler, Motor usw.) vorhanden ist.
Unten auf der Webseite ist ein Link auf "A very good online tutorial":
http://www.mytutorialcafe.com/index%20Tutorial.htm
Auch hierzu habe ich keine Erfahrungswerte, aber vielleicht entspricht
es ja deinem Geschmack.
Auf 8052.com, einer der zentralen Anlaufstellen für 805[12]-Fans, gibt
es auch eins:
http://www.8052.com/tut8051
Vielleicht hilft's ...
Hi
Assembler lernen heißt begreifen, das ein µC nichts kann. Alles was
gemacht werden muß, ist in der Fuktionalität der Register zu sehen. z.
B. eine Zuweisung in Pascal A:=5, in Basic A=5,
in Assembler
LDI Reg_x, 5
STS A, Reg-x
Sicherlich gibt's auch Makros und komplexere Befehle. z.B. ist ein
RJMP Marke hinterlegt mit Adresse Marke holen, auf den Programmcounter
setzen und damit die Adresse anspringen, um den nächsten Befehl zu
holen. Dies ist jedoch in der Hardwarestruktur des µC hinterlegt, wenn
derentsprechende Hexcode in sein Befehlsregister geladden wird. nd da
sind wir auch schon beim Thema, Assembler ist eine Mnemonik-Sprache, die
ebenfalls erst übersetzt werden muß, damit ein Controller versteht, was
von ihm verlangt wird.
So, nun zum Lernen. Da gibt's verschidene Lesebefehle (LoaD)
sowie auch verschiedene Schreibbefehle (STore)
Die schaut man sich erst einmal an. Dann folgen die logischen und
mathematischen Operationen innerhalb der Register
Or, And, Add usw.
Nun wollen wir etwas auswerten und darauf reagieren, also Entscheidungen
treffen, sogenannte Vergleiche anstellen (ComPare)
Compare ist nichts anderes, als eine Subtraktion, die aber nicht
ausgeführt, sondern nur Flags beeinflußt. D.H. die vergleichenden
Register behalten ihre Werte, anders bei Subtraktion, wo ein Register
das Ergebnis führt, aber auch (Ergebnis-) Flags werden gesetzt.
Zur Reaktion auf die Ergebnisse gibt es Sprünge, die von den Flags
abhängen oder unbedingte, die den Programmverlauf steuern. Es gibt noch
ein paar prozessorabhängige Befehle z.B. für Timer, Counter, Ports und
spezielle Register. Die lernt man entsprechend bei Bedarf.
Fassen wir kurz zusammen, immer denken, wie ein µC funktioniert.
Wert in Register holen, beeinflussen und in Speicher zurückschreiben
oder Wert holen, vergleichen und je nach Flagzustand (größer,
größer-gleich, gleich, kleiner-gleich, kleiner) zu einer Marke springen.
Während eine Hochsprache den Programmierer von solch komplizierten
Schritten wie Adressierung, Hardwaresteuerung etc. durch komplexe
Befehle entlastet, muß in Assembler halt auf der Basis des Controllers
gedacht werden. Hat man das begriffen, ist das erlernen von Assembler
kein Problem mehr.
Gruß oldmax
Schau dir mal Das Mikrocontroller Kochbuch von A. Roth an.
Ist fürs Verständnis nicht schlecht wenns um x51 geht. Eventuell andere
Derivate aber die Prinzipien und der Befehlssatz sind gleich
ms schrieb:
> Schau dir mal Das Mikrocontroller Kochbuch von A. Roth an.
jepp, kann ich zu 100% bestätigen. Gutes Buch.
Dazu evtl noch das Applikations Kochbuch.
Beides bei Bücherbilliger erhältlich.
Also ich kann dir was zu meinen Anfängen schreiben.
Und zwar habe ich angefangen mit dem Programm von http://emu8086.com/
Assembler zu lernen. Leider ist diese Software nicht kostenlos aber hat
auch schon viele Beispiele und die Ausgabe, die man zu sehen bekommt ist
leicht durchschaubar.
Als Begleitlektüre diente mir dieses Buch:
Assembler: Maschinennahes Programmieren von Anfang an. Mit
Windows-Programmierung (Taschenbuch) von Reiner Backer.
Dann ging mir darum, erstmal mit Basisbefehlen zu experimentieren.
Also MOV, Sprungbefehle und das Ansprechen von Registern usw.
Im Grunde bekommt man schnell ein Gefühl dafür, sofern man sich damit
beschäftigt und nicht nur mit Copy & Paste bastelt.
Später habe ich mir dann für roundabout 35€ ein KISS-Lernsystem gelötet
und ausserhalb von Simulationssoftware meinen Code ausprobiert.
Soweit kam ich bislang ohne weitere Hilfe und nu habe ich vor eine Stufe
weiter zu gehen und weitere Gerätschaften mit dem µC anzusteuern.
ich hab assembler gelernt weil ich wissen wollte wie viren
funktionieren... das bekommt man am besten raus wenn man selber welche
schreibt. für die rechtsabteilung hier: es waren reine test-viren ohne
schadfunktion, dafür mit einem zähler der die verbreitung nach der
zehnten generation unterbrechen würde falls mal einer abhaut.