in wich modes ROR overwrites original data?

Topics pertaining to the emulation or simulation of the 65xx microprocessors and their peripheral chips.
Post Reply
ehguacho
Posts: 29
Joined: 24 Jun 2009

in wich modes ROR overwrites original data?

Post by ehguacho »

...that's what i'm wondering now while looking at the ROR behavior.

e.g.: ROR Accumulator:

Code: Select all

byte src; // just an unsigned 8-bit number

src = (ACC >> 1); // store the rotation temporary
if(C_FLAG) src |= 0x80; // if C was set, then set the #7 bit of the rotation's result
C_FLAG = ACC & 0x1;
Z_FLAG = !(src);
N_FLAG = !!(src & 0x80);
but it's only that? or i'm missing the...:

Code: Select all

ACC = src;
...final line?

in that case, flags are setted/reseted relying on the accumulator's (or whatever the source is) final value? or is it correct to change the flags BEFORE the original data gets overwriten?
sorry about my english, i'm from Argentina :S

http://felliniycia.comule.com/
User avatar
dclxvi
Posts: 362
Joined: 11 Mar 2004

Post by dclxvi »

Yes, you need the ACC=src line. With that line, it looks correct. The N and Z flags are always based on the final value (for any instruction that affects them), not the original value. For other addressing modes, you would read and write to the appropriate memory location rather than the accumulator, of course.
ehguacho
Posts: 29
Joined: 24 Jun 2009

Post by ehguacho »

...so it means that the instruction DO overwrite the original data, even in all the others addressing modes.

thanks a lot mate! :wink:
sorry about my english, i'm from Argentina :S

http://felliniycia.comule.com/
Post Reply