mov ax, 7FF0h
add al, 10h ; a) CF = 1, SF = 0, ZF = 1, OF = 0
add ah, 1 ; b) CF = 0, SF = 1, ZF = 0, OF = 1
add ax, 2 ; c) CF = ?, SF = ?, ZF = ?, OF = ?
a) F0 + 10 = 00 so the the ZF throws, but why the Carry (unsigned) over the the Overflow(signed)? I'd like to guess that it's because the result of "00" isn't signed given the high bit is 0 and not 1.
b) 7F + 01 = 80, and that's -128 signed, so why does it Overflow if it's within bounds of a signed byte?
Flags are probably so easy that asking this question could be considered an embarrassment.