Sind Bytes / Wörter / Adressen mit oder ohne Vorzeichen in Z80-Assembler / Maschinencode?
-
02-10-2019 - |
Frage
Ich mache einen Emulator für Z80-Binärdateien, aber ich kann nicht herausfinden, ob alle der Integer-Datentypen mit oder ohne Vorzeichen aus dem Handbuch oder von google. So sind die Zahlen aus den Registern A
, B
... HL
, BC
etc unterzeichnet oder nicht?
Auch in Maschinencode sind die Bytes / Wörter / Adressen, die nach den Anweisungen kommen als Argumente mit oder ohne Vorzeichen?
Wie in diesen Beispielen (von 8080 / Z80 Instruction Set ):
8080 Mnemonic Z80 Mnemonic Machine Code Operation
------------- ------------ ------------ ---------
MVI A,byte LD A,byte 3Ebyte A <- byte
LXI B,word LD BC,word 01word BC <- word
JMP address JP address C3address PC <- address
Vielen Dank im Voraus.
Lösung
Andere Tipps
AKAIK, Assemblersprache Daten und Transferbefehle enthalten keine Zeichen Informationen. Sowohl Daten als auch Übertragungsvorgänge definieren nur Datengröße. Anmelden Informationen sind Teil einiger Anweisungen, wie mit / ohne Vorzeichen Multiplikation Anweisungen. So kann das gleiche Register durch IMUL Anweisung behandelt wird als Integer unterzeichnet und von MUL-Befehl als unsigned integer.
Auf vielen Maschinen, die einzigen Unterschiede zwischen mit und ohne Vorzeichen Zahlen sind die Art und Weise, in der Größenordnung Vergleiche durchgeführt werden, und die Art und Weise, in der kürzeren Werte zu längeren umgewandelt werden (man beachte, dass viele Prozessoren Multiplizieroperationen umwandeln effektiv kürzer Typen längere und Division von Natur aus Größenordnung führen Vergleiche). Wenn jede Art von Operation andere als die oben durchgeführt wird, mit und ohne Vorzeichen Operanden genau behandelt werden (Bit-für-Bit) auf die gleiche Weise, so gibt es keine Notwendigkeit, sie zu unterscheiden.