Q1: MOV AL, 1h ; AL: 1 SUB AL, 2h ; AL: (AL) - 2 meaning AL: 1h - 2h = FFh Result: CF = 1, SF = 1, ZF = 0, OF = 0 0000 0001 0000 0010 (-) --------- ? ------------- Q2: MOV AH, 1h ; AH: 1 SUB AH, 1h meaning AH: 1h - 1h = 0h Result: CF = 0, SF = 0, ZF = 1, OF = 0 ------------- Q3: MOV AL, 1h ; AL: 1 ADD AL, FFh ; AL: (1+FF) meaning AL: 1h + (-1h) = 0h 0000 0001 1111 1111 (+) --------- Result: CF = 1, SF = 0, ZF = 1, OF = 0 ------------- Q4: MOV AL, 80h ; AL: 1 SUB AL, 1h ; AL: 7F (80h-1h) meaning AL: 80h - 1h = 7Fh [(-128) - 1 = -129] 1000 0000 0000 0001 (-) --------- 0111 1111 = 7F Result: CF = 0, SF = 0, ZF = 0, OF = 1 ------------- Q5: MOV AL, 7Fh ; +127 ADD AL, 2h ; plus 2 -> out of range Result: AL: 81h CF: 0 SF: 1 ZF: 0 OF: 1 ------------- Q6: MOV AL, FFh SUB AL, 2 ; FFh - 2h = ? ; FFh + (-2) = (-3) 1111 1111 0000 0010 (-) -------------------- 1111 1101 1111 1111 (-2) 1111 1110 (+) -------------------- (1)1111 1101 = FD Result: AL: FDh CF: 0 SF: 1 ZF: 0 OF: 0 ------------------ Q7: MOV AL, FFh ADD AL, 2 AL: 1 (-128 to 127) CF: 1 SF: 0 ZF: 0 OF: 0 ===================================================== Conclusion: (A) CF = ? (0/1) ADD op1, op2 (unsigned) op1 (unsigned) op2 + ----------------- (1) xxxx xxxx --> CF = 1 (0) xxxx xxxx --> CF = 0 SUB op1, op2 if (op1 < op2) --> CF = 1 else --> CF = 0 (B) OF = ? ADD/SUB op1, op2 ; if the result (signed operation) ; is out of [-128, 127] --> OF = 1 ; else --> OF = 0