CSC231 Pentium Instructions and Flags
This is taken from http://turkish_rational.tripod.com/trdos/pentium.txt
Notes on Intel(R) Pentium(TM) Processor
(c) Copyright Microsoft Corp. 1993
This file contains the following information:
- Implementation of the .586 and .586P directives
- New instructions for the Intel(R) Pentium(TM) processor
- Pentium clock cycles for all instructions
=============================================================================
.586 and .586P Directives
-------------------------
The .586 directive enables assembly of non-privileged instructions
available for the Pentium processor. The .586P directive enables
privileged instructions in addition to the non-privileged instructions
for the Pentium.
The following example demonstrates implementation of the .586 directive.
.model small, C
.586
.data
; .586 gives 110100111111y = 0D3Fh
; .586p gives 110110111111y = 0DBFh
var1 dw @cpu
IF @Cpu AND 0100000y
%echo Pentium instructions enabled.
ELSE
%echo Pentium instructions Not enabled.
ENDIF
end
=============================================================================
New Pentium Instructions
------------------------
The new Pentium instructions are extensions to the Intel486 instruction
set; for information on instructions for the 8086, 8088, 80286, 80386,
and 80486 processors, see Chapter 4, "Processor," in the Microsoft MASM
Reference. For additional information on the new Pentium instructions,
refer to you Intel documentation.
CMPXCHG8B Compare and Exchange 8 Bytes
Compares the 64-bit value in EDX:EAX with a 64-bit value in memory. If
they are equal, the 64-bit value in memory is replaced by the value in
ECX:EBX. Otherwise, the value in memory is loaded into EDX:EAX.
Flags: The ZF flag is set if the destination operand and EDX:EAX are
equal; otherwise it is cleared. The CF, PF, AF, SF, and OF flags are
unaffected.
Encoding: 00001111 11000111 mod 001 r/m
Syntax Example Clock Cycles
------ ------- -----------
CMPXCHG8B reg,mem64 cmpxchg8b ax,[bx] 10
-----------------------------------------------------------------------------
CPUID CPU Identification
Syntax: CPUID
Provides information to the software about the model of microprocessor
on which it is executing. An input value loaded into the EAX register
for this instruction indicates what information should be returned by
the CPUID instruction.
Following execution of the CPUID instruction with zero in EAX, the EAX
register contains the highest input value understood by the CPUID
instruction. For the Pentium, the value in EAX will be 1. Also included
in this output is a vendor identification string contained in EBX, EDX,
and ECX. EBX contains the first four characters, EDX the next four, and
ECX the last four. For Intel processors, the vendor identification string
is "GenuineIntel".
Following execution of the CPUID instruction with input value 1 in EAX,
EAX[3:0] contains the stepping ID of the microprocessor, EAX[7:4]
contains the model (the first model will be indicated by 0001B) and
EAX[11:8] contains the family (5 for the Pentium). EAX[31:12], EBX, and
ECX are reserved. The Pentium processor sets the feature register, EDX,
to 1BFH, indicating which features the Pentium supports. A feature flag
set to 1 indicates that the corresponding feature is supported.
Flags: No flags affected.
Encoding: 00001111 10100010
Syntax Example Clock Cycles
------ ------- -----------
CPUID cpuid 14
-----------------------------------------------------------------------------
MOV Move to/from Control Registers
Store or load the Control Registers (CR0, CR2, CR3, CR4) to or from a
general purpose register.
Flags: The OF, SF, ZF, AF, PF, and CF flags are undefined.
Encoding: 00001111 00100010 11 eee reg (Move to Control Register)
Syntax Example Clock Cycles
------ ------- -----------
MOV reg32,controlreg mov cr0,eax 22
mov cr2,eax 12
mov cr3,eax 21,46
mov cr4,eax 14
Encoding: 00001111 00100000 11 eee reg (Move from Control Register)
Syntax Example Clock Cycles
------ ------- -----------
MOV controlreg,reg32 mov eax,cr0 4
-----------------------------------------------------------------------------
RDMSR Read from Model-Specific Register
The value in ECX specifies one of the 64-bit Model-Specific Registers of
the Pentium processor. The content of that Model-Specific Register is
copied into EDX:EAX. EDX is loaded with the high-order 32 bits, and EAX
is loaded with the low-order 32 bits.
Flags: No flags affected.
Encoding: 00001111 00110010
Syntax Example Clock Cycles
------ ------- -----------
RDMSR rdmsr 20-24
-----------------------------------------------------------------------------
RDTSC Read from Time Stamp Counter
Copies the contents of the Time Stamp Counter (TSC) into EDX EAX. (The
Pentium maintains a 64-bit Time Stamp Counter (TSC) that is incremented
every clock cycle.) When the Current Privilege Level is 0, the state of
the TSD bit in CR4 does not affect the operation of this instruction.
When the CPL is equal to 1, 2, or 3, the TSC may be read only if the TSD
bit in CR4 is 0. Only a supervisor level program may modify the value of
the TSC.
Flags: No flags affected.
Encoding: 00001111 00110001
Syntax Example Clock Cycles
------ ------- -----------
RDTSC rdtsc 6, 11
-----------------------------------------------------------------------------
RSM Resume from System Management Mode
The processor state is restored from the dump created upon entrance to
System Management Mode. However, the contents of the model-specific
registers are not affected. The processor leaves SMM and returns control
to the interrupted application or operating system. If the processor
detects any invalid state information, it enters the shutdown state.
Flags: All flags are affected.
Encoding: 00001111 10101010
Syntax Example Clock Cycles
------ ------- -----------
RSM rsm 83
-----------------------------------------------------------------------------
WRMSR Write to Model-Specific Register
The value in ECX specifies one of the 64-bit Model-Specific Registers of
the Pentium processor. The content of EDX:EAX is copied to that Model-
Specific Register. The high-order 32 bits are copied from EDX, and the
low-order 32 bits are copied from EAX.
Flags: No flags affected.
Encoding: 00001111 00110000
Syntax Example Clock Cycles
------ ------- -----------
WRMSR wrmsr 30-45
=============================================================================
Pentium Clock Cycles
--------------------
The following table contains clock cycles information for all Intel
Pentium processor instructions. For more detailed information on clock
cycles for these instructions, see your Intel documentation. For more
general information on these instructions, see Chapter 4, "Processor,"
and Chapter 5, "Coprocessor," in the Microsoft MASM Reference.
Instruction Syntax Example Clock Cycles
------------------ ------- ------------
AAA aaa 3
AAD aad 10
AAM aam 18
AAS aas 3
ADC reg,reg adc dx,cx 1
ADC mem,reg adc WORD PTR m16[2],dx 3
ADC reg,mem adc dx,DWORD PTR m32[2] 2
ADD reg,reg add ax,bx 1
ADD mem,reg add total, cx 3
ADD reg,mem add cx,incr 2
ADD reg,immed add bx,6 1
ADD mem,immed add pointers[bx][si],6 3
ADD accum,immed add ax,10 1
AND reg,reg and dx,bx 1
AND mem,reg and bitmask,bx 3
AND reg,mem and bx,masker 2
AND reg,immed and dx,0F7h 1
AND mem,immed and masker,100lb 3
AND accum,immed and ax,0B6h 1
ARPL reg,reg arpl ax,cx pm=7
ARPL mem,reg arpl selector,dx pm=7
BOUND reg16,mem32 bound di,base-4 8 (within bounds);
int+32 (out of bounds)
BOUND reg32,mem64 bound di,base-4 8 (within bounds);
int+32 (out of bounds)
BSF reg16,reg16 bsf cx,bx 6-34
BSF reg32,reg32 bsf cx,bx 6-42
BSF reg16,mem16 bsf ecx,bitmask 6-35
BSF reg32,mem32 bsf ecx,bitmask 6-43
BSR reg16,reg16 bsr cx,dx 7-39
BSR reg32,reg32 bsr cx,dx 7-71
BSR reg16,mem16 bsr eax,bitmask 7-40
BSR reg32,mem32 bsr eax,bitmask 7-72
BSWAP reg32 bswap ebx 1
BT reg16,immed8* bt ax,4 4
BT mem16,immed8* bt [bx],4 4
BT reg16,reg16* bt ax,bx 4
BT mem16,reg16* bt [bx],dx 9
* Operands can also be 32 bits
BTC reg16,immed8* btc edi,4 7
BTC mem16,immed8* btc color[di],4 8
BTC reg16,reg16* btc eax,ebx 7
BTC mem16,reg16* btc [bp+8],si 13
* Operands can also be 32 bits
BTR reg16,immed8* btr bx,17 7
BTR mem16,immed8* btr [bx],27 8
BTR reg16,reg16* btr cx,di 7
BTR mem16,reg16* btr rotate,cx 13
* Operands can also be 32 bits
BTS reg16,immed8* bts ax,4 7
BTS mem16,immed8* bts maskit,4 8
BTS reg16,reg16* bts bx,ax 7
BTS mem16,reg16* bts flags[bx],cx 13
* Operands can also be 32 bits
CALL label call upcase 1
call distant 4
CALL reg call ax 2
CALL mem32 call [bx] 2
CALL mem32 call DWORD PTR [bx] 5
CBW cbw 3
CDQ cdq 2
CLC clc 2
CLD cld 2
CLI cli 7
CLTS clts 10
CMC cmc 2
CMP reg,reg cmp dl,cl 1
CMP mem,reg cmp array[si],bl 2
CMP reg,mem cmp bh,array[si] 2
CMP reg,immed cmp bx,24 1
CMP mem,immed cmp tester,4000 2
CMP accum,immed cmp ax,1000 1
CMPS [segreg:] src,
[ES:] dest cmps source,es:dest 5
CMPSB [[segreg:[src,]
ES:] dest] cmpsb 5
CMPSW [[segreg:[src,]
ES:] dest] cmpsw 5
CMPSD [[segreg:[src,]
ES:] dest] cmpsd 5
CMPXCHG mem,reg cmpxchg string,bl 6
CMPXCHG reg,reg cmpxchg bx,cx 6
CMPXCHG8B reg,mem64 cmpxchg8b ax,[bx] 10
CPUID cpuid 14
CWD cwd 2
CWDE cwde 3
DAA daa 3
DAS das 3
DEC reg dec ax 1
DEC mem dec counter 3
DIV reg div cx byte=17, word=25,
DIV mem div [bx] dword=41
ENTER immed16,0 enter 4,0 11
ENTER immed16,1 enter 0,1 15
ENTER immed16,immed8 enter 6,4 15+2imm8
F2XM1 fm2xi 13-57
FABS fabs 1
FADD [reg,reg] fadd 3, 1
FADD memreal fadd shortreal 3, 1
FADDP reg,ST faddp st(6),st 3, 1
FIADD memint fiadd int16 7, 4
FBLD membcd fbld packbck 48-58
FBSTP membcd fbstp bcds[bx] 148-154
FCHS fchs 1
FCLEX fclex 9+
FNCLEX fnclex 9
FCOM fcom 4, 1
FCOMP fcomp 4, 1
FCOMPP fcompp 4, 1
FICOM memint ficom double 8, 4
FICOMP memint ficomp darray[di] 8, 4
FCOS fcos 18-124
FDECSTP fdecstp 1
FDIV [reg,reg] fdiv st(5),st 39
FDIV memreal fdiv longreal 39
FDIVP reg,ST fdivp st(6),st 39
FIDIV memint didiv warray[di] 42
FDIVR [reg,reg] fdivr st(5),st 39
FDIVR memreal fdivr longreal 39
FDIVRP reg,ST fdivrp st(6),st 39
FIDIVR memint didivr warray[di] 42
FFREE ST(i) ffree st(3) 1
FILD memint fild quads[si] 3, 1
FINCSTP fincstp 1
FINIT finit 16
FNINIT fninit 12
FIST memint fist doubles[8] 6
FISTP memint fistp longint 6
FLD reg fld st(3) 1
FLD mem32real fld longreal 1
FLD mem64real 1
FLD mem80real 3
FLD1 fld1 2
FLDZ fldz 2
FLDPI fldpi 5, 3
FLDL2E fldl2e 5, 3
FLDL2T fldl2t 5, 3
FLDLG2 fldlg2 5, 3
FLDLN2 fldln2 5, 3
FLDCW mem16 fldcw ctrlword 7
FLDENV mem fldenv [bp+10] 37, 16-bit pm=32,
32-bit pm=33
FMUL [reg,reg] fmul st(5),st 3, 1
FMULP reg,ST fmulp st(6),st 3, 1
FIMUL memint fimul warray[di] 7, 4
FNOP fnop 1
FPATAN fpatan 17-173
FPREM fprem 16-64
FPREM1 fprem1 20-70
FPTAN fptan 17-173
FRNDINT frndint 9-20
FRSTOR mem frstor [bp-94] 16-bit rm or vm=75;
32-bit rm or vm=95;
pm=70
FSAVE mem fsave [bp-94] 16-bit rm or vm=127+;
32-bit rm or vm=151+;
pm=124+
FNSAVE mem fnsave [bp-94] 16-bit rm or vm=127;
32-bit rm or vm=151;
pm=124
FSCALE fscale 20-31
FSIN fsin 16-126
FSINCOS fsincos 17-137
FSQRT fsqrt 70
FST reg fst st 1
FST memreal fst longs[bx] 2
FSTP reg fstp st(3) 1
FSTP mem32real fstp longreal 2
FSTP mem64real 2
FSTP mem80real 3
FSTCW mem16 fstcw ctrlword 2+
FNSTCW mem16 fnstcw ctrlword 2
FSTENV mem fstenv [bp-14] 16-bit rm or vm=50+;
32-bit rm or vm=48+;
16-bit pm=49+;
32-bit pm=50+
FNSTENV mem fnstenv [bp-14] 16-bit rm or vm=50;
32-bit rm or vm=48;
16-bit pm=49;
32-bit pm=50
FSTSW mem16 fstsw statword 2+
FSTSW AX fstsw ax 2+
FNSTSW mem16 fnstsw statword 2
FNSTSW AX fnstsw ax 2
FSUB [reg,reg] fsub st,st(2) 3, 1
FSUB memreal fsub longreal 3, 1
FSUBP reg,ST fsubp st(6),st 3, 1
FISUB memint fisub double 7, 4
FSUBR [reg,reg] fsubr st,st(2) 3, 1
FSUBR memreal fsubr longreal 3, 1
FSUBRP reg,ST fsubrp st(6),st 3, 1
FISUBR memint fisubr double 7, 4
FTST ftst 4, 1
FUCOM [reg] fucom st(2) 4, 1
FUCOMP [reg] fucomp st(7) 4, 1
FUCOMPP fucompp 4, 1
FWAIT fwait 1-3
FXAM fxam 21
FXCH [reg] fxchg st(3) 1
FXTRACT fxtract 13
FYL2X fyl2x 22-111
FYL2XP1 fyl2xp1 22-103
HLT hlt 12
IDIV reg idiv dl 8-bit=22; 16-bit=30;
IDIV mem idiv itemp 32-bit=46
IMUL reg imul dx 11
IMUL mem imul factor 11
IMUL reg,immed imul cx,25 10
IMUL reg,reg,immed imul dx,ax,18 10
IMUL reg,mem,immed imul bx,[si],60 10
IMUL reg,reg imul cx,ax 10
IMUL reg,mem imul dx,[si] 10
IN accum,immed in ax,60h 7, pm=4,21*, vm=19
IN accum,DX in ax,dx 7, pm=4,21*, vm=19
(*First protected mode timing: CPL < or = IOPL. Second timing: CPL > IOPL.)
INC reg inc bx 1
INC mem inc vpage 3
INS [ES:]dest, DX ins es:instr,dx 9, pm=6,24*, vm=22
INSB insb 9, pm=6,24*, vm=22
INSW insw 9, pm=6,24*, vm=22
INSD insd 9, pm=6,24*, vm=22
(*First protected mode timing: CPL < or = IOPL. Second timing: CPL > IOPL.)
INT immed8 int 25h 16, pm=31,48*
INT 3 int 3 13, pm=27,44*
INTO into 13, pm=27,44*
(*First protected mode timing is for interrupts to the same privilege
level. The second is for interrupts to a higher privilege level.)
INVD invd 15
INVLPG invlpg es:entry 25
IRET iret 8*,10, pm=27
IRETD iretd 10, pm=27
IRETF iretf
IRETDF iretdf
(* Real or V86 mode.)
Jcondition label je next 1
JCXZ label jcxz not found 6,5
JECXZ label 6,5
JMP label jmp NEAR PTR distant 1
jmp distant 3
JMP reg16 jmp ax 2
JMP mem16 jmp table[di] 2
JMP reg32 jmp eax 3
JMP mem32 jmp fpointer[si] 2
JMP mem48 jmp FWORD PTR [di] 4
LAHF lahf 2
LAR reg,reg lar ax,bx 8
LAR reg,mem lar cx,selector 8
LDS reg,mem lds si,fpointer 4
LES reg,mem les di,fpointer 4
LFS reg,mem lfs edi,fpointer 4
LGS reg,mem lgs bx,fpointer 4
LSS reg,mem lss bp, fpointer 4, pm=8
LEA reg,mem lea bx,npointer 1
LEAVE leave 3
LGDT mem48 lgdt descriptor 6
LIDT mem48 lidt descriptor 6
LLDT reg16 lldt ax 9
LLDT mem16 lldt selector 9
LMSW reg16 lmsw ax 8
LMSW mem16 lmsw machine 8
LOCK lock 1
LODS [segreg:]src lods es:source 2
LODSB [[segreg:]src] lodsb 2
LODSW [[segreg:]src] lodsw 2
LODSD [[segreg:]src] lodsd 2
LOOP label loop wend 5, 6
LOOPE label loope again 7, 8
LOOPZ label loopz again 7, 8
LOOPNE label loopne for_next 7, 8
LOOPNZ label loopnz for_next 7, 8
LSL reg,reg lsl ax,bx 8
LSL reg,mem lsl cx,seg_lim 8
LTR reg16 ltr ax 10
LTR mem16 ltr task 10
MOV reg,reg mov bp,sp 1
MOV mem,reg mov array[di],bx 1
MOV reg,mem mov bx,pointer 1
MOV mem,immed mov [bx],15 1
MOV reg,immed mov cx,256 1
MOV mem,accum mov total,ax 1
MOV accum,mem mov al,string 1
MOV segreg,reg16 mov ds,ax 2, 3
MOV segreg,mem16 mov es,psp 2, 3
MOV reg16,segreg mov ax,ds 1
MOV mem16,segreg mov stack_save,ss 1
MOV reg32,controlreg mov eax,cr0 22
mov eax,cr2 12
mov eax,cr3 21, 46
mov eax,cr4 14
MOV controlreg,reg32 mov cr0,eax 4
MOV reg32,debugreg mov edx,dr0 DR0-DR3,DR6,DR7=11;
DR4,DR5=12
MOV debugreg,reg32 mov dr0,ecx DR0-DR3,DR6,DR7=11;
DR4,DR5=12
MOVS [ES:]dest,
[segreg:]src movs dest,es:source 4
MOVSB [[ES:]dest,
[segreg:]src] movsb 4
MOVSW [[ES:]dest,
[segreg:]src] movsw 4
MOVSD [[ES:]dest,
[segreg:]src] movsd 4
MOVSX reg,reg movsx bx,al 3
MOVSX reg,mem movsx eax,bsign 3
MOVZX reg,reg movzx bx,al 3
MOVZX reg,mem movzx eax,bunsign 3
MUL reg mul bx 8,16-bit=11;
MUL mem mul WORD PTR [bx] 32-bit=10
NEG reg neg ax 1
NEG mem neg balance 3
NOP nop 1
NOT reg not ax 1
NOT mem not masker 3
OR reg,reg or ax,dx 1
OR mem,reg or bits,dx 3
OR reg,mem or dx,color[di] 2
OR reg,immed or dx,110110b 1
OR mem,immed or flag_rec,8 3
OR accum,immed or ax,40h 1
OUT immed8,accum out 60h,al 12, pm=9,26, VM=24
OUT DX,accum out dx,ax 12, pm=9,25 VM=24
OUTS DX,[segreg:]src outs dx,buffer 13, pm=10,27, VM=24
OUTSB [DX,[segreg:]src] outsb 13, pm=10,27, VM=24
OUTSW [DX,[segreg:]src] outsw 13, pm=10,27, VM=24
OUTSD [DX,[segreg:]src] outsd 13, pm=10,27, VM=24
POP reg pop cx 1
POP mem pop param 3
POP segreg pop es 3
POPA popa 5
POPAD popad 5
POPF popf 6, pm=4
POPFD popfd 6, pm=4
PUSH reg push dx 1
PUSH mem push [di] 2
PUSH segreg push es 1
PUSH immed push 15000 1
PUSHA pusha 5
PUSHAD pushad 5
PUSHF pushf 4, pm=3
PUSHFD pushfd 4, pm=3
RCL reg,1 rcl dx,1 1
RCL mem,1 rcl WORD PTR [si],1 3
RCL reg,CL rcl dx,cl 7-24
RCL mem,CL rcl masker,cl 9-26
RCL reg,immed8 rcl bx,5 8-25
RCL mem,immed8 rcl WORD PTR [bp+8],3 10-27
RCR reg,1 rcr bl,1 1
RCR mem,1 rcr WORD PTR m32[0],1 3
RCR reg,CL rcr bl,cl 7-24
RCR mem,CL rcl WORD PTR [bx=di],cl 9-26
RCR reg,immed8 rcr si,9 8-25
RCR mem,immed8 rcr masker,3 10-27
ROL reg,1 rol ax,1 1
ROL mem,1 rol bits,1 3
ROL reg,CL rol ax,cl 4
ROL mem,CL rol color,cl 4
ROL reg,immed8 rol ax,13 1
ROL mem,immed8 rol BYTE PTR [bx],10 3
ROR reg,1 ror ax,1 1
ROR mem,1 ror WORD PTR [bx],1 3
ROR reg,CL ror dx,cl 4
ROR mem,CL ror color,cl 4
ROR reg,immed8 ror bl,3 1
ROR mem,immed8 ror bits,6 3
RDMSR rdmsr 20-24
REP INS dest,DX rep ins dest,dx 11+3n, pm=(8,25)+3n*
REP MOVS dest,src rep movs dest,source 6, 13n
REP OUTS DX,src rep outs dx,source 13+4n, pm=(10,27)+4n*
REP LODS dest rep lods dest 7, 7+3n
REP STOS dest rep stos dest 6, 9+3n
(*First protected mode timing: CPL < or = IOPL. Second timing: CPL > IOPL.)
REPE CMPS src,dest repe cmps src,dest 7, 9+4n
REPE SCAS dest repe scas dest 7, 9+4n
REPNE CMPS src,dest repne cmps src,dest 7, 8+4n
REPNE SCAS dest repne scas dest 7, 9+4n
RETN retn 2
RETN immed16 retn 8 3
RETF retf 4, 23
RETF immed16 retf 32 4, 23
RSM rsm 83
SAHF sahf 2
SAL reg,1 sal bx,1 1
SAL mem,1 sal WORD PTR m32[0],1 3
SAL reg,CL sal ah,cl 4
SAL mem,CL sal BYTE PTR [di],cl 4
SAL reg,immed sal cx,6 1
SAL mem,immed sal array[bx+di],14 3
SAR reg,1 sar di,1 1
SAR mem,1 sar count,1 3
SAR reg,CL sar bx,cl 4
SAR mem,CL sar sign,cl 4
SAR reg,immed sar bx,5 1
SAR mem,immed sar sign_count,3 3
SHL reg,1 shl si,1 1
SHL mem,1 shl index,1 3
SHL reg,CL shl di,cl 4
SHL mem,CL shl index,cl 4
SHL reg,immed shl di,2 1
SHL mem,immed shl unsign,4 3
SHR reg,1 shr dh,1 1
SHR mem,1 shr unsign[di],1 3
SHR reg,CL shr dx,cl 4
SHR mem,CL shr WORD PTR m32[2],cl 4
SHR reg,immed shr bx,8 1
SHR mem,immed shr mem16,11 3
SBB accum,immed sbb ax,320 1
SBB reg,immed sbb dx,45 1
SBB mem,immed sbb WORD PTR m32[2],40 3
SBB reg,reg sbb dx,cx 1
SBB mem,reg sbb WORD PTR m32[2],dx 3
SBB reg,mem sbb dx,WORD PTR m32[2] 2
SCAS [ES]dest scas es:destin 4
SCASB scasb 4
SCASW scasw 4
SCASD scasd 4
SETcondition reg8 setc dh 1
SETcondition mem8 setle flag 2
SGDT mem48 sgdt descriptor 4
SIDT mem48 sidt descriptor 4
SHLD reg16,reg16,immed8 shld ax,dx,10 4
SHLD reg32,reg32,immed8
SHLD mem16,reg16,immed8 shld bits,cx,5 4
SHLD mem32,reg32,immed8
SHLD reg16,reg16,CL shld ax,dx,cl 4
SHLD reg32,reg32,CL
SHLD mem16,reg16,CL shld masker,ax,cl 5
SHLD mem32,reg32,CL
SHRD reg16,reg16,immed8 shrd cx,si,3 4
SHRD reg32,reg32,immed8
SHRD mem16,reg16,immed8 shrd [di],dx,5 4
SHRD mem32,reg32,immed8
SHRD reg16,reg16,CL shrd ax,dx,cl 4
SHRD reg32,reg32,CL
SHRD mem16,reg16,CL shrd [bx],ax,cl 5
SHRD mem32,reg32,CL
SLDT reg16 sldt ax 2
SLDT mem16 sldt selector 2
SMSW reg16 smsw ax 4
SMSW mem16 smsw machine 4
STC stc 2
STD std 2
STI sti 7
STOS [ES:]dest stor es:dstring 3
STOSB [[ES:]dest] stosb 3
STOSW [[ES:]dest] stosw 3
STOSD [[ES:]dest] stosd 3
STR reg16 str cx 2
STR mem16 str taskreg 2
SUB reg,reg sub ax,bx 1
SUB mem,reg sub array[di],bi 3
SUB reg,mem sub al,[bx] 2
SUB reg,immed sub bl,7 1
SUB mem,immed sub total,4000 3
SUB accum,immed sub ax,32000 1
TEST reg,reg test dx,bx 1
TEST mem,reg test flags,dx 2
TEST reg,immed test cx,30h 1
TEST mem,immed test masker,1 2
TEST accum,immed test ax,90h 1
VERR reg16 verr ax 7
VERR mem16 verr selector 7
VERW reg16 verw cx 7
VERW mem16 verw selector 7
WAIT wait 1
WBINVD wbinvd 2000+
WRMSR wrmsr 30-45
XADD reg,reg xadd dl,al 3
XADD mem,reg xadd string,bl 4
XCHG reg,reg xchg cx,dx 3
XCHG reg,mem xchg bx,pointer 3
XCHG mem,reg xchg [bx],ax 3
XCHG accum,reg xchg ax,cx 2
XCHG reg,accum xchg cx,ax 2
XLAT [[segreg:]mem] xlat 4
XLATB [[segreg:]mem] xlatb es:table 4
XOR reg,reg xor cx,bx 1
XOR reg,mem xor cx,flags 2
XOR mem,reg xor [bp+10],cx 3
XOR reg,immed xor bl,1 1
XOR mem,immed xor switches[bx],101b 3
XOR accum,immed xor ax,01010101b 1