Zum Inhalt springen

Assembler 8051-Familie


ensiso

Empfohlene Beiträge

Hallo :)

Ich bin neu hier und habe mich angemeldet, weil ich ein Problem mit Assembler habe.

Ich komme aus Baden-Württemberg und besuche derzeit ein berufliches Gymnasium mit Profilfach Informatik. Im April 2020 schreibe ich Abitur und werde im September 2020 eine Ausbildung als FISI beginnen.

Zu meinem Problem: im Unterricht haben wir die Programmierung in Assembler in Verbindung mit dem Mikrocontroller NXP 80C552 der 8051-Familie behandelt. In der gesamten Klasse sind gerade einmal 4 Personen, die den Stoff verstanden haben. Der Rest, einschließlich mir, versteht nur Bahnhof. Nun bin ich auf der Suche nach hilfreichen Links/ Büchern/ etc, die mir das Thema verständlich näherbringen können. Ich habe selbst schon gegoogelt, werde aber kaum fündig. Da das Thema abiturrelevant ist, muss ich den Stoff auf jeden Fall beherrschen. Unser Lehrer ist in diesem Fall auch keine große Hilfe, da er einfach nicht erklären kann.

Außerdem kann ich mir vorstellen, dass mir Assembler in meiner Ausbildung und weiteren beruflichen Laufbahn mit ziemlicher Sicherheit wieder begegnen wird.

Hoffe ihr könnt mir weiterhelfen :)

Bearbeitet von ensiso
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

na das Forum hier ist weniger ein Forum für Informatik- oder Elektrotechnik, obwohl wohl auch Leute hier vertreten sind, sondern mehr für Leute, die einen der vorgenannten Ausbildungsberufe machen wollen.

Ich denke nicht, dass Assembler Programmierung heute noch zu den Standard-Themen in der Ausbildung gehört. Auch Firmen die hardwarenah entwickeln und eigene Komponenten bauen, greifen eher auf C zu.

Ich habe im Jahr 1987 einen Atari ST gehabt, also die früheren Homecomputer, dort war Assembler Programmierung für bestimmte Bereiche noch ein Thema. Die Bücher dazu sind aber nahezu vom Markt komplett verschwunden. Man findet sie noch in Bibliotheken oder im Gebrauchtmarkt.

Hintergrund ist einfach der, dass bereits zu der Zeit, als ich an der FH war (1997) Roboter- und Mikrokontroller in C (z.B. interaktiv C - spezielle Version für gleichzeitige Signalverarbeitung) programmiert werden konnten. Die Signalverarbeitung war ausreichend schnell und die Mikrocontroller sind heute auch leistungsfähiger.

Ich vermute mal, dass man eher ein Buch zu Mikrocontroller heute finden wird, als zur Assembler Programmierung. Sogar für den Lego Mindstorms Roboter gibt es die Möglichkeit ein Programm in Java zu entwickeln nach einem Firmware Mod. Und das wird auf dem Brick immer noch schnell genug ausgeführt, um Mindcubing zu betreiben.

Da bis jetzt niemand geantwortet hat, denke ich mal, dass Du vermutlich eher in einem Mikrocontroller Forum Unterstützung finden würdest.

Ein Buch das mir zu Zeiten des Atari ST gut gefallen hat war von Peter Wollschläger "Das Atari ST Assembler Buch". Allerdings hatte der Atari einen Motorola 68000 Prozessor und das ist eine komplett andere Architektur. Aber für grundlegendes Verständnis ist es vielleicht hilfreich.

Dann habe ich noch ein verstaubtes Buch aus dem Addison Wesley Verlag hier stehen "Das Assembler-Buch". Die Bücher von Addison Wesley (den Verlag gibt es nicht mehr), fand ich immer gut geschrieben. Heute dürfte es keinen Markt für solche Bücher geben. Aber auf dem Gebrauchtmarkt dürfte man solche Bücher für relativ kleines Geld finden oder mit Glück noch in der örtlichen größeren Bibliothek.

Trotzdem Viel Erfolg !

Gruß

Thorsten

Bearbeitet von tkreutz2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

