|
|
coherent
+ 0 # # Operand production table. # Productions starting with [.bB] are base types in actual tables # Productions starting with [!eE] are extra types used for test purposes # [be] are 16 bit productions [BE] are 32 bit and [.!] are both # # The first productions on the list are valid productions # Then there is a ? and invalid productions to test the assemblers # error conditions. # . r8 %al %cl %dl %bl %ah %ch %dh %bh ? 0xa $0xa b r16 %ax %cx %dx %bx %sp %bp %si %di ? %al 0xa $0xa B r32 %eax %ecx %edx %ebx %esp %ebp %esi %edi ? %al 0xa $0xa . rm8 r8 0x3e8 vv vd ? r16 r32 $0x64 b rm16 r16 0x3e8 vv vd ? r8 r32 $0x64 B rm32 r32 0x3e8 vv vd ? r16 r8 $0x64 . m8 0x10 vv vd ? r8 $0x64 b m16 0x3e8 vv vd ? r8 r32 $0x64 B m32 0x3e8 vv vd ? r16 r8 $0x64 B m64 0x3e8 vv vd ? r16 r8 $0x64 B m80 0x3e8 vv vd ? r16 r8 $0x64 . mem32 abc . mem16 abc . reli . abc ? al . rel8 . ? %al . rel16 abc . al %al ? %bl b ax %ax ? %bx B eax %eax ? %ebx . ds %ds . es %es . ss %ss . fs %fs . gs %gs . cs %cs . cl %cl . atdx (%dx) . moffs mem16 . sreg %es %cs %ss %ds %fs %gs ? $0x64 . st0 %st . dx %dx B ctlreg %cr0 %cr2 %cr3 ? %ss B dbreg %dr0 %dr1 %dr2 %dr3 %dr6 %dr7 ? %cr0 B treg %tr6 %tr7 ? %ax %cr0 B fpreg %st %st(0) %st(1) %st(2) %st(3) %st(4) %st(5) %st(6) %st(7) ? %eax B imm32 $0x186a0 B imm32x $0 ? %bx . imm16 $0x3e8 ? $0x186a0 . imm16x $0 ? %ax . imm8 $0x64 ? $0x3e8 . imm8s $064 $-5 ? 128 . con3 $3 ? 4 . con1 $1 ? 5 E va %eax %ecx %edx %ebx %esi %edi E vb %eax %ecx %edx %ebx %ebp %esi %edi E vd (va) 0x64(vb) 0x186a0(vb) (,vb,vs) (vb,vb,vs) 0x64(vb,vs) 0x3e8(vb,vb,vs) \ (vb,vs) (vb,vb) 0x4(vb,vb) E vs 0 1 2 4 8 e vv (vx,vy) (vz) 0x64(vx,vy) 0x64(vw) 0x3e8(vx,vy) 0x3e8(vw) e vw %si %di %bp %bx e vx %bx %bp e vy %si %di e vz %si %di %bx # # The First Operand contains the following flags: # G Generic opcode if given a name, no generic opcode otherwise. # w Word moded instruction. # d Double word moded instruction. # F Floating point instruction. # f Floating 9b prefix. # p 0F prefix. # a Add register to opcode. # 0-8 Second byte of code goes into mod/rm location Set into groups for dis # i Indefinate jump. # L lock instruction. # l Legal after lock instruction. # R rep instruction. # r Legal after rep instruction. # t Special two operand imult. # P use /r on document. no other use. # X May have mixed word and double word operand. # A Ambiguous length construction. # + 1 # Opcode table - type, hex value, opcode, operands G # opcodes with no general form - 0037 aaa # Adjust after addition - d50a aad # Adjust AX before division - d40a aam # Adjust AX after multiply - 003f aas # Adjust AL after subtraction P 0063 arpl r16 rm16 # Adjust RPL field of selector i 00e8 call reli # Call Procedure w 0098 cbw # Sign extend AL w 0098 cbtw # Sign extend AL d 0098 cwde # Sign extend AX d 0098 cwtl # Sign extend AX - 00f8 clc # Clear carry - 00fc cld # Clear direction Flag - 00fa cli # Clear interrupt Flag p 0006 clts # Clear task-switched flag in CR0 - 00f5 cmc # Complement carry flag r 00a6 cmpsb # Compare bytes wr 00a7 cmpsw # Compare words dr 00a7 cmpsl # Compare long w 0099 cwd # Word to double word w 0099 cwtd # Word to double word d 0099 cdq # Double word to quad word d 0099 cltd # Double word to quad word - 0027 daa # Decimal adjust after addition - 002f das # Decimal adjust after subtraction - 00c8 enter imm8 imm16 # Make stack frame for procedure F d9f0 f2xm1 # ST = 2 ** ST - 1 F d9e1 fabs # ST = abs(ST) 0F df04 fbld m80 # Load Binary Coded Decimal 0F df06 fbstp m80 # Store Binary Coded Decimal and Pop F d9e0 fchs # Change Floating Sign F ded9 fcompp # Floating Compare and pop twice F d9ff fcos # Cosine F d9f6 fdecstp # Decrement Stack Top Pointer aF ddc0 ffree fpreg # Free Floating Point Register F d9f7 fincstp # Increment Stack Top Pointer 0F d905 fldcw m32 # Load Floating Point Control Word 0F d904 fldenv m32 # Load FPU Environment F d9e8 fld1 # Load Constant 1 F d9e9 fldl2t # Load Constant log(10) base 2 F d9ea fldl2e # Load Constant log(e) base 2 F d9eb fldpi # Load Constant pi F d9ec fldlg2 # Load Constant log(2) base 10 F d9ed fldln2 # Load Constant log(2) base e F d9ee fldz # Load Constant 0.0 F dbe2 fnclex # Clear floating point exception flags no wait fF dbe2 fclex # Clear floating point exception flags F dbe3 fninit # Initialize Floating Point Unit no wait fF dbe3 finit # Initialize Floating Point Unit F d9d0 fnop # No Operation F d9f3 fpatan # Partial Arctangent F d9f8 fprem # Partial Remainder toward 0 F d9f5 fprem1 # Partial Remainder < 1/2 modulus F d9f2 fptan # Partial Tangent F dbf4 frstpm # set 287XL real mode (nop for 387/486) F d9fc frndint # Round To Integer 0F dd04 frstor m32 # Resore FPU State 0F dd06 fnsave m32 # Store FPU State no wait 0fF dd06 fsave m32 # Store FPU State F d9fd fscale # Scale F dbe4 fsetpm # set 287 protected mode (nop for 387/486) F d9fe fsin # Sine F d9fb fsincos # Sine and Cosine F d9fa fsqrt # Square Root 0F d907 fnstcw m32 # Store Control Word no wait 0fF d907 fstcw m32 # Store Control Word 0F d906 fnstenv m32 # Store FPU Environment no wait 0fF d906 fstenv m32 # Store FPU Environment F d9e4 ftst # Test F dae9 fucompp # Unordered compare %st %st1 and pop twice F 009b fwait # Wait for coprocessor F d9e5 fxam # Examine F d9f4 fxtract # Extract Exponent and Significand F d9f1 fyl2x # %st1 * log(%st) base 2 F d9f9 fyl2xp1 # %st1 * log(%st + 1.0) base 2 - 00f4 hlt # Halt d5 ff02 icall rm32 # Call indirect d5 ff04 ijmp rm32 # Jump indirect d5 ff03 ilcall m32 # Long call indirect d5 ff05 iljmp m32 # Long jump indirect - 00cc int con3 # Interrupt 3 - 00cd int imm8 # Interrupt w 00ce into # Int 4 if overflow is 1 r 006c insb # Input byte from port into ES:(E)DI r 006c insb atdx # Input byte from port into ES:(E)DI wr 006d insw # Input word from port into ES:(E)DI wr 006d insw atdx # Input word from port into ES:(E)DI dr 006d insl # Input long from port into ES:(E)DI dr 006d insl atdx # Input long from port into ES:(E)DI - 00cf iret # Interrupt return - 00cf iretd # Different mode different opcode ? i 7 ja reli # Jump if above i 3 jae reli # Jump if above or equal i 2 jb reli # Jump if below i 6 jbe reli # Jump if below or equal i 2 jc reli # Jump if carry i 4 je reli # Jump if equal i 4 jz reli # Jump if zero i f jg reli # Jump if greater i d jge reli # Jump if greater or equal i c jl reli # Jump if less i e jle reli # Jump if less or equal i 6 jna reli # Jump if not above i 2 jnae reli # Jump if not above or equal i 3 jnb reli # Jump if not below i 7 jnbe reli # Jump if not below or equal i 3 jnc reli # Jump if no carry i 5 jne reli # Jump if not equal i e jng reli # Jump if not greater i c jnge reli # Jump if not greater or equal i d jnl reli # Jump if not less i f jnle reli # Jump if not less or equal i 1 jno reli # Jump if not overflow i b jnp reli # Jump if not parity i 9 jns reli # Jump if not sign i 5 jnz reli # Jump if not zero i 0 jo reli # Jump if overflow i a jp reli # Jump if parity i a jpe reli # Jump if parity even i b jpo reli # Jump if parity odd i 8 js reli # Jump if sign i 4 jz reli # Jump if zero i e9 jmp reli # Jump absolute # - 00e3 jcxz rel8 # Jump if CX is zero - 00e3 jecxz rel8 # Jump if CX is zero # - 009f lahf # Load flags into AH register d 009a lcall imm16x imm32 # Long call d 00ea ljmp imm16x imm32 # Long jump - 00c9 leave # High level procedure exit p6 0002 lldt rm16 # Load local descriptor table register p7 0106 lmsw rm16 # Load machine status word L 00f0 lock # Assert lock signal for next instruction r 00ac lodsb # Load string operand byte wr 00ad lodsw # Load string operand word dr 00ad lodsl # Load string operand long - 00e2 loop rel8 # Dec count jmp if count <> 0 - 00e1 loope rel8 # Dec count jmp if count <> 0 and ZF = 1 - 00e1 loopz rel8 # Dec count jmp if count <> 0 and ZF = 1 - 00e0 loopne rel8 # Dec count jmp if count <> 0 and ZF = 0 - 00e0 loopnz rel8 # Dec count jmp if count <> 0 and ZF = 0 p6 0003 ltr rm16 # Load task register r 00a4 movsb # Move bytes wr 00a5 movsw # Move words dr 00a5 movsl # Move longs - 0090 nop # No operation r 006e outsb # Output byte to port into ES:(E)DI wr 006f outsw # Output word to port into ES:(E)DI dr 006f outsl # Output long to port into ES:(E)DI R 00f3 rep # rep following instruction CX times R 00f3 repe # repe following instruction CX times or eq R 00f3 repz # alternate name for repe R 00f2 repne # repne following instruction CX times or ne R 00f2 repnz # alternate name for repnz - 00c3 ret # Return - 00c2 ret imm16 # Return pop imm16 bytes of parms - 00cb lret # Far return - 00ca lret imm16 # Far return pop imm16 bytes of parms - 009e sahf # Store AH into flags r 00ae scasb # Compare string bytes dr 00af scasl # Compare string longs wr 00af scasw # Compare string words # p 0097 seta rm8 # Set byte if above p 0093 setae rm8 # Set byte if above or equal p 0092 setb rm8 # Set byte if below p 0096 setbe rm8 # Set byte if below or equal p 0092 setc rm8 # Set byte if carry p 0094 sete rm8 # Set byte if equal p 0094 setz rm8 # Set byte if zero p 009f setg rm8 # Set byte if greater p 009d setge rm8 # Set byte if greater or equal p 009c setl rm8 # Set byte if less p 009e setle rm8 # Set byte if less or equal p 0096 setna rm8 # Set byte if not above p 0092 setnae rm8 # Set byte if not above or equal p 0093 setnb rm8 # Set byte if not below p 0097 setnbe rm8 # Set byte if not below or equal p 0093 setnc rm8 # Set byte if no carry p 0095 setne rm8 # Set byte if not equal p 009e setng rm8 # Set byte if not greater p 009c setnge rm8 # Set byte if not greater or equal p 009d setnl rm8 # Set byte if not less p 009f setnle rm8 # Set byte if not less or equal p 0091 setno rm8 # Set byte if not overflow p 009b setnp rm8 # Set byte if not parity p 0099 setns rm8 # Set byte if not sign p 0095 setnz rm8 # Set byte if not zero p 0090 seto rm8 # Set byte if overflow p 009a setp rm8 # Set byte if parity p 009a setpe rm8 # Set byte if parity even p 009b setpo rm8 # Set byte if parity odd p 0098 sets rm8 # Set byte if sign p 0094 setz rm8 # Set byte if zero # p7 0100 sgdt mem32 # Store gdtr p7 0101 sidt mem32 # Store idtr p6 0000 sldt rm16 # Store ldtr to EA word p7 0104 smsw rm16 # Store machine status to EA word - 00f9 stc # Set carry flag - 00fd std # Clear direction flag - 00fb sti # Set interrupt flag r 00aa stosb # Store string byte wr 00ab stosw # Store string word dr 00ab stosl # Store string long p6 0001 str # Store task register p6 0004 verr rm16 # Verify segment for read p6 0005 verw rm16 # Verify segment for write - 009b wait # Wait for coprocessor - 00d7 xlat # Table lookup translation - 00d7 xlatb # Table lookup translation G adc # Add with carry A1l 8302 adc imm8s m32 d1l 8302 adcl imm8s rm32 w1l 8302 adcw imm8s rm16 - 0014 adcb imm8 al w 0015 adcw imm16 ax d 0015 adcl imm32 eax d 0015 adcl imm32 1l 8002 adcb imm8 rm8 w1l 8102 adcw imm16 rm16 d1l 8102 adcl imm32 rm32 lP 0012 adcb rm8 r8 wlP 0013 adcw rm16 r16 dlP 0013 adcl rm32 r32 lP 0010 adcb r8 rm8 wlP 0011 adcw r16 rm16 dlP 0011 adcl r32 rm32 G add # Add A1l 8300 add imm8s m32 d1l 8300 addl imm8s rm32 w1l 8300 addw imm8s rm16 l 0004 addb imm8 al wl 0005 addw imm16 ax dl 0005 addl imm32 eax dl 0005 addl imm32 1l 8000 addb imm8 rm8 w1l 8100 addw imm16 rm16 d1l 8100 addl imm32 rm32 lP 0002 addb rm8 r8 wlP 0003 addw rm16 r16 dlP 0003 addl rm32 r32 lP 0000 addb r8 rm8 wlP 0001 addw r16 rm16 dlP 0001 addl r32 rm32 G and # Logical AND A1l 8304 and imm8s m32 d1l 8304 andl imm8s rm32 w1l 8304 andw imm8s rm16 l 0024 andb imm8 al wl 0025 andw imm16 ax dl 0025 andl imm32 eax dl 0025 andl imm32 1l 8004 andb imm8 rm8 w1l 8104 andw imm16 rm16 d1l 8104 andl imm32 rm32 lP 0022 andb rm8 r8 wlP 0023 andw rm16 r16 dlP 0023 andl rm32 r32 lP 0020 andb r8 rm8 wlP 0021 andw r16 rm16 dlP 0021 andl r32 rm32 G bound # Check if register is within bounds wP 0062 boundw m16 r16 dP 0062 boundl m32 r32 G bsf # Bit scan forward wp 00bc bsfw rm16 r16 dp 00bc bsfl rm32 r32 G bsr # Bit scan reverse wp 00bd bsrw rm16 r16 dp 00bd bsrl rm32 r32 G bt # Save bit in carry flag wp 00a3 btw r16 rm16 dp 00a3 btl r32 rm32 wp8 ba04 btw imm8 rm16 dp8 ba04 btl imm8 rm32 G btc # Bit test and complement wpl 00bb btcw r16 rm16 dpl 00bb btcl r32 rm32 wp8l ba07 btcw imm8 rm16 dp8l ba07 btcl imm8 rm32 G btr # Bit test and reset wpl 00b3 btrw r16 rm16 dpl 00b3 btrl r32 rm32 wp8l ba06 btrw imm8 rm16 dp8l ba06 btrl imm8 rm32 G bts # Bit test and set wpl 00ab btsw r16 rm16 dpl 00ab btsl r32 rm32 wp8l ba05 btsw imm8 rm16 dp8l ba05 btsl imm8 rm32 G cmp # Compare A1 8307 cmp imm8s m32 d1 8307 cmpl imm8s rm32 w1 8307 cmpw imm8s rm16 - 003c cmpb imm8 al w 003d cmpw imm16 ax d 003d cmpl imm32 eax d 003d cmpl imm32 1 8007 cmpb imm8 rm8 w1 8107 cmpw imm16 rm16 d1 8107 cmpl imm32 rm32 P 003a cmpb rm8 r8 wP 003b cmpw rm16 r16 dP 003b cmpl rm32 r32 P 0038 cmpb r8 rm8 wP 0039 cmpw r16 rm16 dP 0039 cmpl r32 rm32 G dec # Decrement by 1 A5l ff01 dec m32 wa 0048 decw r16 da 0048 decl r32 4l fe01 decb rm8 w5l ff01 decw rm16 d5l ff01 decl rm32 G div # Unsigned divide A3 f706 div m32 3 f606 divb rm8 al 3 f606 divb rm8 w3 f706 divw rm16 ax w3 f706 divw rm16 d3 f706 divl rm32 eax d3 f706 divl rm32 G fadd # Floating add A0F d800 fadd m32 0F d800 fadds m32 0F dc00 faddl m64 aF d8c0 fadd fpreg st0 aF d8c0 fadd fpreg F dec1 fadd aF dcc0 fadd st0 fpreg G faddp # Floating add and pop aF dec0 faddp st0 fpreg aF dec0 faddp fpreg F dec1 faddp G fcom # Floating Compare A0F d802 fcom m32 0F d802 fcoms m32 0F dc02 fcoml m64 aF d8d0 fcom fpreg st0 aF d8d0 fcom fpreg F d8d1 fcom G fcomp # Floating Compare and Pop A0F d803 fcomp m32 0F d803 fcomps m32 0F dc03 fcompl m64 aF d8d8 fcomp fpreg F d8d9 fcomp G fdiv # Floating divide A0F d806 fdiv m32 0F d806 fdivs m32 0F dc06 fdivl m64 aF d8f0 fdiv fpreg st0 aF d8f0 fdiv fpreg F def1 fdiv aF dcf0 fdiv st0 fpreg G fdivp # Floating divide and pop aF def0 fdivp st0 fpreg aF def0 fdivp fpreg F def1 fdivp G fdivr # Reverse floating divide A0F d807 fdivr m32 0F d807 fdivrs m32 0F dc07 fdivrl m64 aF d8f8 fdivr fpreg st0 aF d8f8 fdivr fpreg F def9 fdivr aF dcf8 fdivr st0 fpreg G fdivrp # Reverse floating divide and pop aF def8 fdivrp st0 fpreg aF def8 fdivrp fpreg F def9 fdivrp G fiadd # Add integer to float A0F da00 fiadd m32 0F da00 fiaddl m32 0F de00 fiadds m16 G ficom # Compare float to integer A0F da02 ficom m32 0F da02 ficoml m32 0F de02 ficoms m16 G ficomp # Compare float to integer and pop A0F da03 ficomp m32 0F da03 ficompl m32 0F de03 ficomps m16 G fidiv # Divide float by integer A0F da06 fidiv m32 0F da06 fidivl m32 0F de06 fidivs m16 G fidivr # Reverse divide integer by float A0F da07 fidivr m32 0F da07 fidivrl m32 0F de07 fidivrs m16 G fild # Load integer A0F db00 fild m32 0F db00 fildl m32 0F df00 filds m16 0F df05 fildll m64 G fimul # Multiply integer to float A0F da01 fimul m32 0F da01 fimull m32 0F de01 fimuls m16 G fist # Store integer A0F db02 fist m32 0F db02 fistl m32 0F df02 fists m16 G fistp # Store integer and pop A0F db03 fistp m32 0F db03 fistpl m32 0F df03 fistps m16 0F df07 fistpll m32 G fisub # Subtract integer from float A0F da04 fisub m32 0F da04 fisubl m32 0F de04 fisubs m16 G fisubr # Reverse subtract integer from float A0F da05 fisubr m32 0F da05 fisubrl m32 0F de05 fisubrs m16 G fld # Load Real A0F d900 fld m32 aF d9c0 fld fpreg 0F d900 flds m32 0F dd00 fldl m32 0F db05 fldt m64 G fmul # Floating multiply A0F d801 fmul m32 0F d801 fmuls m32 0F dc01 fmull m64 aF d8c8 fmul fpreg st0 aF d8c8 fmul fpreg F dec9 fmul aF dcc8 fmul st0 fpreg G fmulp # Floating multiply and pop aF dec8 fmulp st0 fpreg aF dec8 fmulp fpreg F dec9 fmulp G fst # Store Real A0F d902 fst m32 aF ddd0 fst fpreg 0F d902 fsts m32 0F dd02 fstl m64 G fstp # Store Real and pop A0F d903 fstp m32 aF ddd8 fstp fpreg 0F d903 fstps m32 0F dd03 fstpl m64 0F db07 fstpt m80 G fnstsw # Store Status Word no wait 0F dd07 fnstsw m16 F dfe0 fnstsw ax G fstsw # Store Status Word 0fF dd07 fstsw m16 fF dfe0 fstsw ax G fsub # Floating subtract A0F d804 fsub m32 0F d804 fsubs m32 0F dc04 fsubl m64 aF d8e0 fsub fpreg st0 aF d8e0 fsub fpreg F dee1 fsub aF dce0 fsub st0 fpreg G fsubp # Floating subtract and pop aF dee0 fsubp st0 fpreg aF dee0 fsubp fpreg F dee1 fsubp G fsubr # Reverse floating subtract A0F d805 fsubr m32 0F d805 fsubrs m32 0F dc05 fsubrl m64 aF d8e8 fsubr fpreg st0 aF d8e8 fsubr fpreg F dee9 fsubr aF dce8 fsubr st0 fpreg G fsubrp # Reverse floating subtract and pop aF dee8 fsubrp st0 fpreg aF dee8 fsubrp fpreg F dee9 fsubrp G fucom # Unordered compare real aF dde0 fucom st0 fpreg aF dde0 fucom fpreg F dde1 fucom G fucomp # Unordered compare real and pop aF dde8 fucomp st0 fpreg aF dde8 fucomp fpreg F dde9 fucomp G fxch # Floating exchange aF d9c8 fxch st0 fpreg aF d9c8 fxch fpreg st0 aF d9c8 fxch fpreg F d9c9 fxch G idiv # Signed divide A3 f707 idiv m32 3 f607 idivb rm8 al 3 f607 idivb rm8 w3 f707 idivw rm16 ax w3 f707 idivw rm16 d3 f707 idivl rm32 eax d3 f707 idivl rm32 G imul # Signed multiply 3 f605 imulb rm8 w3 f705 imulw rm16 d3 f705 imull rm32 wpP 00af imulw rm16 r16 dpP 00af imull rm32 r32 w 006b imulw imm8s rm16 r16 d 006b imull imm8s rm32 r32 wtP 006b imulw imm8s r16 dtP 006b imull imm8s r32 w 0069 imulw imm16 rm16 r16 d 0069 imull imm32 rm32 r32 wtP 0069 imulw imm16 r16 dtP 0069 imull imm32 r32 G in # Input from port - 00ec in dx al w 00ed in dx ax d 00ed in dx eax - 00e4 inb imm8 w 00e5 inw imm8 d 00e5 inl imm8 - 00ec inb atdx w 00ed inw atdx d 00ed inl atdx G inc # Increment by one A5l ff00 inc m32 wa 0040 incw r16 da 0040 incl r32 4l fe00 incb rm8 w5l ff00 incw rm16 d5l ff00 incl rm32 G lar # Load access rights byte wpP 0002 larw rm16 r16 dpP 0002 larl rm32 r32 G lea # Load effective address wP 008d leaw m16 r16 dP 008d leal m32 r32 G lgdt # Load m into DGTR wp7 0102 lgdtw m16 dp7 0102 lgdtl m32 G lidt # Load m into IDTR wp7 0103 lidtw m16 dp7 0103 lidtl m32 G lds # load full pointer DS:r16 wP 00c5 ldsw m16 r16 dP 00c5 ldsl m32 r32 G lss # Load full pointer SS:r16 wpP 00b2 lssw m16 r16 dpP 00b2 lssl m32 r32 G les # Load full pointer ES:r16 wP 00c4 lesw m16 r16 dP 00c4 lesl m32 r32 G lfs # Load full pointer FS:r16 wpP 00b4 lfsw m16 r16 dpP 00b4 lfsl m32 r32 G lgs # Load full pointer GS:r16 wpP 00b5 lgsw m16 r16 dpP 00b5 lgsl m32 r32 G lsl # Load segment limit wpP 0003 lslw rm16 r16 dpP 0003 lsll rm32 r32 G mov # Move data A 00c6 mov imm8 m32 - 00a0 movb moffs al w 00a1 movw moffs ax d 00a1 movl moffs eax - 00a2 movb al moffs w 00a3 movw ax moffs d 00a3 movl eax moffs P 008a movb rm8 r8 wP 008b movw rm16 r16 dP 008b movl rm32 r32 P 0088 movb r8 rm8 wP 0089 movw r16 rm16 dP 0089 movl r32 rm32 P 008c movw sreg rm16 P 008e movw rm16 sreg a 00b0 movb imm8 r8 wa 00b8 movw imm16 r16 da 00b8 movl imm32 r32 - 00c6 movb imm8 rm8 w 00c7 movw imm16 rm16 d 00c7 movl imm32 rm32 dpP 0020 movl ctlreg r32 dpP 0022 movl r32 ctlreg dpP 0021 movl dbreg r32 dpP 0023 movl r32 dbreg dpP 0024 movl treg r32 dpP 0026 movl r32 treg G movsx # Move with sign extend AdpP 00be movsx m8 r32 wpP 00be movsxb rm8 r16 dpP 00be movsxb rm8 r32 dpXP 00bf movsxw rm16 r32 wpP 00be movsbw rm8 r16 dpP 00be movsbl rm8 r32 dpXP 00bf movswl rm16 r32 G movzx # Move with zero extend AdpP 00b6 movzx m8 r32 wpP 00b6 movzxb rm8 r16 dpP 00b6 movzxb rm8 r32 dpXP 00b7 movzxw rm16 r32 wpP 00b6 movzbw rm8 r16 dpP 00b6 movzbl rm8 r32 dpXP 00b7 movzwl rm16 r32 G mul # Unsigned multiply A3 f704 mul m32 3 f604 mulb rm8 al 3 f604 mulb rm8 w3 f704 mulw rm16 ax w3 f704 mulw rm16 d3 f704 mull rm32 eax d3 f704 mull rm32 G neg # Negate A3l f703 neg m32 3l f603 negb rm8 w3l f703 negw rm16 d3l f703 negl rm32 G not # Invert bits A3l f702 not m32 3l f602 notb rm8 w3l f702 notw rm16 d3l f702 notl rm32 G or # Logical inclusive OR A1l 8301 or imm8s m32 d1l 8301 orl imm8s rm32 w1l 8301 orw imm8s rm16 l 000c orb imm8 al wl 000d orw imm16 ax dl 000d orl imm32 eax dl 000d orl imm32 1l 8001 orb imm8 rm8 w1l 8101 orw imm16 rm16 d1l 8101 orl imm32 rm32 lP 000a orb rm8 r8 wlP 000b orw rm16 r16 dlP 000b orl rm32 r32 lP 0008 orb r8 rm8 wlP 0009 orw r16 rm16 dlP 0009 orl r32 rm32 G out # Output from port - 00e6 outb imm8 w 00e7 outw imm8 d 00e7 outl imm8 - 00ee outb atdx w 00ef outw atdx d 00ef outl atdx - 00ee out al dx w 00ef out ax dx d 00ef out eax dx G pop # Pop a word from the stack wa 0058 popw r16 da 0058 popl r32 - 001f popw ds - 0007 popw es - 0017 popw ss p 00a1 popw fs p 00a9 popw gs w8 8f00 popw m16 d8 8f00 popl m32 G popa # Pop all w 0061 popaw d 0061 popal G popf # Pop stack into flags w 009d popfw d 009d popfl G push # Push a word on the stack wa 0050 pushw r16 da 0050 pushl r32 - 006a pushb imm8s w 0068 pushw imm16 d 0068 pushl imm32 - 000e pushw cs - 001e pushw ds - 0006 pushw es - 0016 pushw ss p 00a0 pushw fs p 00a8 pushw gs w5 ff06 pushw m16 d5 ff06 pushl m32 G pusha # Push all w 0060 pushaw d 0060 pushal G pushf # Push flags w 009c pushfw d 009c pushfl G rcl # Rotate carry left A2 d102 rcl con1 m32 A2 d102 rcl m32 A2 d302 rcl cl m32 A2 c102 rcl imm8 m32 2 d002 rclb con1 rm8 2 d002 rclb rm8 2 d202 rclb cl rm8 2 c002 rclb imm8 rm8 w2 d102 rclw con1 rm16 w2 d102 rclw rm16 w2 d302 rclw cl rm16 w2 c102 rclw imm8 rm16 d2 d102 rcll con1 rm32 d2 d102 rcll rm32 d2 d302 rcll cl rm32 d2 c102 rcll imm8 rm32 G rcr # Rotate carry right A2 d103 rcr con1 m32 A2 d103 rcr m32 A2 d303 rcr cl m32 A2 c103 rcr imm8 m32 2 d003 rcrb con1 rm8 2 d003 rcrb rm8 2 d203 rcrb cl rm8 2 c003 rcrb imm8 rm8 w2 d103 rcrw con1 rm16 w2 d103 rcrw rm16 w2 d303 rcrw cl rm16 w2 c103 rcrw imm8 rm16 d2 d103 rcrl con1 rm32 d2 d103 rcrl rm32 d2 d303 rcrl cl rm32 d2 c103 rcrl imm8 rm32 G rol # Rotate left A2 d100 rol con1 m32 A2 d100 rol m32 A2 d300 rol cl m32 A2 c100 rol imm8 m32 2 d000 rolb con1 rm8 2 d000 rolb rm8 2 d200 rolb cl rm8 2 c000 rolb imm8 rm8 w2 d100 rolw con1 rm16 w2 d100 rolw rm16 w2 d300 rolw cl rm16 w2 c100 rolw imm8 rm16 d2 d100 roll con1 rm32 d2 d100 roll rm32 d2 d300 roll cl rm32 d2 c100 roll imm8 rm32 G ror # Rotate right A2 d101 ror con1 m32 A2 d101 ror m32 A2 d301 ror cl m32 A2 c101 ror imm8 m32 2 d001 rorb con1 rm8 2 d001 rorb rm8 2 d201 rorb cl rm8 2 c001 rorb imm8 rm8 w2 d101 rorw con1 rm16 w2 d101 rorw rm16 w2 d301 rorw cl rm16 w2 c101 rorw imm8 rm16 d2 d101 rorl con1 rm32 d2 d101 rorl rm32 d2 d301 rorl cl rm32 d2 c101 rorl imm8 rm32 G sal # Shift arithmetic left A2 d104 sal con1 m32 A2 d104 sal m32 A2 d304 sal cl m32 A2 c104 sal imm8 m32 2 d004 salb con1 rm8 2 d004 salb rm8 2 d204 salb cl rm8 2 c004 salb imm8 rm8 w2 d104 salw con1 rm16 w2 d104 salw rm16 w2 d304 salw cl rm16 w2 c104 salw imm8 rm16 d2 d104 sall con1 rm32 d2 d104 sall rm32 d2 d304 sall cl rm32 d2 c104 sall imm8 rm32 G shl # Shift arithmetic left A2 d104 shl con1 m32 A2 d104 shl m32 A2 d304 shl cl m32 A2 c104 shl imm8 m32 2 d004 shlb con1 rm8 2 d004 shlb rm8 2 d204 shlb cl rm8 2 c004 shlb imm8 rm8 w2 d104 shlw con1 rm16 w2 d104 shlw rm16 w2 d304 shlw cl rm16 w2 c104 shlw imm8 rm16 d2 d104 shll con1 rm32 d2 d104 shll rm32 d2 d304 shll cl rm32 d2 c104 shll imm8 rm32 G sar # Shift arithmetic right A2 d107 sar con1 m32 A2 d107 sar m32 A2 d307 sar cl m32 A2 c107 sar imm8 m32 2 d007 sarb con1 rm8 2 d007 sarb rm8 2 d207 sarb cl rm8 2 c007 sarb imm8 rm8 w2 d107 sarw con1 rm16 w2 d107 sarw rm16 w2 d307 sarw cl rm16 w2 c107 sarw imm8 rm16 d2 d107 sarl con1 rm32 d2 d107 sarl rm32 d2 d307 sarl cl rm32 d2 c107 sarl imm8 rm32 G shr # Shift right A2 d105 shr con1 m32 A2 d105 shr m32 A2 d305 shr cl m32 A2 c105 shr imm8 m32 2 d005 shrb con1 rm8 2 d005 shrb rm8 2 d205 shrb cl rm8 2 c005 shrb imm8 rm8 w2 d105 shrw con1 rm16 w2 d105 shrw rm16 w2 d305 shrw cl rm16 w2 c105 shrw imm8 rm16 d2 d105 shrl con1 rm32 d2 d105 shrl rm32 d2 d305 shrl cl rm32 d2 c105 shrl imm8 rm32 G sbb # Subtract with borrow A1l 8303 sbb imm8s rm32 d1l 8303 sbbl imm8s rm32 w1l 8303 sbbw imm8s rm16 l 001c sbbb imm8 al wl 001d sbbw imm16 ax dl 001d sbbl imm32 eax dl 001d sbbl imm32 1l 8003 sbbb imm8 rm8 w1l 8103 sbbw imm16 rm16 d1l 8103 sbbl imm32 rm32 lP 001a sbbb rm8 r8 wlP 001b sbbw rm16 r16 dlP 001b sbbl rm32 r32 lP 0018 sbbb r8 rm8 wlP 0019 sbbw r16 rm16 dlP 0019 sbbl r32 rm32 G shld # Shift double precision left wp 00a4 shldw imm8 r16 rm16 dp 00a4 shldl imm8 r32 rm32 wp 00a5 shldw cl r16 rm16 dp 00a5 shldl cl r32 rm32 G shrd # Shift double precision right wp 00ac shrdw imm8 r16 rm16 dp 00ac shrdl imm8 r32 rm32 wp 00ad shrdw cl r16 rm16 dp 00ad shrdl cl r32 rm32 wp 00ad shrdw r16 rm16 dp 00ad shrdl r32 rm32 G sub # Subtract A1l 8305 sub imm8s m32 d1l 8305 subl imm8s rm32 w1l 8305 subw imm8s rm16 l 002c subb imm8 al wl 002d subw imm16 ax dl 002d subl imm32 eax dl 002d subl imm32 1l 8005 subb imm8 rm8 w1l 8105 subw imm16 rm16 d1l 8105 subl imm32 rm32 lP 002a subb rm8 r8 wlP 002b subw rm16 r16 dlP 002b subl rm32 r32 lP 0028 subb r8 rm8 wlP 0029 subw r16 rm16 dlP 0029 subl r32 rm32 G test # Logical compare A3 f600 test imm8 m32 - 00a8 testb imm8 al w 00a9 testw imm16 ax d 00a9 testl imm32 eax d 00a9 testl imm32 3 f600 testb imm8 rm8 w3 f700 testw imm16 rm16 d3 f700 testl imm32 rm32 P 0084 testb r8 rm8 wP 0085 testw r16 rm16 dP 0085 testl r32 rm32 G xchg # Exchange register wa 0090 xchgw r16 ax wa 0090 xchgw ax r16 da 0090 xchgl r32 eax da 0090 xchgl r32 da 0090 xchgl eax r32 lP 0086 xchgb rm8 r8 wlP 0087 xchgw rm16 r16 dlP 0087 xchgl rm32 r32 lP 0086 xchgb r8 rm8 wlP 0087 xchgw r16 rm16 dlP 0087 xchgl r32 rm32 G xor # Logical exclusive OR A1l 8306 xor imm8s m32 d1l 8306 xorl imm8s rm32 w1l 8306 xorw imm8s rm16 l 0034 xorb imm8 al wl 0035 xorw imm16 ax dl 0035 xorl imm32 eax dl 0035 xorl imm32 1l 8006 xorb imm8 rm8 w1l 8106 xorw imm16 rm16 d1l 8106 xorl imm32 rm32 lP 0032 xorb rm8 r8 wlP 0033 xorw rm16 r16 dlP 0033 xorl rm32 r32 lP 0030 xorb r8 rm8 wlP 0031 xorw r16 rm16 dlP 0031 xorl r32 rm32 + 2 # Preloaded symbol table al REG 0 1 ax REG 0 2 eax REG 0 4 cl REG 1 1 cx REG 1 2 ecx REG 1 4 dl REG 2 1 dx REG 2 2 edx REG 2 4 bl REG 3 1 bx REG 3 2 ebx REG 3 4 ah REG 4 1 sp REG 4 2 esp REG 4 4 ch REG 5 1 bp REG 5 2 ebp REG 5 4 dh REG 6 1 si REG 6 2 esi REG 6 4 bh REG 7 1 di REG 7 2 edi REG 7 4 # Segment regs es SREG 0 2 cs SREG 1 2 ss SREG 2 2 ds SREG 3 2 fs SREG 4 2 gs SREG 5 2 # Control registers (CR1 is missing) cr0 CREG 0 4 cr2 CREG 2 4 cr3 CREG 3 4 # Debug registers (DR4 and DR5 missing) dr0 DREG 0 4 dr1 DREG 1 4 dr2 DREG 2 4 dr3 DREG 3 4 dr6 DREG 6 4 dr7 DREG 7 4 # Test registers (TR0 - TR5 missing) tr6 TREG 6 4 tr7 TREG 7 4 # Miscellaneous operators %st FSTACK 0 0 .rem REM 0 0 .div DIVIDE 0 4 .defined DEFINED 0 4 .sizeof SIZEOF 0 4 .segment SEGMENT 0 4 .location LOCATION 0 4 .string TOSTRING 0 4 .number TONUMBER 0 4 .float TOFLOAT 0 4 .parmct PARMCT 0 4 + 3 # Assembler directives 1 .fail ERROR CMD # print message as error 0 .warn ERROR CMD # print message as warning 0 .mexit MEXIT NCMD # exit current macro 0 .shift SHIFT ICMD # shift macro parms 0 .org ORG DATA # move current location 0 .if IF ICMD # conditional assembly 0 .else ELSE NCMD # connects to if 0 .endi ENDI NCMD # end if 0 .while WHILE ICMD # conditional assembly loop 0 .endw ENDW NCMD # end while 0 .macro MACRO DCMD # declare macro 0 - MAC CMD # Macro expansion no opcode. 0 .endm ENDM NCMD # end macro declaration 0 .include INCLUDE CMD # include file 0 .equ EQU ICMD # newlab .equ expr 0 .define EQUS CMD # newstr .define anything 0 .undef UNDEFINE CMD # .undef newstr 1 .list LIST NCMD # Turn on listing if -l was on 0 .nolist LIST NCMD # Turn off listing 0 .llen LLEN ICMD # set print line length, default 112 0 .plen PLEN ICMD # page length, default 56 1 .page PAGE NCMD # Turn on page breaks 0 .eject EJECT NCMD # Force a page break 0 .mlist MLIST CMD # list macro expansions 0 .ttl TITLE CMD # Set page title 0 .section SECTION CMD # Set section 0 .nopage PAGE NCMD # Turn off page breaks 0 .byte DATA DATA # .byte val [,val] 1 .word DATA DATA # .word val [,val] 1 .2byte UDATA DATA # .2byte val, val 1 .value DATA DATA # .value val [,val] 2 .long DATA DATA # .long val [,val] 2 .4byte UDATA DATA # .4byte val, [val] 3 .float DATA DATA # .float val [,val] 4 .double DATA DATA # .double val [,val] 5 .string DATA DATA # .string astring 2 .comm COMM ECMDX # .comm name expr 2 .lcomm COMM ECMDX # .lcomm name expr 1 .alignon ALIGNON NCMD # align non char data objects 0 .alignoff ALIGNON NCMD # don't align non char data objects 0 .align ALIGN DATA # .align val [, fillChar] 0 .even EVEN NCMD # .even 2 .bss SEGMENT ECMD # .bss tag, bytes 2 .bssd SEGMENT ECMD # .bss tag, bytes 0 .zero ZERO ICMD # .zero value 0 .blkb BLKB ICMD # .blkb value 1 .data SEGMENT NCMD # .data 1 .shrd SEGMENT NCMD # .data 1 .prvd SEGMENT NCMD # .data 1 .strn SEGMENT NCMD # .data 0 .text SEGMENT NCMD # .text 10000 .previous SEGMENT NCMD # .previous 0 .shri SEGMENT NCMD # .text 0 .prvi SEGMENT NCMD # .text 0 .globl GLOBL DATA # .globl name [,name] 0 .ident CMNT CMD # .ident string 1 .version CMNT CMD # .comment string 0 .set SET ECMD # .set name, expr 1 .32 LMODE NCMD # .32 0 .16 LMODE NCMD # .16 0 .errataon ERRATA NCMD # .errataon 1 .errataoff ERRATA NCMD # .errataon 0 .warnon WARNINGS NCMD # .warnon 1 .warnoff WARNINGS NCMD # .warnoff 0 .unixorder OPORDER NCMD # .unixorder 1 .intelorder OPORDER NCMD # .intelorder 0 .bracketnorm BORDER NCMD # .bracketnorm 1 .bracketrev BORDER NCMD # .bracketrev 0 .size SIZE ICMD # .size expr 0 .type TYPE ICMD # .type expr 0 .val VAL ICMD # .val expr 0 .tag TAG CMD # .tag string 0 .scl SCL ICMD # .scl expr 0 .ln LN ICMD # .ln expr 0 .line LINE ICMD # .line expr 0 .file FILE CMD # .file name 0 .endef ENDF NCMD # .endf 0 .def DEF CMD # .def name 0 .dim DIM DATA # .dim expr [,expr]
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.