Est-octets / mots / adresses signé ou non signé en assembleur Z80 / code machine?
-
02-10-2019 - |
Question
Je fais un émulateur pour les binaires Z80 mais je ne peux pas savoir si tous les types de données entier sont signés ou non signés du manuel ou de Google. Ainsi, les numéros de registres A
, B
... HL
, etc BC
signés ou non?
En outre, dans le code de la machine sont les octets / mots / adresses qui viennent après les instructions comme arguments signés ou non signés?
Comme dans ces exemples (de 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
Merci à l'avance.
La solution
Autres conseils
AKAIK, données et les instructions Assembleur transfert ne contiennent pas d'informations de signe. Les deux opérations de transfert de données et ne définissent que la taille des données. informations de connexion fait partie de certaines instructions, comme des instructions de multiplication signés / non signés. Ainsi, le même registre peut être manipulé par l'instruction comme imul entier signé, et par instruction mul comme un entier non signé.
Sur de nombreuses machines, les seules différences entre nombres signés et non signés sont la façon dont les comparaisons de grandeur sont effectuées, et la manière dont les valeurs plus courtes sont converties en plus longues (à noter que les opérations se multiplient de nombreux processeurs convertissent des types plus courts les plus longs, et la division intrinsèquement effectue comparaisons de grandeur). Lorsque vous effectuez tout type d'opération autre que celles ci-dessus, signés et non signés opérandes sont traités avec précision (bit à bit) de la même manière, il n'y a donc pas besoin de les distinguer.