In the ADD implementation, the overflow detection uses the following check:
if (a < Rb) V = 1; else V = 0;
Here, a represents the destination register index, while Rb is the content of a source register.
This comparison is invalid because it mixes register addressing (index) with register values (data).
As a result, the overflow flag (V) does not reflect the actual arithmetic overflow condition.