Forum: Mikrocontroller und Digitale Elektronik Wieviel kB für einfachen 8051 Assembler ?


von Frage 348795081542 (Gast)


Lesenswert?

Hallöchen !

Mein nächstes Bastelprojekt wird ein 8051-System sein auf dem ein 
einfacher 8051-Assembler laufen soll. Es soll alles Text-basiert sein 
und auf einem Bildschirm etwa 50x25 Zeichen ausgeben bzw. die Zeichen in 
ein Zeichenbuffer-RAM schreiben.

Mit wieviel kB Programmspeicher-Bedarf muss ich rechnen ? Reichen 32kB ?

von Georg G. (df2au)


Lesenswert?

Frage 348795081542 schrieb:
> Hallöchen !
>
> Mein nächstes Bastelprojekt wird ein 8051-System sein auf dem ein
> einfacher 8051-Assembler laufen soll. Es soll alles Text-basiert sein
> und auf einem Bildschirm etwa 50x25 Zeichen ausgeben bzw. die Zeichen in
> ein Zeichenbuffer-RAM schreiben.
>
> Mit wieviel kB Programmspeicher-Bedarf muss ich rechnen ? Reichen 32kB ?

Bestimmt sind 32k genug.

Ein Tipp: Auch, wenn es die Architektur beim MCS51 nahe legt, trenne 
nicht RAM und Eprom. Für die Fehlersuche ist es bequem, Code im RAM 
ausführen zu können. Und als Eprom würde ich einen Fash Typ nehmen. 
Notfalls die ungenutzten Adressleitungen fest auf GND oder Jumper 
GND/VCC.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Soll der 8051 denn den Bildschirm direkt bedienen oder überlässt du das 
einem Terminal mit serieller Schnittstelle? Im ersteren Fall benötigst 
du zumindest einen Rastercontroller wie den alten 6845 oder eine 
selbstgebaute Logik mit Framebuffer RAM a la Apple ][ oder Sinclair 
ZX80/81.
Im 2ten Fall ist evtl. ein Monitor Programm das erste, was du 
implementieren solltest. Ob da ein kleiner Assembler oder Disassembler 
mit bei ist, bleibt dir überlassen.
Ich habe einen 8052 Monitor mit Disassembler in 8k EPROM, aber das geht 
sicher auch noch etwas kleiner.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Zur Peilung: In grauer Vorzeit passte ein symbolischer Assembler für 
6502 in 4 KB 6502-Code, in Assembler geschrieben. Also der Assembler 
pur, nicht der Support für Tastatur, Bildschirm und Massenspeicher. Wird 
bei 8051 auch nicht schlimmer ausfallen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

A. K. schrieb:
> passte ein symbolischer Assembler für
> 6502 in 4 KB 6502-Code

Klingt doch gut. Intel hat ja auch ein komplettes Basic mit Gleitkomma 
in 8kB gepackt.

von (prx) A. K. (prx)


Lesenswert?

Matthias S. schrieb:
> Sinclair ZX80/81.

Wie gut kommen heutige LCDs eigentlich damit zurecht? Damaligen 
Röhrenfernsehern wars ziemlich egal, wenn das Signal mal weg und mal 
wieder da war. Sobald es wieder da war, kam auch sofort das Bild. LCDs 
habe ich im Verdacht, dass es ziemlich dauert, bis die dem Signal über 
den Weg trauen.

Wobei sich Sir Sinclairs bizarre Methode der Display-Ansteuerung nicht 
so leicht auf einen 8051 übertragen lässt. Die ist etwas zu sehr von 
speziellen Eigenschaften der Z80 abhängig.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

A. K. schrieb:
> Wie gut kommen heutige LCDs eigentlich damit zurecht?

Naja, BAS bleibt BAS und mehr konnte der Sinclair ja nicht. Mein 15" 
LCD, den ich über einen Konverter mit FBAS füttere, klappt jedenfalls. 
Allerdings liefert der Konverter immer ein Rastersignal, so das der 
Eingang auch mal komplett ausfallen kann, ohne das der LCD aus dem Tritt 
kommt.

von Jim M. (turboj)


Lesenswert?

Georg G. schrieb:
> Ein Tipp: Auch, wenn es die Architektur beim MCS51 nahe legt, trenne
> nicht RAM und Eprom.

Äh, hust, wir haben 2017 und es gibt die Silabs EFM8 als 8051ger mit 
integriertem Flash und on-chip-Debugging.

IIRC gibt es da auch ein nicht allzu teures STK mit LCD. Da ist dann 
gleich der Programmer mit drauf.

Frage 348795081542 schrieb:
> auf einem Bildschirm etwa 50x25 Zeichen ausgeben

Hmm, das LCD hat nur 128x128 Punkte. Aber Du kannst IIRC über USB einen 
seriellen Port benutzen.

Frage 348795081542 schrieb:
> Reichen 32kB ?

Normalerweise ja.

von Frage 348795081542 (Gast)


Lesenswert?

Also werden 32kB wohl reichen.

Gibt es eigentlich Bücher oder Anleitungen wie man einen Assembler 
schreiben kann ?

von Stefan F. (Gast)


Lesenswert?

> Gibt es eigentlich Bücher oder Anleitungen wie man
> einen Assembler schreiben kann ?

Was soll man da großartig erklären? Syntax lernen, verstehen und dann 
umsetzen. Das hatte ich als Teenager zum Spaß gemacht - für den 8051.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die wenigsten hier wollen einen Assembler, der auf dem 8051 Zielsystem 
selber läuft - zumal man sowieso einen auf dem PC braucht, um den 
Assembler auf dem 8051 zu schreiben :-P
Deswegen wird man da nicht viel finden. Es ist einfacher, am PC zu 
schreiben und zu assemblieren und dann ein HEX oder wasauchimmer aufs 
Zielsystem zu laden. Defür hatte ich mir damals den Monitor geschrieben. 
Der kann unter anderem sowas empfangen und dann ausführen.
Wenn du es dir richtig einschenken willst, schau dir den Quellcode zum 
o.a.  8051AH Basic an. Da wird eine komplette Programmiersprache 
implementiert.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Hauptsächlich ne Fleissarbeit. Das einzige, was man das Programm 
selbstständig machen muss: Adressen/Sprungziele korrekt berechnen.
Und sinnvolle Fehlermeldungen produzieren.
Einen vollständigen und fehlerfreien Assembler zu programmieren ist aber 
dennoch eine ziemliche Aufgabe - ich möchte das nicht machen, nichtmal 
auf dem PC als cross-Assembler.
Mach dir was kleines mit sehr beschränktem Befehlssatz, das reicht zum 
Lernen wie sowas funktioniert (das ist immer ein guter Ansatz), aber 
letztendlich reitest du da ein totes Pferd.

von (prx) A. K. (prx)


Lesenswert?

H.Joachim S. schrieb:
> Einen vollständigen und fehlerfreien Assembler zu programmieren ist aber
> dennoch eine ziemliche Aufgabe - ich möchte das nicht machen

Findest du? Mein erstes nicht triviales C Programm war ein 68000 
Assembler.

von (prx) A. K. (prx)


Lesenswert?

H.Joachim S. schrieb:
> letztendlich reitest du da ein totes Pferd.

Ist das ist bei Retro-Projekten nicht immer so?

von H.Joachim S. (crazyhorse)


Lesenswert?

Klar ist das so. Ist ja auch nicht schlimm, im Gegenteil. Aber wozu 
sollte man sich die Mühe machen, einen Assembler auf dem Zielsystem 
selbst laufen zu lassen? Dafür ist ein PC besser geeignet. Noch dazu 
gibts die Software schon, voll funktionsfähig.
Da kann man sich lieber Gedanken über die eigentlichen 
Anwendungsprogramme seines Retros machen. Wenn einem was vernünftiges 
einfällt...

von Lothar (Gast)


Lesenswert?

Frage 348795081542 schrieb:
> Gibt es eigentlich Bücher oder Anleitungen wie man einen Assembler
> schreiben kann?

Es gibt einen mit Source und Doku:

https://github.com/tmikov/a51

> ein 8051-System

Was für ein 8051 das Original gibt es doch nicht mehr? Und aktuelle 8051 
haben das alles an Board und es gibt Leute die alles mögliche in 
Assembler damit machen z.B. VGA

https://www.silabs.com/community/mcu/8-bit/forum.topic.30.10.html/random_latency_with-qfVn

von --- (Gast)


Lesenswert?

im ULTRAMON für den 8051 ist schon ein One-Pass-Assembler enthalten.
Platzbedarf (mit den übrigen Monitorfunktionen): 8 KB.

Den SMON für den 6502/6510/C64 mit nur 4 KB toppt wohl keiner.

von --- (Gast)


Lesenswert?

P.S.:
Ein One-Pass-Assembler kann vorwärtsgerichtete Adressrechnung
natürlich nicht oder nur eingeschränkt.
Es ist eher ein Hilfswerkzeug zum Patchen von Debugobjekten.

Auf die Bequemlichkeiten von Intels MCS51 und PLM51 wird man
daher trotzdem nicht verzichten wollen.
Gerüchteweise gibt es auch 8051-C-Compiler/Assembler von IAR, Keil
und Hitech...

Beitrag #5222941 wurde von einem Moderator gelöscht.
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.