Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Sonstiges » Atmega Assembler <-> Hexcode » Themenansicht

Autor Thread - Seiten: -1-
000
20.05.2019, 20:43 Uhr
Haupti65

Avatar von Haupti65

Moin zusammen,
ich habe mir mal den Assemblercode von der Video-Karte von Grant Searle
reingezogen.
Jetzt möchte ich ein Byte im Hexcode ändern, weil das einfacher ist als das ganze Programm neu zu Assemblieren.
Aber das Byte wird nicht im Hexcode gefunden???
Nicht an der Adresse wo es sein soll, noch sonst irgendwo.
Muss ja mit dem folgendem Byte suchen.
Verstehe ich nicht!
Hat einer ne Idee?
Gruss Olaf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
20.05.2019, 21:29 Uhr
holm

Avatar von holm

..Glaskugel ist gerade zur Reparatur..sorry.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
20.05.2019, 21:57 Uhr
Haupti65

Avatar von Haupti65

OK. Muss mich besser ausdrücken:
Die Codefolge wie sie im Disassembler steht und die ich ändern möchte,
taucht nicht im Hexdump des assemblierten Programms auf!
Warum???
Gruss Olaf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
20.05.2019, 22:40 Uhr
holm

Avatar von holm

Was ist ein Hexdump? Normalerweise ist das zu brennende "Produkt" des Assembler und Link Vorgangs ein "Intel Hex File" das seinerseits ein in Records zerlegtes Binärfile ist, dabei wird noch jedes ursprüngliche Byte in 2 Hälften zerlegt und eine Prüfsumme anch üblicherweise 16 Zeichen eingefügt.

Du kannst also ohne Erfahrung wie das codiert wird da sByte gar nicht wieder finden, geschweige denn ist es einfacher in einem IHEX File ein Byte zu ändern anstatt die Quelle neu zu assemblieren, weil Du eben die Prüfsumme neu berechnen mußt.

Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
21.05.2019, 08:24 Uhr
wpwsaw

Avatar von wpwsaw

wie Holm schrieb,

wahrscheinlich erzeugt dein Assembler Intel Hex Code. den musst du umwandeln um ihn mit dem Byte vergleichen zu können. Ich wandel es immer mit meinem EPROM-Brennerprogramm um.

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
21.05.2019, 21:00 Uhr
Haupti65

Avatar von Haupti65

Moin Leute,
danke für die Antworten.
Also ich nehme Atmel Studio 4, das .asm File mit den .inc Dateien, starte den Debugger vom Atmel Studio und lasse mir das ganze im Studio Disassemblieren.
Da steht dann auf 0x34 der CLI (Sperre Interrupt) mit dem Opcode 94 F8.
So das ganze Assemblieren und schon habe ich eine Hex-Datei.
Die schaue ich mir in meinem Brennprogramm (MiniProgrammer) vom
China Brenner als Binär oder IntelHex an und finde in keinem der beiden Varianten die 94 F8 wieder...
Ist das etwa nicht wie beim Z80, dass dann da auch die Opcode in Hex stehen?
Der Atmega liest doch das was da steht und das müssen ja dann die Codes sein, die er versteht...
Oder?
Danke und Gruss Olaf!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
21.05.2019, 21:17 Uhr
schlaub_01



Hallo Olaf,

ich weiß zwar nicht, was Du gemacht hast, aber ich habe schnell mal ein minimales Programm erstellt, was Dein CLI Kommando drin hat. Das ist aber im Hex File wunderbar zu sehen. Vielleicht wird was bei Dir optimiert und das CLI fällt raus (vielleicht werden die Interrupts nie aktiviert?).

Grüße,
Sven.


Dieser Beitrag wurde am 21.05.2019 um 21:24 Uhr von schlaub_01 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
21.05.2019, 21:42 Uhr
wpwsaw

Avatar von wpwsaw

also wenn ich CLI in der IntelHex Datei habe und sie mit meinem Miniprogrammer als Intel Hex Code lade steht als Binärcode wieder 94 F8 im Display vom Miniprogrammer.

wpw

P.S. übrigens taucht der Binärcod im IntelHex file als ASCII Code auf
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2

Dieser Beitrag wurde am 21.05.2019 um 21:47 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
21.05.2019, 23:01 Uhr
Bert



Hallo Olaf!


Zitat:
Haupti65 schrieb
ich habe mir mal den Assemblercode von der Video-Karte von Grant Searle
reingezogen.


Darf ich raten?
Ist das die Karte, die Du meinst?!:
http://searle.hostei.com/grant/MonitorKeyboard/index.html

Oder doch eine andere?

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
22.05.2019, 08:03 Uhr
Haupti65

Avatar von Haupti65

