Forum: Mikrocontroller und Digitale Elektronik Befehlsspalte im Assembler-Code


von Florian S. (sirius7)


Angehängte Dateien:

Lesenswert?

Hallo,

ich befasse mich gerade mit Assembler-Code und so langsam gehts voran, 
nur für was die zweite Spalte im Assembler-Code ist (im Bild), finde ich 
leider keine Erklärung im www. Die erste Spalte ist meines Wissens der 
Befehlszähler, die dritte und weiter die eigentlichen Befehle und 
Operanden, aber die zweite ist mir nicht klar. Nach langem hin und her 
suchen, bin ich auf die Idee gekommen, dass es in hex codierte Befehle 
sind, doch konnte das bisher nicht bestätigt bekommen. Stimmt das so?

Bitte um Eure Hilfe!

: Bearbeitet durch User
von Sascha W. (sascha-w)


Lesenswert?

Hallo,

da liegst du genau richtig!
Schon an dem call zu sehen wo das 3. und 4. Byte der Zieladresse von 
"Test" entspricht.

Sascha

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

> Erklärung im www
Wieso das? Wäre nicht das 'Atmel AVR 8-bit Instruction Set Manual' viel 
naheliegender?

von Florian S. (sirius7)


Lesenswert?

Hallo Sascha, vielen Dank! )

von Wolfgang (Gast)


Lesenswert?

Alex S. schrieb:
> ich befasse mich gerade mit Assembler-Code und so langsam gehts voran,
> nur für was die zweite Spalte im Assembler-Code ist

Das was du da betrachtest, ist nicht der reine Assembler-Code, sondern 
das Listing, wo der Assambler-Code zusammen mit der Übersetzung in 
Hex-Code ausgeworfen wird.

von Florian S. (sirius7)


Lesenswert?

Hallo, danke für die Antwort, habe auch dort nachgeschaut, jedoch steht 
da zu jedem Befehl nur sowas wie Opcode in Form 1111 00kk kkkk k100 aber 
ich verstehe nicht genau was diese k bedeuten, die passen doch nicht 
unter hex-Zahlen Darstellung, ansonsten finde ich da keine anderen 
Codes.
Gruß

von Florian S. (sirius7)


Lesenswert?

Wolfgang schrieb:

> Das was du da betrachtest, ist nicht der reine Assembler-Code, sondern
> das Listing, wo der Assambler-Code zusammen mit der Übersetzung in
> Hex-Code ausgeworfen wird.

ah ok, jetzt ist es klar, vielen Dank! :)

von S. Landolt (Gast)


Lesenswert?

> verstehe nicht genau ...
Von der ersten einfachen Zeile ausgehend, finden Sie unter 'break' im 
Manual:
16-bit Opcode: 1001 0101 1001 1000,
was in hex-Schreibweise zu 9 5 9 8 wird - voila.
Analog bei z.B. call, die 'k' stehen für die einzelnen Bits der 
aufzurufenden Adresse, diese hängen also vom Programm selbst ab.

von Florian S. (sirius7)


Lesenswert?

> Analog bei z.B. call, die 'k' stehen für die einzelnen Bits der
> aufzurufenden Adresse, diese hängen also vom Programm selbst ab.

es tut mir echt Leid, habe leider nicht genau verstanden, was mit 
"stehen für die einzelnen Bits der
aufzurufenden Adresse" genau gemeint ist. Wird die Adresse direkt ins 
das Operationscode geschrieben?

von Ulrich F. (Gast)


Lesenswert?

Alex S. schrieb:
> Wird die Adresse direkt ins
> das Operationscode geschrieben?

Richtig!

von Amateur (Gast)


Lesenswert?

Auch wenn alle das Gleiche meinen, so "schreiben" die Meisten etwas 
Unterschiedliches.
Die genaue Bedeutung von Bezeichnern wie z.B. "1111 00kk kkkk k100" wird 
praktisch immer daneben erläutert. Vielfach geht es dabei um implizite 
oder explizite Adressierung.

kk kkkk k also 7 Bit reichen z.B. für eine Sprungadresse im Bereich von 
+/-
64 Bit.
Also z.B. JR ...

kk kkk also 5 Bit reichen für die Unterscheidung von R00 bis R31.
Also z.B. OR R00 bis R31 oder AND R00 bis R31.

Es ist aber auch möglich, dass "ähnliche" Befehle zusammengefasst 
werden.
Die bedingten Sprungbefehle wären hierbei ein paar passende Kandidaten.
JZ, JNZ, JC, JNC usw.

