stringtranslate.com

Bandera de media portería

Un indicador de medio acarreo (también conocido como indicador auxiliar ) es un bit indicador de condición en el registro de estado de muchas familias de CPU , como Intel 8080 , Zilog Z80 , x86 , [1] y la serie Atmel AVR , entre otras. Indica cuándo se ha generado un acarreo o un préstamo a partir de los cuatro bits menos significativos del registro acumulador después de la ejecución de una instrucción aritmética . Se utiliza principalmente en instrucciones aritméticas decimales ( BCD ).

Uso

Normalmente, un procesador que utiliza aritmética binaria (que incluye casi todas las CPU modernas) sumará dos valores de bytes de 8 bits según las reglas de la suma binaria simple. Por ejemplo, sumar 25 16 y 48 16 produce 6D 16 . Sin embargo, para los valores decimales codificados en binario (BCD), donde cada nibble de 4 bits representa un dígito decimal, la suma es más complicada. Por ejemplo, sumar el valor decimal 25 y 48, que se codifican como los valores BCD 25 16 y 48 16 , la suma binaria de los dos valores produce 6D 16 . Dado que el nibble inferior de este valor es un dígito no decimal (D), debe ajustarse sumando 06 16 para producir el resultado BCD correcto de 73 16 , que representa el valor decimal 73.

 0010 0101 25+ 0100 1000 48----------- 0110 1101 6D , resultado intermedio
+ 0110 06, ajuste----------- 0111 0011 73 , resultado ajustado

De la misma manera, al sumar los valores BCD 39 16 y 48 16 se obtiene 81 16 . Este resultado no tiene un nibble bajo no decimal, pero sí provoca un acarreo del dígito menos significativo (los cuatro bits inferiores) en el dígito más significativo (los cuatro bits superiores). Esto se indica mediante la configuración del indicador de medio acarreo por parte de la CPU. Este valor también debe corregirse, sumando 06 16 a 81 16 para producir un resultado BCD corregido de 87 16 .

 0011 1001 39+ 0100 1000 48----------- 1000 0001 81 , resultado intermedio
+ 0110 06, ajuste----------- 1000 0111 87 , resultado ajustado

Por último, si una suma da como resultado un dígito alto no decimal, entonces se debe sumar 60 16 al valor para producir el resultado BCD correcto. Por ejemplo, sumar 72 16 y 73 16 produce E5 16 . Dado que el dígito más significativo de esta suma no es decimal (E), sumarle 60 16 produce un resultado BCD corregido de 145 16 . (Tenga en cuenta que el dígito 1 inicial es en realidad un bit de acarreo ).

 0111 0010 72+ 0111 0011 73----------- 1110 0101 E5 , resultado intermedio
+ 0110 60, ajuste-----------1 0100 0101 145 , resultado ajustado

Resumiendo, si el resultado de una suma binaria contiene un dígito bajo no decimal o hace que se active la bandera de medio acarreo, el resultado debe corregirse agregándole 06 16 ; si el resultado contiene un dígito alto no decimal, el resultado debe corregirse aún más agregándole 60 16 para producir el valor BCD final correcto.

La bandera de transporte auxiliar en x86

El indicador de acarreo auxiliar (AF) es un indicador de CPU en el registro FLAGS de todas las CPU compatibles con x86 [2] y la familia 8080 anterior . Intel lo ha llamado ocasionalmente indicador de ajuste [3] . El bit indicador se encuentra en la posición  4 en el registro de indicadores de la CPU. Indica cuándo se ha generado un acarreo o un préstamo aritmético a partir de los cuatro bits menos significativos o nibble inferior. Se utiliza principalmente para admitir la aritmética decimal codificada en binario (BCD).

La bandera de acarreo auxiliar se establece (a 1) si durante una operación de " adición " hay un acarreo desde el nibble bajo (los cuatro bits más bajos) al nibble alto (los cuatro bits más altos), o un préstamo desde el nibble alto al nibble bajo, en la porción de 8 bits de orden bajo, durante una resta. De lo contrario, si no se produce dicho acarreo o préstamo, la bandera se borra o se "reinicia" (se establece a 0). [4]

Véase también

Referencias

  1. ^ "Manual del desarrollador de software de arquitectura Intel, volumen 2: Manual de referencia del conjunto de instrucciones" (PDF) . Consultado el 29 de mayo de 2013 .
  2. ^ Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, vol. 1. Diciembre de 2022. pág. 3-16.
  3. ^ Manual del desarrollador de la familia Pentium Pro: Volumen 2 (PDF) . Enero de 1996. pág. 3-11.
  4. ^ "Manual del usuario de la familia 8086" (PDF) . Intel. Archivado desde el original (PDF) el 27 de septiembre de 2020 . Consultado el 2 de julio de 2020 .