Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
SAL/SAR/SHL/SHR
◄Summary► ◄Detail► ◄Example► ◄Timings Key► ◄Encodings Key►
──────────────────────────────────────────────────────────────────────────────
1101000w mod,TTT*,r/m disp (0 or 2)
* TTT represents one of the following bit codes: 100 for SHL or SAL,
101 for SHR, or 111 for SAR.
───────────────────┬───────────────────────────┬────────────────────────────
SAR reg,1 │ sar di,1 │ 88/86 2
│ sar cl,1 │ 286 2
│ │ 386 3
───────────────────┼───────────────────────────┼────────────────────────────
SAL reg,1 │ shr dh,1 │ 88/86 2
SHL reg,1 │ shl si,1 │ 286 2
SHR reg,1 │ sal bx,1 │ 386 3
───────────────────┼───────────────────────────┼────────────────────────────
SAR mem,1 │ sar count,1 │ 88/86 15+EA (W88=23+EA)
│ │ 286 7
│ │ 386 7
───────────────────┼───────────────────────────┼────────────────────────────
SAL mem,1 │ sal WORD PTR m32[0],1 │ 80/86 15+EA (W88=23+EA)
SHL mem,1 │ shl index,1 │ 286 7
SHR mem,1 │ shr unsign[di],1 │ 386 7
───────────────────┴───────────────────────────┴────────────────────────────
1101001w mod,TTT*,r/m disp (0 or 2)
*TTT represents one of the following bit codes: 100 for SHL or SAL, 101
for SHR, or 111 for SAR.
─────────────────┬───────────────────────────┬────────────────────────────
SAR reg,CL │ sar bx,cl │ 88/86 8+4n
│ sar dx,cl │ 286 5+n
│ │ 386 3
─────────────────┼───────────────────────────┼────────────────────────────
SAL reg,CL │ shr dx,cl │ 88/86 8+4n
SHL reg,CL │ shl di,cl │ 286 5+n
SHR reg,CL │ sal ah,cl │ 386 3
─────────────────┼───────────────────────────┼────────────────────────────
SAR mem,CL │ sar sign,cl │ 88/86 20+EA+4n (W88=28+EA+4n)
│ sar WORD PTR [bp+8],cl │ 286 8+n
│ │ 386 7
─────────────────┼───────────────────────────┼────────────────────────────
SAL mem,CL │ shr WORD PTR m32[2],cl │ 88/86 20+EA+4n (W88=28+EA+4n)
SHL mem,CL │ sal BYTE PTR [di],cl │ 286 8+n
SHR mem,CL │ shl index,cl │ 386 7
─────────────────┴───────────────────────────┴──────────────────────────────
11000000w mod,TTT*,r/m disp (0 or 2) data (1)
*TTT represents one of the following bit codes: 100 for SHL or SAL,
101 for SHR, or 111 for SAR.
─────────────────┬───────────────────────────┬────────────────────────────
SAR reg,immed8 │ sar bx,5 │ 88/86 ─
│ sar cl,5 │ 286 5+n
│ │ 386 3
─────────────────┼───────────────────────────┼────────────────────────────
SAL reg,immed8 │ sal cx,6 │ 88/86 ─
SHL reg,immed8 │ shl di,2 │ 286 5+n
SHR reg,immed8 │ shr bx,8 │ 386 3
─────────────────┼───────────────────────────┼────────────────────────────
SAR mem,immed8 │ sar sign_count,3 │ 88/86 ─
│ sar WORD PTR [bx],5 │ 286 8+n
│ │ 386 7
─────────────────┼───────────────────────────┼────────────────────────────
SAL mem,immed8 │ shr mem16,11 │ 88/86 ─
SHL mem,immed8 │ shl unsign,4 │ 286 8+n
SHR mem,immed8 │ sal array[bx+di],14 │ 386 7
─────────────────┴───────────────────────────┴────────────────────────────
-♦-