@ensiso ich versteh nicht so ganz was du nicht verstehst.

Wenn ich google komme ich direkt auf Seiten wie diese

https://www.ipd.kit.edu/mitarbeiter/buchmann/microcontroller/assembler.htm

http://www.ne555.at/2014/index.php/8051-mikrocontrollertechnik/301-programmentwicklung-auf-dem-pc-assemblerprogrammierung

Ist zwar grottiges Design, der erste Link aber man kann fürs bessere lesen den Text ja in ein Dokument kopieren.

Geht es dir um ein generelles Verständnis was Assembler ist oder speziell um eine Aufgabe in Assembler?

Grüße
Epi

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Epigenom vielen Dank für deine Links, sie haben etwas Licht ins Dunkel gebracht. Mir geht es um das allgemeine Verständnis von Assembler und wie man an Aufgabenstellungen herangeht. Eine Beispielaufgabe aus der Abiturprüfung von 2017/2018 habe ich angehängt.

Auch wenn jede Aufgabe individuell ist gibt es doch sicherlich so etwas wie einen "Fahrplan" zur Herangehensweise, der im Grunde genommen immer gleich ist und dann halt jeweils auf die Aufgabe angepasst werden muss.

Gruß

ensiso

20191201_171704[1].jpg

20191201_171603[1].jpg

20191201_171622[1].jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ensiso,

ich denke man muss unterscheiden zwischen

- Programmiersprache
- Programme um damit zu arbeiten, zu programmieren
- programmierende Inhalte

D.h. ich bekomme, wie in deinem Fall die Sprache Assembler vorgegeben.
Dafür benötige ich die Werkzeuge, die ihr hoffentlich von den Lehrkräften auch vorgegeben bekommt.

Dann sollte es möglich sein damit einfach das typische "Hello World" bzw. etwas vergleichbares, auszugeben.

Dann kommt der schwierige Teil, dass ich eine Aufgabe mit der Programmiersprache bewältigen muss.
Wenn dafür dann höhere Mathematik, Algorithmen usw nötig sind, hat das erstmal nix mit der gewälten Sprache und den Programmen zu tun.

Das gleiche gilt auch wenn ich grundsätzlich die Entwicklungsumgebung Beispiel Eclipse, zum Javaprogrammieren nicht bedienen kann.

So habe ich den "Hello World" Beispielcode vor mir, in feinstem Java und weiß nicht wohin damit.

Wie sieht die Sache nun bei dir und Assembler und der Prüfungsaufgabe aus?

Fragen:

Verstehst du die Assemblerbefehle und könntest du unabhängig davon, wie man daraus ein Programm macht, eine Befehlsabfolge schreiben, für eine einfache Aufgabe?

Wenn ja, dann wäre Assembler nicht dein Problem.

Hast du eine Programmierumgebung/Entwicklungsumgebung und kannst diese bedienen und verstehen?

Wenn ja, dann wäre das Programmerstellen nicht dein Problem.

Verstehst du wie man die gestellte Aufgabe von der Logik her löst und könntest du einen logischen Lösungsweg z.B. mathematisch beschreiben?

Wenn ja, wäre das Aufgabenverständnis nicht dein Problem.

Jetzt musst du sagen wo es hakt oder was nicht vorhanden ist.

Grüße
Epi

P.S: Ich hänge dir hier noch Links dran, die hoffentlich weiter Licht ins Dunkel bringen.
http://www.rathlev-home.de/mc/mctools.html#Intro
http://www.self8051.de/alle_befehle%2C13290.html

Ein Pdf zum Thema - schau mal ab Kapitel 3.6, auf Seite 13
http://avr-asm-download.de/beginner_de.pdf

Bearbeitet von Epigenom
Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin Epi,

eine Liste mit allen Assemblerbefehlen und was sie jeweils machen haben wir bekommen und dürfen wir auch benutzen. Das Befehlsverständnis ist also nicht das Problem. Die Programmierumgebung verstehe ich auch und bei den meisten Aufgaben kann ich auch nachvollziehen, was das Programm machen soll. An der Umsetzung hapert es dann. Ich habe keine Ahnung, wie ich die Befehle einsetzen soll, um die Aufgabe zu erfüllen und wann ich welchen Befehl verwenden muss.

