Hexadezimal in Assembler

OP #1522660
Lesenswert?

Moin moin,

Seit kurzer Zeit beschäftige ich mich mit Assembler.
Aber eins verstehe ich garnicht.

Warscheinlich wurde euch die frage schon 1000x gestehlt, aber was ich 
bis jetzt gefunden hab leider nicht weiter geholfen

Warum wird das Hexadezimal upt benötigt, wenn das assemlieren den Text 
code in binär umgewandelt wird.

Würde mich über eure antwort freuen.

lg mt1988
#1522679
Lesenswert?

Die Zahlendarstellung die man als Mensch benutzt, richtet sich nach dem 
was man an dieser Stelle ausdrücken möchte.
Prinizipiell ist es egal, welche Darstellungsform man für Zahlen 
benutzt. Hex, Dezimal oder Binär sind alles nur unterschiedliche 
Präsentationsformen desselben Sachverhaltes: einer Zahl.

Aber je nach Aufgabenstellung und an welcher Stelle man sich im Programm 
gerade befindet, kann die eine oder die andere Darstellungsform insofern 
besser sein, als sie sich gerade hier anbietet.

Benötigst du in einem Programm zb die Anzahl der Sekunden in einer 
Minute (=60), dann wird es unsinnig sein, dafür eine Hex-Repräsentierung 
zu nehmen und einen Kommentar daneben hinzuschreiben

    ldi   r17, 0x3C     ; 1 Minute hat 60 Sekunden

schreib doch gleich 60 in dezimaler Schreibweise
    ldi   r17, 60       ; 1 Minute hat 60 Sekunden

dann kannst du dir den Kommentar sparen, bzw. du ermöglichst dem Leser 
die einfache Kontrolle, ob du auch wirklich 60 geschrieben hast.

Selbiges mit den anderen Darstellungsformen. Manchmal ist Binär besser, 
weil man sich tatsächlich auf Bitebene bewegt. Manchmal ist Hex besser. 
Hex nimmt man, weil man von Hex leicht auf die Bitdarstellung kommt.

Manchmal ist aber auch gar keine Zahlendarstellung die Beste
     ldi  r17, 'A'     ; ein 'A' per UART verschicken
kontra
     ldi  r17, 0x41    ; ein 'A' per UART verschicken
#1522695
Lesenswert?

Ob Du eine Wert hexadezimal, oktal, binär oder dezimal darstellst, ist 
egal und eigentlich eine Frage der Les- und Interpretierbarkeit Deines 
Codes. Der Assembler macht daraus sowieso die dem Maschinencode 
entsprechenden Bits und Bytes. Wenn Du Dir den Maschinencode ansiehst, 
wird dieser meist auch im Hexadezimalformat dargestellt. Dies ist eben 
auch nur eine Art der Darstellung, Du könntest ihn Dir auch im 
Binärformat oder im Dezimalformat ansehen. Wäre aber viel 
unübersichtlicher :-)

Reinhard - der nie verstanden hat, warum IP-Adressen dezimal geschrieben 
werden, wo es sich doch um Bytes handelt, die hexadezimal viel 
verständlicher sind :-)
#1522708
Lesenswert?

..der nie verstanden hat, warum IP-Adressen dezimal geschrieben
werden, wo es sich doch um Bytes handelt, die hexadezimal viel
verständlicher sind

Schon mal einen Hackerfilm gesehen. zB Sandra Bullock als Hackerin, die 
die Welt rettet ? Wenn man dann IP's sieht, die zB 192.168.344.39 
lauten, weiss man was Sache ist.
#1522722
Lesenswert?

Nebliger Tag schrieb:
> ..der nie verstanden hat, warum IP-Adressen dezimal geschrieben
> werden, wo es sich doch um Bytes handelt, die hexadezimal viel
> verständlicher sind
>
> Schon mal einen Hackerfilm gesehen. zB Sandra Bullock als Hackerin, die
> die Welt rettet ? Wenn man dann IP's sieht, die zB 192.168.344.39
> lauten, weiss man was Sache ist.

Dazu passend:

Schon alt, aber immer wieder gut!
http://www.stophiphop.com/modules/news/article.php?storyid=184
Gast #1522762
Lesenswert?

> Reinhard - der nie verstanden hat, warum IP-Adressen dezimal geschrieben
> werden, wo es sich doch um Bytes handelt, die hexadezimal viel
> verständlicher sind :-)

Kommt drauf an. Eigentlich können sie auch in Hex geschrieben werden 
(allerdings dann mit 0x vor den Teil-Zahlen), aber das unterstützen 
viele Programme heute nicht mehr. Zumindest unter Linux geht aber noch 
ein
1
ping 0x7f.0x00.0x00.0x01

oder gar
1
ping 0x7f000001
#1522789
Lesenswert?

Rolf Magnus schrieb:
>> Reinhard - der nie verstanden hat, warum IP-Adressen dezimal geschrieben
>> werden, wo es sich doch um Bytes handelt, die hexadezimal viel
>> verständlicher sind :-)
>
> Kommt drauf an. Eigentlich können sie auch in Hex geschrieben werden
> ...
Ja, man kann. Aber die allgemeine Schreibweise ist Dezimal. Ich wollte 
ja auch nur mal so bemerken, dass ich z.B. aus einer Netzmaske 
FF.FF.FF.F8 die Netzstruktur besser auslesen kann als aus 
255.255.255.248. Nur so am Rande.

Reinhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren