**Operation:**

` `

Destination Shifted by <count> -->; Destination

**Assembler Syntax:**

` `

ASL Dx, Dy

` `

ASL #<data>, Dy

` `

ASL <ea>

**Attributes:** Size = (Byte, Word, Long, Quad)

**Description:** Arithmetically shifts the bits of the operand to the left.

` `

The carry bit receives the last bit shifted out of the operand. The

` `

shift count for the shifting of a register may be specified in two

` `

different ways:

` `

` `

1. Immediate -- The shift count is specified in the instr-

` `

` `

` `

uction (shift range 1-8).

` `

` `

2. Register -- The shift count is the value in the data reg-

` `

` `

` `

ister specified in instruction modulo 64.

` `

The size of the operation can be specified as byte, word, or long.

` `

An operand in memory can be shifted one bit only, and the operand

` `

size is restricted to word.

` `

Bits shifted out of the high-order bit go to both the carry and the

` `

extend bits; zeros are shifted into the low-order bit. The over-

` `

flow bit indicates if any sign changes occur during the shift.

**Condition Codes:**

` `

X Set according to the last bit shifted out of the operand.

` `

` `

Unaffected for a shift count of zero.

` `

N Set if the most significant bit of the result is set.

` `

` `

Cleared otherwise.

` `

Z Set if the result is zero. Cleared otherwise.

` `

V Set if the most significant bit is changed at any time during

` `

` `

the shift operation. Cleared otherwise.

` `

C Set according to the last bit shifted out of the operand.

` `

` `

Unaffected for a shift count of zero.