Forum: PC-Programmierung Assembler lernen aber wie ?


von Jemaqmnd (Gast)


Lesenswert?

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

von ... (Gast)


Lesenswert?

Die Zeit ein paar Wochen zurückdrehen?

Ansonsten 24h am Tag lesen/verstehen/lernen.
Und wenn das nicht reicht, die Nacht noch dazu nehmen.

von yalu (Gast)


Lesenswert?

> 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.

von doofi (Gast)


Lesenswert?

> Ich muss in 2 wochen mit 8051 etwas coden, das problem ist das die
> meisten bücher zu umfangreich/komplex sind.

Nimm einen Compiler zu Hilfe  :-)

von Jemaqmnd (Gast)


Lesenswert?

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

von Jemaqmnd (Gast)


Lesenswert?

Ähm ja zu der aufgabe z.ß. kaffemaschine etc...

von yalu (Gast)


Lesenswert?

> 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 ...

von Jemaqmnd (Gast)


Lesenswert?

Ja in Tat ein Teufelskreis :-)

Ja vielen dank für den anfang sind die links sehr nützlich .

von oldmax (Gast)


Lesenswert?

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

von ms (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

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.

von Horst A. (s-m-a-r-t)


Lesenswert?

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.

von Ben _. (burning_silicon)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.