Sono byte / parole / indirizzi con o senza segno in codice assembler Z80 / macchina?
-
02-10-2019 - |
Domanda
Sto facendo un emulatore per i binari Z80 ma non posso sapere se tutti i tipi di dati interi sono firmate o senza segno rel dal manuale o da Google. Così sono i numeri da registri A
, B
... HL
, BC
ecc firmati o no?
Inoltre, in codice macchina sono i byte / parole / indirizzi che vengono dopo le istruzioni come argomenti con o senza segno?
Come in questi esempi (da 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
Grazie in anticipo.
Soluzione
-
I registri possono contenere, e la maggior parte operandi calcolare entrambe le risposte allo stesso tempo, a causa di complemento a due. Alcune istruzioni tratta comunque bisogno di informazioni se il valore che contiene è firmato o non firmato. Esistono in due forme, una per firmato e una per non firmato. Non ricordo se Z80 ha uno di questi.
-
See (1.) gli indirizzi assoluti sono indirizzi non firmate e relativi (rami) sono firmati, per essere in grado di saltare all'indietro.
Altri suggerimenti
??AKAIK, Assembly Language trasferimento di dati e non contengono informazioni segno. Entrambe le operazioni di dati e di trasferimento definiscono solo la dimensione dei dati. informazioni segno è parte di alcune istruzioni, come firmato istruzioni di moltiplicazione / unsigned. Così, lo stesso registro può essere gestito da istruzioni IMUL come intero con segno, e per l'istruzione mul come numero intero senza segno.
In molte macchine, le uniche differenze tra i numeri con e senza segno sono il modo in cui vengono eseguiti i confronti grandezza, e il modo in cui i valori più brevi sono convertiti in quelli più lunghi (si noti che le operazioni si moltiplicano molti trasformatori convertono in modo efficace i tipi più brevi per quelle più lunghe, e la divisione intrinsecamente confronti esegue magnitudo). Durante l'esecuzione di qualsiasi tipo di operazione diverso da quelli sopra operandi, con e senza segno sono trattati con precisione (bit per bit) nello stesso modo, quindi non c'è bisogno di distinguerli.