I think, you mean "8 bits" not "6 bits", becouse DAC is 16 bit and DAC register is 8 bits.
No, I meant 6 bits. The output from the operator unit is a 14-bit value. This is shifted up by 2 to create the 16-bit output to the DAC. The DAC register gives an 8-bit value. This is shifted up by 8 to create the 16-bit output to the DAC. Comparing the maximum and minimum possible values from the DAC register (8-bit) with the output from the operator unit (14-bit), there's 6 less bits the DAC register is able to populate with significant data.
OTOH, it might be 8-bits afterall, depending on whether the operators are summed before they're converted to 16-bit values, or after. If the operator output is converted to a 16-bit value before each operator is summed, it would be possible for the lower 2 bits to be populated with meaningful data. If the operators were summed as 14-bit values, then the final value was shifted up by 2 when it's output to the DAC, the lower two bits would always be unset. I have yet to confirm which one is correct.
And to convert usigned 8 bit value to signed 8 bit value you need just do "XOR" by 0x80 (or just invert most significant bit).
You could, but I prefer to do the subtraction, as the processor will then perform sign extension and give a valid 2's compliment value even if you're using a datatype larger than 8-bit.