base:16-bit_comparison

This shows you the differences between two versions of the page.

Both sides previous revision Previous revision | |||

base:16-bit_comparison [2020-10-24 14:05] verz [TWW Method] |
base:16-bit_comparison [2020-10-27 00:34] (current) tww_ctr |
||
---|---|---|---|

Line 4: | Line 4: | ||

- | TWW method: | + | 16 bit equivalent of the CMP OPC: |

< | < | ||

/*! «»«»«»«»{CMP16}«»«»«»«» | /*! «»«»«»«»{CMP16}«»«»«»«» | ||

- | Does exactly the same as CMP of two values (effectively its a val1-val2) and sets the flags as follows: | + | Does exactly the same as CMP of two values (effectively its a A - M) and sets the flags as follows: |

- | | + | If A = M : Carry = SET Zero = SET |

- | If val1 = val2 : Carry = SET Zero = SET | + | If A > M : Carry = SET Zero = CLEAR Negative = CLEAR |

- | If val1 > val2 : Carry = SET Zero = CLEAR Negative = CLEAR | + | If A < M : Carry = CLEAR Zero = CLEAR Negative = SET |

- | If val1 < val2 : Carry = CLEAR Zero = CLEAR Negative = SET | + | |

*/ | */ | ||

- | lda val1 | + | lda A+1 |

- | ;sec | + | cmp M+1 |

- | ;sbc val2 | + | bne !+ |

- | cmp val2 | + | lda A |

- | php | + | cmp M |

- | lda val1+1 | + | !: |

- | sbc val2+1 | + | // Status register sorted, from here you can branch as you like as you would after a CMP opc. |

- | php | + | |

- | pla | + | |

- | sta temp | + | |

- | pla | + | |

- | ;and # | + | |

- | ora # | + | |

- | and temp | + | |

- | pha | + | |

- | plp | + | |

- | | + | |

- | | + | |

- | Somewhere on ZP: | + | |

- | temp: | + | |

- | .byte $00 | + | |

- | | + | |

</ | </ | ||

base/16-bit_comparison.txt · Last modified: 2020-10-27 00:34 by tww_ctr