Z80 - agregando números en U2 - configuraciones de indicadores de registro

0

Tenemos Z80. Este procesador realiza la siguiente operación en U2:
200 - (-56) . Cuáles serán los valores de los siguientes indicadores de registro:
S - el bit más antiguo del resultado
V - desbordamiento
C - carry
Z - el resultado es cero.

Ahora, sabemos que en U2 tenemos: 200-(-56) = 200+56 = 00000000(U2) Entonces, sé que:
S = 0
V = 1
Z = 1 .
Sin embargo, cuando se trata de C no estoy seguro de ello. Aunque, vemos el bit transportado, creo que en U2 podemos ignorarlo, por lo que C = 0 .
Estoy en lo cierto

    
pregunta JIm Dearden

1 respuesta

1

No sé qué es U2.

En binario de 8 bits,

      200                          -> 1100 1000
      -56 -> 200                   -> 1100 1000
   -(-56) -> 56                    -> 0011 1000
200-(-56) -> 1100 1000 + 0011 1000 -> 0000 0000 with carry flag
200-(-56) -> 1100 1000 - 1100 1000 -> 0000 0000 with no carry flag

La expresión 200 - (-56) es problemática para 8 bits. 200 no se puede representar como un número firmado de 8 bits. Mientras que -56 no se puede representar como un número sin firmar. Eso lleva al problema de interpretar lo que realmente significa la expresión. Dependiendo del contexto de los códigos reales:

Si los códigos se habían compilado para un agregado de 8 bits, entonces: S = 0, V = 0, C = 1, Z = 1.

Si los códigos se compilaron en una resta de 8 bits, entonces: S = 0, V = 0, C = 0, Z = 1.

Para una operación de 16 bits, es simple: S = 0, V = 0, C = 0, Z = 0.

    
respondido por el rioraxe

Lea otras preguntas en las etiquetas