I wonder why:

QA: "com x" <=> "sub 0xFF,x"

but:

"com x" => SREG_C set,

"sub 0xFF,x" => SREG_C cleared,

Is this SREG_C being set necessary in some (16-bit) operations? This is an exception and does not stick to standard algebraic rules.

What about:

QB: "asr x" and SREG_V=SREG_N^SREG_C? Where is it used in algebraic operations? Signed division and rounding towards zero?