von spess53 (Gast)


Lesenswert?

Hi

>Wird die Adresse direkt ins das Operationscode geschrieben?

Ja. Aber warum interessiert dich das? Das macht der Assembler für dich, 
oder willst du das mit der Hand codieren?

Die OP-Codes habe ich nur für einen eigenen Disassembler gebraucht. Zum 
eigentlichen programmieren brauchst du nur Labels, Befehle, Kommentare 
und die Assemblerdirektiven/-expressions und/oder Preprocessor Befehle.

MfG Spess

von Florian S. (sirius7)


Lesenswert?

>
> Ja. Aber warum interessiert dich das? Das macht der Assembler für dich,
> oder willst du das mit der Hand codieren?

> MfG Spess

Hallo, ne es geht mir eigentlich nur darum, zu verstehen, was in der 
Anleitung steht. Muss mir viel theoretischen Kram eineignen.
MfG

: Bearbeitet durch User
von Florian S. (sirius7)


Lesenswert?

@Amateur

vielen Dank für die Erklärung! Hat mich weitergebracht!

von Florian S. (sirius7)


Lesenswert?

Ulrich F. schrieb:
> Alex S. schrieb:
>> Wird die Adresse direkt ins
>> das Operationscode geschrieben?
>
> Richtig!

Danke! )

von Wolfgang (Gast)


Lesenswert?

spess53 schrieb:
> Ja. Aber warum interessiert dich das? Das macht der Assembler für dich,
> oder willst du das mit der Hand codieren?

Es soll sogar Leute geben, die selber einen Assembler (=Programm) zum 
Umsetzen von Assembler (=Code) in Hex Code schreiben. Die interessiert 
das ziemlich.

Früher (TM) da hatte man mindestens die häufigen Hex Codes zu den 
Befehlen um Kopf und hat sie sogar bei den ersten Kleincomputern binär 
eingegeben - eben die Lösung des Henne-Ei Problems, wenn man nicht auf 
Cross-Compiler zurückgreifen konnte bzw. einen nakten Controller vor 
sich hatte.

von Ulrich F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Es soll sogar Leute geben, die selber einen Assembler (=Programm) zum
> Umsetzen von Assembler (=Code) in Hex Code schreiben. Die interessiert
> das ziemlich.

Gut dass die Zeit (für mich) vorbei ist!

Wenn einer von euch da noch Bedarf hat...
Ich hätte da noch einen z80 Micro Professor abzugeben ...
Gut abgelagert, sollte aber noch laufen.

von Michael D. (Andromeda) (Gast)


Lesenswert?

Au fein! An dem Micro-Professor bin ich interessiert. Hoffentlich bin 
ich der erste. Ich habe auch einen Account unter dem angegeben Namen und 
Nick. Finde nur gerade das Passwort nicht. Ich schreibe dann nochmal 
angemeldet.

Was soll er den kosten?

von Florian S. (sirius7)


Lesenswert?

hmm, hätte jetzt auch noch Frage wegen der Zeilen ganz unten, was sollen 
sie darstellen? also nach dem .dseg

000100: ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
000110: ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff

von spess53 (Gast)


Lesenswert?

Hi

> also nach dem .dseg

Das sind 32 Byte vom Raminhalt ab Adresse 0x0100


>Es soll sogar Leute geben, die selber einen Assembler (=Programm) zum
>Umsetzen von Assembler (=Code) in Hex Code schreiben. Die interessiert
>das ziemlich.

Zwar keinen Assembler, aber meine ersten Programme habe ich vor über 30 
Jahren mit so

https://de.wikipedia.org/wiki/Polycomputer_880

einem Teil geschrieben. Also ich kenne das.

MfG Spess

von Michael D. (Andromeda) (Gast)


Lesenswert?

spess53 schrieb:

> https://de.wikipedia.org/wiki/Polycomputer_880

Genau. So muss Technik. :-)
Im Ernst. Das Ding macht einen recht stabilen Eindruck.

Nicht so wie der hier: 
http://retro.hansotten.nl/wp-content/uploads/2015/05/IMG_9928-1024x768.jpg

Das war mein erster.

von spess53 (Gast)


Lesenswert?

Hi

>Das Ding macht einen recht stabilen Eindruck.

Konnte man auch damals für 3449 DDR-Mark schon erwarten.


>Nicht so wie der hier:
>http://retro.hansotten.nl/wp-content/uploads/2015/...

