This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
base:16-bit_comparison [2020-10-27 00:34] – tww_ctr | base:16-bit_comparison [2021-09-13 17:23] (current) – New version didn't pass all validation tests. Reverted to old version. tww | ||
---|---|---|---|
Line 5: | Line 5: | ||
16 bit equivalent of the CMP OPC: | 16 bit equivalent of the CMP OPC: | ||
+ | |||
< | < | ||
/*! «»«»«»«»{CMP16}«»«»«»«» | /*! «»«»«»«»{CMP16}«»«»«»«» | ||
- | Does exactly the same as CMP of two values (effectively its a A - M) and sets the flags as follows: | + | Does exactly the same as CMP of two values (effectively its a val1-val2) and sets the flags as follows: |
- | | + | |
- | If A > M : Carry = SET Zero = CLEAR Negative = CLEAR | + | |
- | If A < M : Carry = CLEAR Zero = CLEAR Negative = SET | + | If val1 > val2 : Carry = SET Zero = CLEAR Negative = CLEAR |
+ | If val1 < val2 : Carry = CLEAR Zero = CLEAR Negative = SET | ||
*/ | */ | ||
- | lda A+1 | + | lda val1 |
- | | + | sec |
- | | + | sbc val2 |
- | lda A | + | php |
- | cmp M | + | lda val1+1 |
- | !: | + | |
- | | + | |
+ | pla | ||
+ | sta temp | ||
+ | pla | ||
+ | and # | ||
+ | ora # | ||
+ | and temp | ||
+ | pha | ||
+ | plp | ||
+ | |||
+ | |||
+ | Somewhere on ZP: | ||
+ | temp: | ||
+ | .byte $00 | ||
+ | |||
</ | </ | ||
+ | |||