| ??? 06/14/07 12:41 Modified: 06/14/07 12:42 Read: times |
#140752 - Comparing data with cjne... |
Long story short... I'm trying to write some code to compare 2 BCD dates in memory, one stored at 50h for 6 bytes, and one stored at 60h for 6 bytes. I want to compare year first, then month and so on. If the last used date is later than the date now then I know the RTC has been tampered with.
This was the best I could come up with, but it's ugly, and I'd rather it was a loop. Problem is, cjne only works with direct addresses or immediate data. Any thoughts?
Date DATA 50h ;Date now
Last_Used_Date DATA 60h ;Date application was last used
...
...
setb c ;Kill box if both dates are the same
mov R0, #Date ;Location of current date
mov a, R0
add a, #5 ;Location of current YY
mov R0, a
mov a, @R0
cjne a, 65h, Date_Diff ;65h is where old date YY is stored
dec R0
mov a, @R0
cjne a, 64h, Date_Diff ;64h is where old date MM is stored
dec R0
mov a, @R0
cjne a, 63h, Date_Diff ;65h is where old date DD is stored
dec R0
mov a, @R0
cjne a, 62h, Date_Diff ;65h is where old date hh is stored
dec R0
mov a, @R0
cjne a, 61h, Date_Diff ;65h is where old date mm is stored
dec R0
mov a, @R0
cjne a, 60h, Date_Diff ;65h is where old date ss is stored
Date_Diff:
jc KILLIT
LATER_THAN_LAST_USED:
|
| Topic | Author | Date |
| Comparing data with cjne... | 01/01/70 00:00 | |
| cjne a,direct,displacement | 01/01/70 00:00 | |
| Thanks | 01/01/70 00:00 | |
| it does | 01/01/70 00:00 | |
| Indeed | 01/01/70 00:00 | |
| Alternative solution | 01/01/70 00:00 | |
| Sure? | 01/01/70 00:00 | |
| Surely not. | 01/01/70 00:00 | |
That`s wrong | 01/01/70 00:00 | |
| you could as well use also direct RAM | 01/01/70 00:00 |



