Hallo, ich habe hier eine Hex-Datei aus einem Eprom Baustein. Ich würde interessenhalber gerne wissen wie sowas aussieht. Wie muss ich mir das vorstellen. Einfach nur Speicheradressen mit Inhalt? den rechnen kann der eprom ja nicht. Habe mir das mit ReAVR mal in Assembler angesehen. Dort sieht es aber nach ziemlicher rechnerei aus.... REAVR zeigt mir z.b. sowas L003D: ldi r26,k32 fmuls r17,r18 L003F: rcall L05E2 ldi r25,k92 ldd r7,Z+o25 rjmp L0243 ; ----------- jump on last line andi r29,k45 st X+,r17 ; --------- this is skippy sbrs r27,b4 muls r16,r19 ; --------- last may be skipped ; pc=0x47(0x8E) Grüße
HI
>ich habe hier eine Hex-Datei aus einem Eprom Baustein.
Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein
Programm drin.
MfG Spess
>Wie muss ich mir das >vorstellen. Einfach nur Speicheradressen mit Inhalt? Ja. > den rechnen kann >der eprom ja nicht. Stimmt. >Habe mir das mit ReAVR mal in Assembler angesehen. >Dort sieht es aber nach ziemlicher rechnerei aus.... Blödsinn. Im Eprom steht ein Programm für irgendeinen Prozessor, aber nicht für einen AVR. >Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein >Programm drin. So ein Quatsch.
Die Logik dahinter war, das ich gedacht habe das ReAvr den Hex-code (also fast maschinencode) in assembler darstellt. War das komplett falsch?
Wenn dort Maschinencode für irgendetwas anderes als einen AVR drinsteht, oder Daten, dann ist das für einen AVR Disassembler absolut zufälliger Quatsch. Wenn Du weisst wo der EPROM her ist versuch es mit einem Disassembler für die entsprechende Prozessorfamilie. Sonst probier mal Disassembler für 8085, Z80 (diese beiden sind ähnlich aber nicht gleich im Maschinencode), 6502, 6800 und 8051. Wenn Du ein einzelnes normales EPROM aus einem 16/32-Bit-System hast: Vergiss es (68k mit DBS ausgenommen ;).
>Die Logik dahinter war, das ich gedacht habe das ReAvr den Hex-code >(also fast maschinencode) in assembler darstellt. >War das komplett falsch? Nö, es gibt nur ungefähr 10 Millionen verschiedene Prozessoren die jeweils eigene Assemblercodes haben.
VOn welchem/Für welchen Prozessor/Rechner ist der EPROM? Für den brauchst du dann einen Disassembler.
Nils S. schrieb: > Dann schick den Inhalt durch einen 8051 disassembler. Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das Vorhaben für den TO ziemlich sinnlos.
Ingolf O. schrieb: > Nils S. schrieb: >> Dann schick den Inhalt durch einen 8051 disassembler. > > Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von > enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das > Vorhaben für den TO ziemlich sinnlos. Kann sein, kann aber auch nicht sein. Kommt halt drauf an, was da tatsächlich im EPROM enthalten ist: Code oder Daten. Ein Disassembler-Lauf schadet nicht. Ob das sinnvollen Code ergibt erkennt ein etwas erfahrener Assembler Programmierer meistens sehr schnell. Oft hilft es auch, sich den Inhalt erst mal in Hex-Form anzusehen. Daten haben meistens irgendeine Form von wiederkehrenden Mustern.
> Dann schick den Inhalt durch einen 8051 disassembler.
NACHDEM er überprüft hat, welche Datenleitungen des EPROMs an welche
Datenleitungen des Prozessors gehen, und welche Adressleitungen des
EPROMs an welche Adressleitungen des Prozessors gehen, denn das muss
nicht 1:1 verbunden sein, und eventuell entsprechend durch
Bitpositionsvertauschung korrigiert hat.
Hey, also ich habe das mal durch den entsprechenden dissamsembler geschickt: Dabei kam ellenweise sowas hier raus: L0041: MOV R7,#01BH ; L0043: PUSH B LCALL L4C4D POP B SJMP L004E ; L004C: CPL 0EBH ; L004E: MOV 008H,#064H ; L0051: MOV 00AH,B RET ; MOV DPTR,#L6219 CLR 003H MOV A,#01CH MOVC A,@A+DPTR CLR C SUBB A,03BH JNC L0063 RET ; ; L0063: MOV C,0E9H MOV F0,C JC L006B SETB 0E9H Zwischendurch ein paar zeilen sowas hier: MOV R7,A MOV R7,A MOV R7,A MOV R7,A MOV R7,A MOV R7,A MOV R7,A MOV R7,A MOV R7,A Erschneint das irgendjemandem brauchbar?
Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb ADDC. kann das ein eprom?
Frank schrieb: > Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb > ADDC. kann das ein eprom? Auch wenn man den Inhalt ausdruckt, kann das Papier nicht rechnen. Das EPROM speichert doch nur das Programm bzw. Daten wie z.B. Diskette.
Wieso soll das EPROM das können? Der 8051 kanns! Ein EPROM kann nur dann addieren wenn du ne Lookup Table reinbrennst.
Ok, das bedeutet aber dann, das mir der Dissasembler nicht das anzeigt was wirklich im eeprom steht ..richtig?!
Frank schrieb: > Ok, das bedeutet aber dann, das mir der Dissasembler nicht das anzeigt > was wirklich im eeprom steht ..richtig?! Klar tut er das. Schau. Ein EPROM ist nur ein Speicher. Stell dir eine Maschine vor, die mit Nadeln Löcher in einem Papierstreifen abtastet. Für jede Kombination von Löchern oder Nicht-Löchern macht die Maschine etwas spezielles. Die Maschine ist die ausführende Einheit. Du schaust dir gerade den Papierstreifen an und versuchst aus dem Muster der Löcher schlau zu werden. Damit man diesen Löchern Sinn zuordnen kann, muss man wissen, wie die Maschine diese Löcher interpretiert. Die Maschine vom Nachbarn macht etwas ganz anderes mit genau demselben Papierstreifen mit genau diesen Löchern. Und dann gibt es noch spezielle Maschinen, die ebenfalls die Löcher abtasten, aber anstelle von Aktionen ordnen sie jedem Lochmuster einen textuellen Begriff zu und drucken ihn aus. Weil wir Menschen uns nun mal mit Text leichter tun als mit dem merken vno Löchern in Papierstreifen. Genau das macht der Disassembler. Ist diese rAusdruck nun etwas anderes als die Löcher auf dem Papierstreifen? Ja und nein. Natürlich ist es etwas anderes, denn dsa eine sind Löcher und das andere ist Text. Aber: Es existiert eine 1:1 Beziehung zwischen den beiden. Kennt man das eine, kennt man auch das andere. Aus den löchern kann man den Text erzeugen aus dem Text kann man die Löcher erzeugen. Also kann man mit Fug und Recht behaupten: Der Text SIND die Löcher, nur in einer anderen Form präsentiert. Wozu brauchst du das Ganze überhaupt?
nein, er interpretiert genau das was Du ihm gibst. Wenn das der EPROM-Inhalt ist, dann nimmt er den als Maschinencode. Dein Prozessor macht das selbe, er liest das EPROM aus und arbeitet die Befehle nacheinander ab. Wenn da im EPROM als Opcode ADD drinnen steht dann macht das nicht das EPROM, sondern der Prozessor der den Befehl ausliest. Stell Dir das EPROM wie n CD-Rohling vor, der spielt auch keine Musik von sich aus ab, sondern die brennst Du drauf und der CD-Spieler liest die CD wieder ab und erzeugt den Ton, der auf der CD gespeichert ist.
> Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb > ADDC. kann das ein eprom? Ein Disassembler muß nicht in jedem Fall RICHTIG das ausgeben, was mal einer programmiert hat. In einigen Fällen werden auch simple Daten als Befehl mißverstanden. Mit einem Debugger kann man einige Befehle schrittweise nachvollziehen wenn man ausreichend Durchblick hat. http://de.wikipedia.org/wiki/Debugger#Funktionen_eines_Debuggers Auf Deinen EPROM stehen nur Befehle und ein paar Daten, die dann in der CPU verarbeitet werden. Wozu das alles ist, weißt Du sicher eher, weil Du die Herkunft des EPROMS besser kennst als wir.
Ah, ok jetzt habe ich's verstanden. Dankean euch. Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt sind. Ich würde jetzt erwarten das zeilenweise adressen mit inhalt angegeben sind.
Frank schrieb: > Ah, ok jetzt habe ich's verstanden. Dankean euch. > Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt > sind. Das kann man nur erraten oder man findet es raus, in dem man das Programm in allen Einzelheiten analysiert und feststellt von wo aus dem EPROM Daten gelesen werden, wenn eine ausführende Einheit die Befehle im Programm ausführt und Daten von irgendwo aus dem EPROM liest. Wozu brauchst du das Ganze überhaupt? Es sieht nicht so aus, als ob du weißt was du da tust oder worauf du dich da einlässt.
ok, danke erstmal. wie gesagt ich wollte nur wissen was in soeinem eprom vorgeht, damit ich einen einzelnen baustein mit dem atmega ansteuern kann.
Frank schrieb: > ok, danke erstmal. > wie gesagt ich wollte nur wissen was in soeinem eprom vorgeht, das was in jedem Speicherbaustein vorgeht. * Der Prozessor legt eine Adresse an. * Der Prozessor legt noch ein paar Steuersignale an * grummel grummel grummel. * Der Speicherbaustein schaltet die entsprechenden Speicherzellen auf den Datenbus von wo sich der Prozessor das Datenbyte (oder welche Organisation der Speicherbaustein dann auch immer hat) abholt. That's it. Mehr geht in einem Speicherbaustein der Sorte EPROM nicht vor.
Sei nicht böse, aber Du gehst das ganz falsch an. Als ob Du versuchen würdest, Arzt zu werden, indem Du einfach mal beim Metzger eine Sau kaufst, sie ausschlachtest und in den Eingeweiden rumwühlst. Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen besser. Hol Dir doch lieber mal ein paar Bücher und/oder lies Dich in das Thema ein. Denn Deine Fragen lasse erahnen, dass Du ganz grundlegende Dinge noch nicht ganz verstanden hast (sonst wäre es Dir nämlich so was von egal, was in einem EEPROM so drin steht, um es von einem AVR ansteuern zu können (was immer Du damit meinst). Nichts für Ungut - ging mir genau so. Nur gab's damals mikrocontroller.net noch nicht. ;-) Simon
> Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie > sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen > besser. Der EPROM ist besser. Der hat ein Fenster. Da braucht Frank den Bauch nicht aufschneiden. :-) http://de.wikipedia.org/wiki/Erasable_Programmable_Read-Only_Memory
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.