I have learned how to work with 80x86 assembler, so in bit-wise shift operation, I faced a problem with SAL and SHL usage. I means the difference between lines of code as follow :
MOV X, 0AAH
SAL X, 4
MOV X, 0AAH
SHL X, 4
When we should use SHL and when use SAL? What is the difference of them?
According to this, they are the same:
The shift arithmetic left (SAL) and shift logical left (SHL)
instructions perform the same operation; they shift the bits in the
destination operand to the left (toward more significant bit
locations). For each shift count, the most significant bit of the
destination operand is shifted into the CF flag, and the least
significant bit is cleared (see Figure 7-7 in the Intel®64 and IA-32
Architectures Software Developer'sManual, Volume 1).
Both were probably included just for completeness since there is a distinction for right-shifts.
There's no difference apart from Intel and AMD wanting to deprecate the duplicate SAL.
shl and sal are the same.They have same machine code.
shr and sar are NOT the same.They have almost same machine code.(but not)
Check this.
they work the same, since an arithmetic shift is the same as a bitwise shift when it's to the left (increasing). sar, on the other hand, will be different from shr if the sign bit is set.
They are the same if you use the left direction.
actually both are same ..!
but SAL Used when numeric multiplication is intended
EXAMPLE SAL:
Multiply AX by 8
MOV CL, 3
SAL AX, CL
BOTH ARE MOSTLY WORK SAME AND HAVE SAME MACHINE CODE
Please take a look at this:
http://en.wikibooks.org/wiki/X86_Assembly/Shift_and_Rotate
While SHL/SHR do an unsigned rotation, SAL/SAR do a signed rotation.