;; Test behaviour of flags during addition and subtraction ;; with a focus on the Overflow flag ;; 2023-08-29 ; http://teaching.idallen.com/dat2343/11w/notes/040_overflow.txt: ; ; > 1. If the sum of two numbers with the sign bits off yields a result number ; with the sign bit on, the "overflow" flag is turned on. ; > ; > 0100 + 0100 = 1000 (overflow flag is turned on) ; > ; > 2. If the sum of two numbers with the sign bits on yields a result number ; > with the sign bit off, the "overflow" flag is turned on. ; > ; > 1000 + 1000 = 0000 (overflow flag is turned on) ; > ; > Otherwise, the overflow flag is turned off. ; > * 0100 + 0001 = 0101 (overflow flag is turned off) ; > * 0110 + 1001 = 1111 (overflow flag is turned off) ; > * 1000 + 0001 = 1001 (overflow flag is turned off) ; > * 1100 + 1100 = 1000 (overflow flag is turned off) ;; Check simple addition and subtraction ; LDA 1 ; STO 0 ; LDA 1 ; ADD 1 ; LDA 1 ; ADD (0) ; LDA 3 ; SUB 1 ; LDA 3 ; SUB (0) ;; Check zero flag, negative flag ; LDA 0 ; LDA 255 ;; Check overflow flag LDA 0b01000000 ADD 0b01000000 ; 10000000 ; Overflow flag is on LDA 0b10000000 ADD 0b10000000 ; 00000000 ; Overflow flag is on ; > * 0100 + 0001 = 0101 (overflow flag is turned off) ; > * 0110 + 1001 = 1111 (overflow flag is turned off) ; > * 1000 + 0001 = 1001 (overflow flag is turned off) ; > * 1100 + 1100 = 1000 (overflow flag is turned off) LDA 0b01000000 ADD 0b00010000 ; 01010000 ; overflow off LDA 0b01100000 ADD 0b10010000 ; 11110000 ; overflow off LDA 0b10000000 ADD 0b00010000 ; 10010000 ; overflow off LDA 0b11000000 ADD 0b11000000 ; 10000000 ; overflow off