| ADC[.W] ADC.B | Suma el acarreo al destino |
| Sintaxis | ADC dst ADC.B dst |
| Operación | dst + C −> dst |
| Emulación | ADDC #0,dst ADDC.B #0,dst |
| Descripción | El bit C es sumado al operando dst. El contenido anterior de dst se pierde. |
| Bits STATUS | N: Se pone a '1' si el resultado es negativo, en caso contrario '0'. Z: Se pone a '1' si el resultado es cero, en otro caso '0'. C: Se pone a '1' si dst se incrementa de 0FFFFh a 0000, en otro caso a '0'. .....Se pone a '1' si dst se incrementa de 0FFh a 00, en otro caso a '0'. V: Se pone a '1' si existe un desbordamiento aritmético, en otro caso '0'. |
| Bits de Modo | OSCOFF, CPUOFF, y GIE no se modifican. |
Ejemplo: Un contador de 16-bits apuntado por registro R13 se suma a un contador de 32-bits apuntado por R12:
| ADD | @R13, 0(R12) | ; Suma LSDs | ||
| ADC | 2(R12) | ; Suma acarreo a MSD |
Como se puede observar, para sumar dos contadores de distinto tamaño y que sea correcta la suma, debemos tener en cuenta el acarreo producido, es por ello que primero se suma la parte baja de ambos contadores y posteriormente se actualiza la parte alta del contador de 32-bits mediante el acarreo que se haya podido producir.



0 comentarios:
Publicar un comentario