Acumulador | Top

Acumulador (ACC)

Variable interna que lleva el resultado de las operaciones. Aparte del acumulador principal ACC existen acumuladores secundarios (ACC(-1), ACC(-2), etc). Algunas operaciones producen un desplazamiento de acumuladores para que los estados anteriores no se pierdan (quedan en los secundarios). Algunas operaciones requieren de los datos memorizados en los acumuladores secundarios, como por ejemplo el contador.

Rotación | Nuevo valor -> Acc -> Acc(-1) -> Acc(-2) ....
Rotación inversa | Acc <- Acc(-1) <- Acc(-2) <- Acc(-3)....

Normalmente en una rotación inversa en ACC queda el resultado de la operación (instrucción) y no el acumulador anterior.

Las instrucciones que hacen una rotación del acumulador son:
FAVG
LD
LDN
LDT
LDX
NOT (sin argumentos)
RD3X
RD4X
READ3X
READ4X
STDVT
WR4X
WRITE4X
Las instrucciones que hacen una rotación inversa de acumuladores son:
ANDP
ORP
POP

A partir del CP121 ROM 2.55 y CP122 ROM 2.03 el stack de acumuladores pasa de 8 a 20.
Ejemplos

Supongamos que la condición es que:
X = 1 si ((A = 1) o (B = 1)) y (C = 1) y (D = 1)
Para que sea 'verdadero' (activado o distinto de cero) C y D deben serlo, y d A y B solo se requiere uno:
`LD A``;Acc = A` `
``EQ 1 ;Acc = resultado comparación``` `
``LD B ;Acc = B; Acc(1) = comparación anterior``` `
``EQ 1 ;```Acc = resultado comparación```` `
``ORP``` `;Acc = OR de las 2 comparaciones anteriores
``LD C``` `` `;Acc =` `C```; Acc(1) = OR comparación
```EQ` `1``;```Acc = resultado comparación```` `
``LD D``` `` `;Acc =``` `D;` ``Acc(2) = OR comparación```; Acc(1) = comparación anterior
EQ 1``;```Acc = resultado comparación```` `
``ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)``` `
``ANDP``;Acc = Acc AND Acc(1)``
` Supongamos que X = 1 si (A = 0) y (B = 1) y (C = 1) y (D = 1)`
LD A ;Acc = A
EQ 0 ;Acc = resultado comparación
LD B ;Acc = B; Acc(1) = comparación de A
EQ 1 ;Acc = resultado comparación
``LD C ;```Acc = C; Acc(1) = comparación` de B; Acc(2) = comparación de A
EQ 1 ;Acc = resultado comparación
``LD D ;```Acc = D; Acc(1) = comparación` de C; Acc(2) = comparación de B```; Acc(3) = comparación de a`
EQ 1 ;Acc = resultado comparación
```ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2); Acc(2) = Acc(3)
`````ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)
`` ANDP ;Acc = Acc AND Acc(1)
`

Lista de instrucciones
Indice