[ad_1]
UN bandiera a metà portata (noto anche come an bandiera ausiliaria) è un bit di flag di condizione nel file registro di stato di molti processore famiglie, come la Intel8080, Zilog Z80IL x86,(1) e il Atmel AVR serie, tra gli altri. Indica quando a trasportare o il prestito è stato generato dai quattro bit meno significativi di accumulatore registrarsi a seguito dell’esecuzione di un aritmetica istruzioni. Viene utilizzato principalmente in formato decimale (GAV) istruzioni aritmetiche.
Normalmente, un processore che utilizza aritmetica binaria (che include quasi tutte le CPU moderne) aggiungerà due valori byte da 8 bit secondo le regole della semplice addizione binaria. Ad esempio, aggiungendo 2516 e 4816 produce 6D16. Tuttavia, per decimale in codice binario (BCD), dove ogni nibble a 4 bit rappresenta una cifra decimale, l’addizione è più complicata. Ad esempio, aggiungendo i valori decimali 25 e 48, che sono codificati come valori BCD 2516 e 4816la somma binaria dei due valori produce 6D16. Poiché la parte inferiore di questo valore è una cifra non decimale (D), deve essere modificata aggiungendo 0616 per produrre il risultato BCD corretto di 7316che rappresenta il valore decimale 73.
0010 0101 25 + 0100 1000 48 ----------- 0110 1101 6D, intermediate result + 0110 06, adjustment ----------- 0111 0011 73, adjusted result
Allo stesso modo, aggiungendo i valori BCD 3916 e 4816 produce 8116. Questo risultato non ha un nibble basso non decimale, ma provoca un trasferimento della cifra meno significativa (quattro bit inferiori) nella cifra più significativa (quattro bit superiori). Ciò è indicato dalla CPU che imposta il flag di metà riporto. Anche questo valore deve essere corretto aggiungendo 0616 a 8116 per produrre un risultato BCD corretto di 8716.
0011 1001 39 + 0100 1000 48 ----------- 1000 0001 81, intermediate result + 0110 06, adjustment ----------- 1000 0111 87, adjusted result
Infine, se un’addizione dà come risultato una cifra alta non decimale, allora 6016 deve essere aggiunto al valore per produrre il risultato BCD corretto. Ad esempio, aggiungendo 7216 e 7316 produce E516. Poiché la cifra più significativa di questa somma non è decimale (E), aggiungere 6016 a produce un risultato BCD corretto di 14516. (Nota che la cifra iniziale è in realtà a portare un po’.)
0111 0010 72 + 0111 0011 73 ----------- 1110 0101 E5, intermediate result + 0110 60, adjustment ----------- 1 0100 0101 145, adjusted result
Riassumendo, se il risultato di un’addizione binaria contiene una cifra bassa non decimale o provoca l’impostazione del flag di metà riporto, il risultato deve essere corretto aggiungendo 0616 ad esso; se il risultato contiene una cifra alta non decimale, il risultato deve essere ulteriormente corretto aggiungendo 6016 per produrre il valore BCD finale corretto.
La bandiera di trasporto ausiliaria in x86
|
IL Bandiera di trasporto ausiliario (AF) è un Bandiera della CPU nel Registro delle BANDIERE di tutti x86-compatibile CPU,(2) e il precedente Famiglia 8080. Occasionalmente è stato chiamato Adjustment Flag da Intel.(3) Il bit flag si trova in posizione 4 nel registro dei flag della CPU. Indica quando un aritmetica trasportare o il prestito è stato generato dai quattro bit meno significativi, o bocconcino inferiore. Viene utilizzato principalmente per supportare decimale in codice binario (BCD) aritmetica.
Il flag di trasporto ausiliario viene impostato (a 1) se durante un “aggiungere” operazione c’è un riporto dal nibble basso (quattro bit più bassi) al nibble alto (quattro bit superiori), o un prestito dal nibble alto al nibble basso, nella porzione di 8 bit di ordine basso, durante una sottrazione Altrimenti, se non si verifica alcun riporto o prestito, il flag viene cancellato o “reimpostato” (impostato su 0).
(4)
[ad_2]
Source link