>Das war mein erster.

Der war auch nur in der Firma ausgeliehen. Mein erster eigener sah auch 
nicht viel besser aus:

https://de.wikipedia.org/wiki/Z_1013

MfG Spess

von Ulrich F. (Gast)


Lesenswert?

Sorry, für [ OT ], aber anders kein Kontakt.


Michael D. (Andromeda) schrieb:
> Ich schreibe dann nochmal
> angemeldet.

Das solltest du tun!
Denn es tropfen so langsam erstaunlich viele Anfrage rein....


Der erste du bist!


Der Preis?
20€ + 6.99 versicherter Versand
Dazu gibts dann noch ein Z80 Buch und ein paar Chips.
Die Plaste Verpackung ist leider arg gefetzt.
Und ein Handbuch ist auch nicht mehr dabei.

von Michael D. (Andromeda) (Gast)


Lesenswert?

Ulrich F. schrieb:
> Das solltest du tun!
> Denn es tropfen so langsam erstaunlich viele Anfrage rein....

Das ist gut. Ich möchte den Professor dann doch lieber nicht kaufen - 
obwohl ich ihn liebend gerne kaufen möchte. :-) Ist zwar ein nettes 
Ding, aber Sentimentalitäten kosten auch Platz. Entschuldigung, aber ich 
hatte einfach ohne nachzudenken "Hier!" geschrien.

Ich hoffe, dass ist in Ordnung für Dich, Ulrich. Ich wünsche dem 
nächsten in der Warteschlange viel Spass mit dem Teil.

von Ulrich F. (Gast)


Lesenswert?

ok

von Jay W. (jayway)


Lesenswert?

spess53 schrieb:

> Zwar keinen Assembler, aber meine ersten Programme habe ich vor über 30
> Jahren mit so
>
> https://de.wikipedia.org/wiki/Polycomputer_880
>
> einem Teil geschrieben. Also ich kenne das.
>
> MfG Spess

Bummer! Da kommen die Erinnerungen an meine Zeit im Schülerrechenzentrum 
wieder hoch. "Soundausgabe" über einen Geracord und "Coca 
Cola"-Laufschriften. ;-)

Danke dafür.

von Amateur (Gast)


Lesenswert?

Z.B. der erste, in Deinem Beispiel verwendete PUSH-Befehl:
--------
push r16

1001 001d dddd 1111

r00 =   0 0000
r16 =   1 0000       ; hier verwendet

also:
1001 001d dddd 1111
        1 0000
1001 0011 0000 1111
9    3    0    f     ; wie auch im Listing angegeben

Der in Deinem Beispiel verwendete BRNE-Befehl:
--------
brne loop

1111 01kk kkkk k001
f    7    e    9     ; aus Deinem Beispiel
1111 0111 1110 1001  ; Binär
       11 1110 1     ; Sprungweite binär

Ergibt die Sprungweite:
1111101 = -3

Also nach BRNE (Zeile 00014) gehts im
positiven Falle bei   00011 (-3) weiter.

Aber wie bereits von Anderen erwähnt: So etwas erledigt der Compiler für 
Dich.

von Paul B. (paul_baumann)


Lesenswert?

@Amateur
Trotz Amateur-sein hast du das professionell erklärt.

Amateur schrieb:
> Aber wie bereits von Anderen erwähnt: So etwas erledigt der Compiler für
> Dich.

Man Einer möchte aber wenigstens EINMAL wissen, was der freundliche 
Kompiler so für Sachen anstellt.

mfG Paul

von laie (Gast)


Lesenswert?

Paul B. schrieb:
> @Amateur
> Trotz Amateur-sein hast du das professionell erklärt.
>
> Amateur schrieb:
>> Aber wie bereits von Anderen erwähnt: So etwas erledigt der Compiler für
>> Dich.
>
> Man Einer möchte aber wenigstens EINMAL wissen, was der freundliche
> Kompiler so für Sachen anstellt.
>
> mfG Paul

Compiler? Macht doch der Assembler.

von Amateur (Gast)


Lesenswert?

>Compiler? Macht doch der Assembler.

Jawoll Herr Oberlehrer. Ich nehme alles vorher Gesagte zurück!

von laie (Gast)


Lesenswert?

Amateur schrieb:
>>Compiler? Macht doch der Assembler.
>
> Jawoll Herr Oberlehrer. Ich nehme alles vorher Gesagte zurück!

Auf dem Weg vom Amateur zum Laien.

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.