Gruß

ensiso

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ensiso: Deine Beispielaufgabe aus der Abiturprüfung ist aber keine Assember-Aufgabe, sondern eine Aufgabe für eine SPS-Programmierung. Das ist ein Himmelweiter unterschied, da SPS-Programmierung rein gar nichts mit Assembler zu tun hat.

Bearbeitet von Whiz-zarD
Hab etwas verwechselt.
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Whiz-zarD SPS-Programmierung haben wir nie behandelt. Die Abituraufgaben beziehen sich immer auf Assembler und die Musterlösungen sind ebenfalls alle in Assembler. Man kann die Aufgaben auch in C lösen, aber das kann ich nicht und C ist auch nicht im Lehrplan enthalten.

20191201_210102.jpg

20191201_210003.jpg

Bearbeitet von ensiso
Alles klar.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bevor ich mir Assembler antue, würde ich es mit C probieren. C abstrahiert ja Assember auf eine verständlichere Art- und Weise und im beruflichen Alltag als Softwareentwickler wirst du auch später Assember nicht zu Gesicht bekommen. Es sei denn, du entwickelst Firmwares. Dann wäre Wissen über Assembler vom Vorteil aber sonst benötigst du später Assember überhaupt nicht mehr. Da ist Wissen über C schon wertvoller, da die Syntax vieler Sprachen sich an C orientiert haben.

Davon ab, wieso lernt man auf einer allgemeinbildenen Schule Assember, was dann noch Prüfungsrelevant ist? Das ist absoluter Bullshit.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Whiz-zarD

vor 10 Stunden schrieb Whiz-zarD:

wieso lernt man auf einer allgemeinbildenen Schule Assember, was dann noch Prüfungsrelevant ist? Das ist absoluter Bullshit.

stand doch schon da:

Am 29.11.2019 um 16:33 schrieb ensiso:

Ich komme aus Baden-Württemberg

?

 

Manchmal ist die Bildungshoheit der Länder ähm - potentialbehaftet?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo ensiso,

ich kann dir leider kein Beispiel liefern, da ich zuletzt mit dem C64 Assembler programmiert habe ?
Also ist schon Jahrzehnte her.

Aber in diesem Forum geht es auch um die von dir geschilderten Probleme:
https://www.mikrocontroller.net/topic/458672

Im Grunde muss man den verlangten Ablauf des Blinkens verstehen und dann den Ablauf schreiben.
Wie schreibe ich eine Pause von 150 ms bzw. welche Timer habe ich und welchen wähle ich.

Da kann ich natürlich nix dazu sagen, weil ich in der Sprache und der Logik nicht drin bin.
Nachdem dir Assembler und die Entwicklungsumgebung klar ist, würde ich mir einen suchen, der mir speziell an der gestellten Aufgabe hilft.

Wenn ich es richtig verstehe müsst ihr den Assemblercode auch nicht wirklich auf den Mikrocontroller NXP 80C552 draufspielen, sondern nur das Programm schreiben, dass dann dort die verlangte Funktion erfüllt, wenn der Schalter z.B. P1.0 umgelegt wird.

Grüße
Epi

Bearbeitet von Epigenom
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

hast Du denn Hardware und eine Entwicklungsgebung auch zu Hause zum Üben ? Ich würde empfehlen, sich vielleicht einen Pi + Arduino zu holen und ein paar Workshops durchzuarbeiten z.B.

https://michaelsarduino.blogspot.com/2015/07/arduino-in-assembler-programmieren.html

Da Assembler ja hardwarenahe Entwicklung bedeutet, hilft es vielleicht beim Verständnis, wenn man mit dem Microcontroller auch ein paar einfache Schaltungen versucht zu realisieren.

Es gibt auch Lernbausätze für Kids - die helfen vielleicht auch beim Grundverständnis und Experimentieren fürs Abi.

https://www.conrad.de/de/p/franzis-verlag-67084-mach-s-einfach-maker-kit-fuer-arduino-maker-kit-ab-14-jahre-2182210.html

Gruß

Thorsten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...