Domanda

Ci scusiamo per rendere questo la mia seconda domanda Z80 DAA - ho praticamente implementato questa istruzione ora, ma c'è una cosa che non sono sicuro - è l'H flag impostato da questa istruzione a tutti? Il manuale Z80 dice 'vedere istruzioni', ma si parla solo la bandiera prima del DAA, non dopo che è stato eseguito.

Ho impostato le bandiere come segue:

S è impostato se il risultato è negativo (0x80 & risultato uguale a 0x80) Z viene impostato se il risultato è zero H (non sicuro quindi questa domanda) P / V è impostato sulla parità del risultato (1 se anche, 0 se dispari) N è lasciato solo C viene impostato se maggiore nibble del valore dell'accumulatore originale viene modificato

Oltre a questo, l'istruzione sembra esibirsi come mi aspetto che :-) Spero che qualcuno può chiarire questo per me, molte grazie.

È stato utile?

Soluzione

E 'una buona domanda. Sì, il comportamento H di bandiera non è chiaramente documentato, perché è comportamento è non standard con DAA.

Se nibble inferiore (meno significativi quattro bit) di A è un numero non base 10 (superiore a 9 come A, B, C, D, E o F) o H flag è impostato , 6 è aggiunto al registro. Questo significa anche se nibble inferiore è in 0-9 gamma, è possibile forzare aggiungere 6 a un registro impostando bandiera H.

Quando si tratta di tua domanda, H bandiera di solito rimane intatto nella mia esperienza ma non si può dipendere da quello, perché si dice che "l'effetto è non standard", che significa H di bandiera può cambiare o non può cambiare a seconda della situazione. In casi come questo, si dovrebbe sempre pensare H bandiera è influenzato dal istruzioni DAA dopo l'esecuzione, anche se si vede che non è influenzata nei test.

Altri suggerimenti

ho potuto trovare solo qui che il tempo di portare / prendere in prestito bandiera viene modificata da DAA.

I raccomanda che questo flag sia impostato esattamente come (riporto ausiliaria) flag è impostato AF dalle istruzioni DAA e DAS su CPU x86. Non vedo alcuna ragione per cui non ci dovrebbe essere alcuna differenza nel funzionamento tra i8080 / i8085 / Z80 e di i8086 di DAA / DAS.

Il DAA x86 / DAS imposta AF a 1 se regola i bassi 4 bit dell'accumulatore da 6. Se non li registra, azzera AF a 0.

Vedere le pseudo-codice per DAA e DAS nei manuali di CPU x86 di Intel (o AMD).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top