LSL AX,T
6-136
LSL AX,T Logical Shift Left by T(3:0)
SYNTAX OPTIONS OPCODE OBJMODE RPT CYC
LSL AX,T 1111 1111 0110 011A X − 1
Operands AX Accumulator high (AH) or accumulator low (AL) register
T Upper 16 bits of the multiplicand (XT) register
Description Perform a logical shift left on the content of the specified AX register by the
amount specified by the four least significant bits of the T register, T(3:0). The
contents of higher order bits are ignored. During the shift, the low order bits of
the AX register are zero filled. If the T(3:0) register bits specify a shift of 0,
then C is cleared; otherwise, C is filled with the last bit to be shifted out of AX:
0
C
AX
AX
Discard
other bits
Last bit out or cleared
Left shift
(Contents of T(3:0)
Flags and
Modes
N
After the shift, if bit 15 of AX is 1 then the negative flag bit is set; otherwise it is
cleared. Even if the T(3:0) register bits specify a shift of 0, the value of AH or
AL is still tested for the negative condition and N is affected.
Z
After the shift, if AX is 0, then the Z bit is set, otherwise it is cleared. Even if the
T(3:0) register bits specify a shift of 0, the value of AH or AL is still tested for
the zero condition and Z is affected.
C
If T(3:0) specifies a shift of 0, then C is cleared; otherwise, C is filled with the
last bit to be shifted out of AH or AL.
Repeat This instruction is not repeatable. If this instruction follows the RPT
instruction, it resets the repeat counter (RPTC) and executes only once.
Example
; Calculate value: VarC = VarA << VarB;
MOV T,@VarB ; Load T with contents of VarB
MOV AL,@VarA ; Load AL with contents of VarA
LSL AL,T ; Scale AL by value in T bits 0 to 3
MOV @VarC,AL ; Store result in VarC