[Coco] assembly question
Barry Nelson
barry.nelson at amobiledevice.com
Sun Aug 9 06:59:09 EDT 2015
Really? Arg. I just wrote some code using bcc and it seemed to work after a decb, at least my code did not loop endlessly. I wonder how it managed to exit my loop? Probably something else inside my loop is setting the carry flag? I guess I had better use bge instead. Thanks for the info. Darn code quirks! You are sure right?
On Aug 9, 2015, at 1:18 AM, coco-request at maltedmedia.com wrote:
> Date: Sat, 08 Aug 2015 21:53:08 -0600
> From: William Astle <lost at l-w.ca>
> To: coco at maltedmedia.com
> Subject: Re: [Coco] assembly question
> Message-ID: <55C6CEA4.6040008 at l-w.ca>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> DEC doesn't set C (carry) so any branch that relies on the setting of C
> cannot be used meaningfully after DEC. That is the four "unsigned"
> branches. DEC does, however, set N, Z, and V which means the signed
> branches (which don't test C) do work as expected (since they use V, not C).
>
> The reason INC and DEC do not affect C is so that they can be used for
> iteration counting in multiple precision arithmetic.
>
> On 2015-08-08 21:32, K. Pruitt wrote:
>> I have an assembly question.
>>
>> How is the BCC operand any different than the BGE operand in the context
>> of using it on a counter?
>>
>> Here's the code example:
>>
>> ldb #$03
>> Loop stb Counter
>>
>> <do stuff here>
>>
>> decb
>> bcc Loop
>>
>> The idea is to take the counter from 3 to 0 and include 0 in the loop.
>> So four times through the loop.
>>
>> The code above does not work for me. However, this code does:
>>
>> ldb #$03
>> Loop stb Counter
>>
>> <do stuff here>
>>
>> decb
>> bge Loop
>>
>> The only difference is the bge instead of the bcc. From the description
>> I read in Leventhal's book, bcc and bge sound functionally identical in
>> this context.
>> But they are not.
More information about the Coco
mailing list