[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ROL Instruction



Michael J. Mahon wrote:

> Bryan Parkoff wrote:
> 
>>    Why Motorola and Intel's ROL Instruction are not the same?
>>
>>    For example, Motorola rolates from $80 to $00.  The carry is turned
>>    on.
>>It has to rolate from $00 to $01 second time.  Intel can rolates from
>>$80 to
>>$01 once.  I wonder why Motorla has to rolate twice.  Is it the way how
>>Motorola is designed?
> 
> It is not unusual for instruction sets to have subtle differences
> in semantics.
> 
> I'm not an Intel (8080, 8088, x86) assembly language programmer,
> but I think that Intel generally offers _both_ kinds of rotates.
> The 6502 designers' philosophy was simplicity, and they
> only provided the "carry inclusive" rotates.
> 
> Taking the approach of including the carry bit in the circular
> shift allows very easy extension to shifts of quantities larger
> than one byte.  I find this much more useful than a rotate
> instruction that does not include carry.
> 
> If you want to simulate a ROL that does not include carry,
> it is only necessary to preset the carry bit to the high bit
> of the shifted byte.  For example, if the A register is being
> shifted, then preceding the ROL with a CMP #$80 will cause
> the ROL to shift the high bit to the low bit position.
> 
> -michael

Ah, Michael. You crack me up every time. Its like poetry, really, and
makes about as much sense to those of us who are members of the
tooth-picking, slack-jawed masses. 

Hey! I got your "carry-inclusive rotator cup" right here, Pal." Pass the
crayons, please. Is "#$80" a curse word?