Moin Leute,
Ja Bert das ist die Karte.
Aber nur der Videoteil.
Hab es gestern nochmal assembliert (AVR-Studio 4) und als Intel-Hex angesehen.
Finde den Code für CLI immer noch nicht.
Grant schreibt, er hat das mit dem Studio7 gemacht.
Dürfte aber kein Unterschie sein oder?
Komisch dass er im Quelltext nicht die .inc für den Atmega328 angegeben hat.
Habe ich eingefügt, da sonst nur Fehler beim Assemblieren kommen.
Gruss Olaf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
22.05.2019, 09:02 Uhr
holm

Avatar von holm


Zitat:
wpwsaw schrieb
also wenn ich CLI in der IntelHex Datei habe und sie mit meinem Miniprogrammer als Intel Hex Code lade steht als Binärcode wieder 94 F8 im Display vom Miniprogrammer.

wpw

P.S. übrigens taucht der Binärcod im IntelHex file als ASCII Code auf



Eben.. dort taucht "46 38 39 34" auf.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
22.05.2019, 11:01 Uhr
wpwsaw

Avatar von wpwsaw

@Holm

eben ... wpw oder eben ... Haupti65 ?

stimmt ja auch dann.

@Haupti65
du solltest doch mal deinen assemblierten Code zeigen sonst müssen wir doch warten, bis Holm seine Glaskugel wieder da ist

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
22.05.2019, 18:47 Uhr
Haupti65

Avatar von Haupti65

Moin Zusammen,
habe jetzt mal ein kurzes Programm geschrieben:

.nolist
.include "m328def.inc"
.list

reset:
cli

Im Eprommer steht jetzt die F8 94...

Und warum finde ich das nicht in dem Hex-File von Grant Searle?

; Program start

RESET:
CLI ; disable interupts

; Initialize the I/O Ports
LDI J, 0xFF
out PORTB, J ; enable pullups
out PORTC, J ; enable pullups
out PORTD, J ; enable pullups

LDI J, 0x00 ; pins 0 - 7 of port D
out DDRD, J ; set PORTD pins to inputs TEMPORARILY to read config bits

LDI J, 0x01 ; pin 1 of port B is output (sync)
out DDRB, J


Danke erst mal an Euch!!!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
22.05.2019, 18:55 Uhr
schlaub_01



Also wenn ich mir das originale Hex File vom Grant Searle Video anschaue, sieht man denn CLI Code auf jeden Fall. Sonst schick mir mal ne PN mit Deiner Mail Adresse, dann kannst Du mir das Projekt mal schicken und ich schau mir das mal an.

Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
22.05.2019, 19:43 Uhr
holm

Avatar von holm

@Haupti: Du stellst Dich an wie ein Huhn zum Pinkeln ...hätte mein Vater gesagt.

Wie wäre es denn wenn Du mal einen Link hier rein setzt? Ich habe keinen Bock auf Grants Webseite nach irgendeinem File für irgendwas zu suchen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
22.05.2019, 19:52 Uhr
wpwsaw

Avatar von wpwsaw

und immer noch kein Intel Hexcode. Was nützt mir der Quellcode zum testen. ? Ich möchte mir den von dir erzeugten Hex-code ansehen

oder habe ich mich mal wieder zu blöde ausgedrückt???

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
22.05.2019, 21:46 Uhr
wpwsaw

Avatar von wpwsaw

Hallo Olaf,

habe dir geantwortet, danke für die mail
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
22.05.2019, 23:02 Uhr
holm

Avatar von holm

..kam per Mail:

Quellcode:

  
:020000020000FC
:100000000C9434000C9434000C9434000C943400A0
:100010000C9434000C9434000C9434000C94340090
:100020000C9434000C9434000C9434000C940101B2
:100030000C9434000C9434000C9434000C94340070
:100040000C9434000C9434000C9434000C94340060
:100050000C9434000C9434000C9434000C94340050
:100060000C9434000C943400F8940FEF05B908B9DF
                         ^^^^^
:100070000BB900E00AB901E004B900E00093800088
:1000800009E00093810002E000936F0000E000931C
:10009000C10000E800BF08E00EBF0FEF0DBF60E039
:1000A00050E040E0C0E0D1E020E030E090E0788037
:1000B0008FE50FEF602E00E0C02E39B000E00BB9E5
...



Wohl der erste Befehl hinter den Vectoren..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 22.05.2019 um 23:03 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
23.05.2019, 07:28 Uhr
wpwsaw

Avatar von wpwsaw

in der umgewandelten Datei auf Adresse 86h und 69h

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
24.05.2019, 23:33 Uhr
Haupti65

Avatar von Haupti65

Moin zusammen,
danke an holm und wpw.
hab die codes gefunden.

gruss olaf
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek