The last time I did ASSEMBLER with shifts it is a known fact that intel processors
do not use the full operand for the shift..
In 32 bit mode only the lower 5 bits are used.
This of course will equal 32 if you do this, 2^5= 32 but, that also includes the
value 0 which does not do any shifting of course.
So what you end up with is a 31 shift level.
so what ever the operand value is would be this
Shift_Amount := Operand and $1F;
so if you do have overflows, expect the lower 5 bits only.
In the case of the BYTE and most likely even a WORD type, I would expect it to result to
0 with a 32 bit target, only because the bit limit can cover this.
with 64 processor I assume the bit limit is raised to 6 bits which still gives you the issue of
only being able to shift using the lower 6 bits = 63 times.