Hallo Gemeinde,
ist stehe aktuell vor dem Problem, für die Arbeit folgendes Programm aus
den 80er/90er Jahren, welches unter MS-DOS programmiert wurde, zu
assemblieren. Ich habe gute Vorkenntnisse in AVR Basic, c/c++, Ardunio C
und ein wenig Pic Assembler und andere anderer Technologien.
Nun komme ich nicht weiter und freue mich über Tipps und neue
denkanstöße.
Wer mir weiter helfen möchte, bitte ich, den Code welcher Stellenweise
mit ... zensiert ist, mal zu analysieren. Ist das evtl. eine besondere
Form Assembler? Programmiersprachen entwickeln sich ja schließlich auch
weiter.
Ich weiß, dass die Programme funktionieren, ich habe auch die Hexen.
Wenn ich die Programme z.B. in AVR-Studio oder MPLAB lege, melden alle
versuchten Programme (auch weitere) den ersten Fehler in Zeile
"FLAG_START BIT 7FH" . Er kennt alles in diesen und folgenden Zeilen
nicht.
"...: error: FLAG_START: Unknown instruction or macro"
usw.
Der Code ist für ein Eprom in einer Steuerung.
Für mich ist nun wichtig, diese Programme welche unter MS-DOS keine
Probleme darstellen unter win7 zum Laufen zu bekommen. Unter DOS wurde
mal mit ASM51 gearbeitet. Aber diese Entwicklungsumgebung steht nicht
mehr bzw. war auch nicht von mir.
Evtl. kann mir auch jemand ein Programm für win7 empfehlen welches nicht
wie die zwei genannten Herstellerbezogen ist, sondern reine Assembler
assemblierer sind.
Ich freue mich auf eure Nachrichten :)
1
;
2
;PROGRAM
3
;Bitadressen (Bereich 00H ... 7FH) im Speicher (20H ... 2FH)
Du möchtest Code für den MCS51 einfach nur auf modernen Maschinen
assemblieren und dabei wieder den MCS51 als Zielsystem?
Dazu kannst du z.B. MIDE51 benutzen, das auf Win32/64 läuft. M.W. gibt
es auch für diverse Linux Distributionen MCS51 Pakete.
MIDE51 enthält Editor mit Syntaxerkennung, ASEM51 von W.W. Heinz, 2
limitierte Simulatoren und den SDCC für 8051.
http://www.opcube.com/home.html
Gerade kürzlich benutzt für mein SPS Projekt mit Kloeckner-Moeller.
Felix B. schrieb:> welches nicht> wie die zwei genannten Herstellerbezogen ist, sondern reine Assembler> assemblierer sind.
Assembler ist eigentlich immer herstellerbezogen, weil die
Assemblersprachen für die unterschiedlichen Mikrocontroller der
verschiedenen Hersteller sich immer unterscheiden.
MCS51 Entwicklungsumgebung findest Du bei Keil.
Felix B. schrieb:> Für mich ist nun wichtig, diese Programme welche unter MS-DOS keine> Probleme darstellen unter win7 zum Laufen zu bekommen. Unter DOS wurde> mal mit ASM51 gearbeitet. Aber diese Entwicklungsumgebung steht nicht> mehr bzw. war auch nicht von mir.
Der Code sieht aus, als wäre er für einen Intel i8051 Microcontroller
(MCS-51). Der Name "ASM51" spricht auch dafür.
Übersetzen kannst Du den mit jedem modernen MCS-51 Crossassembler (TASM,
as, ...), wobei immer leichte Anpassungen nötig sein werden. as
akzeptiert fast immer die Original-Syntax, nur der CPU-Typ muss halt
richtig angegeben werden.
http://john.ccac.rwth-aachen.de:8000/as/
(es versteht sich von selbst, dass der erzeugte Hex-Code nur auf einem
8051 lauffähig ist, nicht auf einem PIC, ATmega oder einer PDP/8. So wie
ein chinesisches Buch auch dann nur für einen Chinesen verständlich ist,
wenn man es auf neuem Papier ausdruckt)
Hallo zusammen, genau diese Antworten habe ich gebraucht.
Die Hexen kommen auf einen ST M27C64A.
Mit dem MIDE51 kann ich super arbeiten soweit ich es grade getestet
habe, er übersetzt nach ein paar fehlenden Semikolon die alten
ASM-Dateien.
Es gibt nichts spannenderes wie solche Relikte von Disketten zu ziehen,
zu bearbeiten und aus dem Fenster den Flocken zu zuschauen.
Warum und wofür ich aber noch SDCC brauche habe ich nicht richtig
verstanden.
So wie es aussieht reicht der MIDE51!?
Ich wünsche schon mal unabhängig von dem was hier im Thread noch kommt
einen guten Wintereinbruch!
Grüße
Felix B. schrieb:> Warum und wofür ich aber noch SDCC brauche habe ich nicht richtig> verstanden.
Das ist ein C-Compiler, falls Du den 8051 in C programmieren möchtest.
Felix B. schrieb:> Wenn ich die Programme z.B. in AVR-Studio oder MPLAB lege, melden alle> versuchten Programme (auch weitere) den ersten Fehler
Assembler ist immer auf ein bestimmtes Target bezogen.
Ein AVR- oder PIC-Assembler kann nunmal keinen 8051-Code verstehen.
Alte Assembler kann man noch in DOSBox laufen lassen.
So ganz ist nicht klar, was Du machen willst.
Willst Du das alte Programm ändern und dann auf der alten Hardware
laufen lassen?
Oder willst Du es auf einen AVR o.ä. umsetzen?
Gruß, Stefan
Nein nein, Es bleibt alles so wie ist, die vorhandene Hardware und auch
Programme. Es geht nur darum, bei Ausfall der Steuerung neue Eproms zu
beschreiben und evtl. auch kleinere Änderungen vorzunehmen.
Ich habe an erster Stelle vermutlich für Verwirrung gesorgt, da ich
AVRStudio usw. nannte.
Ich dachte aufgrund der parallelen in der Assemblerprogrammierung müsste
es möglich sein, dass die eingebundenen assemblierer auch sowas „mit
können“. Jetzt bin ich schlauer und weiß das diese
Herstellerspezifischen Programme außen vor sind!
Felix B. schrieb:> Nein nein, Es bleibt alles so wie ist, die vorhandene Hardware und auch> Programme. Es geht nur darum, bei Ausfall der Steuerung neue Eproms zu> beschreiben und evtl. auch kleinere Änderungen vorzunehmen.
Du widersprichst dir in einem Absatz und vom ganzen Text sowieso.
Du schreibst, dass du die .hex Dateien hast und sie funktionieren. Auch
schreibst du, dass du nur EPROMs beschreiben willst. Dann auf einmal,
siehe deinen zitierten Absatz, dass du "kleine Änderungen" vornehmen
willst.
Genau dafür brauchst du ja auch die passende Software, für das andere
nur einen Brenner.
Uns ist es doch völlig egal was du mit dem Code machen willst, also
brauchst du hier doch nicht so rum zu eiern.
In erster Linie ist wichtig, dass ich die ASM. assemblieren kann.
Bearbeiten usw. kann ich in jedem Editor. Die zahlreichen Kommentare
waren soweit genau passend, also gehe ich von aus es war verständlich.
Ziel wurde erreicht. Was ich im nachhinein mache kann dir doch egal
sein?! Das hast du auch schon gesagt. Also verstehe ich dein rumgeier
nicht. Ich habe nur auf eine Nachfrage geantwortet.
Du kannst ja mal die alte hex datei mit der neuen vergleichen bzw.
vorher beide mit hex2bin ins binärformat umwandeln.
Erst dann weißt du ob das neue hex file überhaupt zu gebrauchen ist.
> Mit dem MIDE51 kann ich super arbeiten soweit ich es grade getestet> habe, er übersetzt nach ein paar fehlenden Semikolon die alten> ASM-Dateien.
Mit Semikola sagt man dem Assembler: alles was hinter mir in dieser
Zeile steht ist unwichtig.
Wenn da assembler Befehle standen wird das neu erzeugte hex file nicht
funktionieren bzw. nicht der gleiche code generiert.
Deshalb zeig mal wo du die Semikola gesetzt hast!