top of page

El microprocesador Z-80 dispone de una unidad aritmética-lógica que le permite realizar una serie de operaciones, tanto aritméticas, como lógicas. Las aritméticas incluyen la suma y resta con o sin acarreo, incremento y decremento de un registro, comparaciones, ajuste decimal, complemento y negación. Las lógicas incluyen las operaciones que se realizan con los operadores "AND", "OR" y "XOR".

 

COMPARACIONES:

Estas instrucciones permiten comparar el contenido del acumulador con un número. Para ello, se resta el número del contenido del acumulador, pero el resultado no se almacena en ninguna parte, simplemente, se alteran determinados flags del registro "F", lo que nos indica si el número era menor, igual o mayor que el contenido del acumulador. Si era igual, se pone a "1" el flag "Z" (indicador de "cero"). Si el número era mayor, se pone a "1" el flag "S" (indicador de "signo").

 

AJUSTE DECIMAL:

Esta instrucción realiza un ajuste del contenido del acumulador para que, en vez de estar comprendido entre "00h" y "FFh", lo esté entre "00h" y "99h". Si se produce acarreo, se indica mediante el flag correspondiente. Para realizar esta operación se toma en cuenta el estado de los indicadores de "acarreo" (C) y "semi-acarreo" (H). Su finalidad es la de permitir realizar operaciones en "BCD" (Decimal Codificado en Binario).

 

COMPLEMENTO:

Consiste en realizar un "complemento a 1" del acumulador, es decir, cambiar los "unos" por "ceros" y los "ceros" por "unos".

 

NEGACIÓN:

Consiste en realizar un "complemento a 2" del acumulador, es decir, realizar un "complemento a 1" y, luego, sumarle "1". Lo que se obtiene es el "negativo" del número que teníamos en el acumulador. El efecto es el mismo que si restáramos el acumulador de "cero", es decir:

 

                                                       A ← 0-A

 

 

EL FLAG DE ACARREO:

Existen dos instrucciones que afectan al indicador de acarreo del registro "F", es posible ponerlo a "1" o "complementarlo" (ponerlo a "1" si era "0" y viceversa). No se ha previsto una instrucción para poner a "0" el flag de acarreo, dado que esto se puede conseguir haciendo un "AND" o un "OR" del acumulador consigo mismo.

 

 

 

Veamos ya las instrucciones:

 

Grupo de instrucciones aritméticas para 8 bits

En este grupo de instrucciones los registros usados se indican con "r" según el siguiente código:

 

"r"

           código

 A

    111

 B

    000

 C              

    001

 D

    010

 E

    011

 H

    100

 L

    101

 

ADD, «sumar» en inglés: La función básica de esta instrucción es sumar sobre el registro acumulador el valor indicado por el operando. Ejecuta una suma binaria de ambos datos y no altera el contenido del operando.

 

ADD A,r

 

OBJETO:

 

Suma el registro acumulador "A" con el registro indicado por "r", dejando el resultado en el registro acumulador.

 

 CODIGO

MAQUINA:

 

 

1 0 0 0 0 <--- r --->

 

 

 

 

INDICADORES          DE  CONDICIÓN    A LOS QUE        AFECTA:

 

  S

;

pone 1 - si el resultado es negativo
pone 0 - en cualquier otro caso

Z

;

pone 1 - si el resultado es cero
pone 0 - en cualquier otro caso

H

;

pone 1 - si hay acarreo desde el bit 3
pone 0 - en cualquier otro caso

N

;

pone 0 - siempre

C

;

pone 1 - si hay acarreo desde el bit 7
pone 0 - en cualquier otro caso

P/V

;

pone 1 - si hay desbordamiento (overflow)
pone 0 - en cualquier otro caso

 

NOTA: Se entiende que hay acarreo desde el bit 3 cuando éste pasa de ser "1" a ser "0". Se entiende que hay desbordamiento si el resultado pasa de ser "positivo" a ser "negativo" o viceversa. Estas observaciones son válidas para todas las operaciones aritméticas. 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

3.4 INSTRUCCIONES ARITMÉTICAS Y LÓGICAS

ADD A,(HL)

OBJETO:

Suma el registro acumulador "A" con el octeto de la posición de memoria direccionada por el contenido del par de registros "HL", y deja el resultado en el registro acumulador.

 

CODIGO MAQUINA:

 

1 0 0 0 0 1 1 0

86h

 

 

 

 

 

  INDICADORES         DE  CONDICIÓN A    LOS QUE    AFECTA:

 

S

;

pone 1 - si el resultado es negativo
pone 0 - en cualquier otro caso

Z

;

pone 1 - si el resultado es cero
pone 0 - en cualquier otro caso

H

;

pone 1 - si hay acarreo desde el bit 3
pone 0 - en cualquier otro caso

N

;

pone 0 - siempre

C

;

pone 1 - si hay acarreo desde el bit 7
pone 0 - en cualquier otro caso

P/V

;

pone 1 - si hay desbordamiento (overflow)
pone 0 - en cualquier otro caso

CICLOS DE MEMORIA:

2

CICLOS DE RELOJ:

7

bottom of page