[Coco] 6309 andcc z,v ?
robert.gault at worldnet.att.net
Mon Jun 11 22:47:05 EDT 2007
Roger Taylor wrote:
> While looking through an "as09.exe" assembler test file, I noticed the
> following line:
> andcc z,v ; alternate
> And the source code assembles without errors! You would think the
> author meant, "exg z,v" but even that is strange unless he means "0,v"
> since "0" is actually the name of a 6309 register. Actually, there's
> two 0 registers, so in CCASM I call them "0" and "00" I think. I might
> add the "z" name in case someone is used to it, but still... what the
> heck is andcc z,v, and what does it do?
> Examining the code stream, I see that the opcodes for the above
> instruction are:
> $1C $F9
> I'm not able right now to spend time running this through a debugger to
> watch the CPU registers, so if anyone wants to check this out and post
> your findings, please let us know what happens!
As others have stated, regCC has bits assigned E,F,H,I,N,Z,V,C. The
problem with that notation is interpreting what AND means in this context.
You can AND with either 0 or 1. The instruction ANDCC z,v is ambiguous
in that it does not indicate what value is being used. The Motorola
approved syntax is ANDCC #n and in this context the code could be either
ANDCC #%00000110 or ANDCC #%11111001. Both separate bits z,v from the
rest, but one keeps only z,v and the other keeps all but z,v.
Whatever as09.exe intended, this is not a syntax that should be used
with 6309 code where there actually is a V register.
More information about the Coco