|
|
1.1 ! root 1: + 0 ! 2: # ! 3: # Operand production table. ! 4: # Productions starting with [.bB] are base types in actual tables ! 5: # Productions starting with [!eE] are extra types used for test purposes ! 6: # [be] are 16 bit productions [BE] are 32 bit and [.!] are both ! 7: # ! 8: # The first productions on the list are valid productions ! 9: # Then there is a ? and invalid productions to test the assemblers ! 10: # error conditions. ! 11: # ! 12: . r8 %al %cl %dl %bl %ah %ch %dh %bh ? 0xa $0xa ! 13: b r16 %ax %cx %dx %bx %sp %bp %si %di ? %al 0xa $0xa ! 14: B r32 %eax %ecx %edx %ebx %esp %ebp %esi %edi ? %al 0xa $0xa ! 15: . rm8 r8 0x3e8 vv vd ? r16 r32 $0x64 ! 16: b rm16 r16 0x3e8 vv vd ? r8 r32 $0x64 ! 17: B rm32 r32 0x3e8 vv vd ? r16 r8 $0x64 ! 18: . m8 0x10 vv vd ? r8 $0x64 ! 19: b m16 0x3e8 vv vd ? r8 r32 $0x64 ! 20: B m32 0x3e8 vv vd ? r16 r8 $0x64 ! 21: B m64 0x3e8 vv vd ? r16 r8 $0x64 ! 22: B m80 0x3e8 vv vd ? r16 r8 $0x64 ! 23: . mem32 abc ! 24: . mem16 abc ! 25: . reli . abc ? al ! 26: . rel8 . ? %al ! 27: . rel16 abc ! 28: . al %al ? %bl ! 29: b ax %ax ? %bx ! 30: B eax %eax ? %ebx ! 31: . ds %ds ! 32: . es %es ! 33: . ss %ss ! 34: . fs %fs ! 35: . gs %gs ! 36: . cs %cs ! 37: . cl %cl ! 38: . atdx (%dx) ! 39: . moffs mem16 ! 40: . sreg %es %cs %ss %ds %fs %gs ? $0x64 ! 41: . st0 %st ! 42: . dx %dx ! 43: B ctlreg %cr0 %cr2 %cr3 ? %ss ! 44: B dbreg %dr0 %dr1 %dr2 %dr3 %dr6 %dr7 ? %cr0 ! 45: B treg %tr6 %tr7 ? %ax %cr0 ! 46: B fpreg %st %st(0) %st(1) %st(2) %st(3) %st(4) %st(5) %st(6) %st(7) ? %eax ! 47: B imm32 $0x186a0 ! 48: B imm32x $0 ? %bx ! 49: . imm16 $0x3e8 ? $0x186a0 ! 50: . imm16x $0 ? %ax ! 51: . imm8 $0x64 ? $0x3e8 ! 52: . imm8s $064 $-5 ? 128 ! 53: . con3 $3 ? 4 ! 54: . con1 $1 ? 5 ! 55: E va %eax %ecx %edx %ebx %esi %edi ! 56: E vb %eax %ecx %edx %ebx %ebp %esi %edi ! 57: E vd (va) 0x64(vb) 0x186a0(vb) (,vb,vs) (vb,vb,vs) 0x64(vb,vs) 0x3e8(vb,vb,vs) \ ! 58: (vb,vs) (vb,vb) 0x4(vb,vb) ! 59: E vs 0 1 2 4 8 ! 60: e vv (vx,vy) (vz) 0x64(vx,vy) 0x64(vw) 0x3e8(vx,vy) 0x3e8(vw) ! 61: e vw %si %di %bp %bx ! 62: e vx %bx %bp ! 63: e vy %si %di ! 64: e vz %si %di %bx ! 65: # ! 66: # The First Operand contains the following flags: ! 67: # G Generic opcode if given a name, no generic opcode otherwise. ! 68: # w Word moded instruction. ! 69: # d Double word moded instruction. ! 70: # F Floating point instruction. ! 71: # f Floating 9b prefix. ! 72: # p 0F prefix. ! 73: # a Add register to opcode. ! 74: # 0-8 Second byte of code goes into mod/rm location Set into groups for dis ! 75: # i Indefinate jump. ! 76: # L lock instruction. ! 77: # l Legal after lock instruction. ! 78: # R rep instruction. ! 79: # r Legal after rep instruction. ! 80: # t Special two operand imult. ! 81: # P use /r on document. no other use. ! 82: # X May have mixed word and double word operand. ! 83: # A Ambiguous length construction. ! 84: # ! 85: + 1 # Opcode table - type, hex value, opcode, operands ! 86: G # opcodes with no general form ! 87: - 0037 aaa # Adjust after addition ! 88: - d50a aad # Adjust AX before division ! 89: - d40a aam # Adjust AX after multiply ! 90: - 003f aas # Adjust AL after subtraction ! 91: P 0063 arpl r16 rm16 # Adjust RPL field of selector ! 92: i 00e8 call reli # Call Procedure ! 93: w 0098 cbw # Sign extend AL ! 94: w 0098 cbtw # Sign extend AL ! 95: d 0098 cwde # Sign extend AX ! 96: d 0098 cwtl # Sign extend AX ! 97: - 00f8 clc # Clear carry ! 98: - 00fc cld # Clear direction Flag ! 99: - 00fa cli # Clear interrupt Flag ! 100: p 0006 clts # Clear task-switched flag in CR0 ! 101: - 00f5 cmc # Complement carry flag ! 102: r 00a6 cmpsb # Compare bytes ! 103: wr 00a7 cmpsw # Compare words ! 104: dr 00a7 cmpsl # Compare long ! 105: w 0099 cwd # Word to double word ! 106: w 0099 cwtd # Word to double word ! 107: d 0099 cdq # Double word to quad word ! 108: d 0099 cltd # Double word to quad word ! 109: - 0027 daa # Decimal adjust after addition ! 110: - 002f das # Decimal adjust after subtraction ! 111: - 00c8 enter imm8 imm16 # Make stack frame for procedure ! 112: F d9f0 f2xm1 # ST = 2 ** ST - 1 ! 113: F d9e1 fabs # ST = abs(ST) ! 114: 0F df04 fbld m80 # Load Binary Coded Decimal ! 115: 0F df06 fbstp m80 # Store Binary Coded Decimal and Pop ! 116: F d9e0 fchs # Change Floating Sign ! 117: F ded9 fcompp # Floating Compare and pop twice ! 118: F d9ff fcos # Cosine ! 119: F d9f6 fdecstp # Decrement Stack Top Pointer ! 120: aF ddc0 ffree fpreg # Free Floating Point Register ! 121: F d9f7 fincstp # Increment Stack Top Pointer ! 122: 0F d905 fldcw m32 # Load Floating Point Control Word ! 123: 0F d904 fldenv m32 # Load FPU Environment ! 124: F d9e8 fld1 # Load Constant 1 ! 125: F d9e9 fldl2t # Load Constant log(10) base 2 ! 126: F d9ea fldl2e # Load Constant log(e) base 2 ! 127: F d9eb fldpi # Load Constant pi ! 128: F d9ec fldlg2 # Load Constant log(2) base 10 ! 129: F d9ed fldln2 # Load Constant log(2) base e ! 130: F d9ee fldz # Load Constant 0.0 ! 131: F dbe2 fnclex # Clear floating point exception flags no wait ! 132: fF dbe2 fclex # Clear floating point exception flags ! 133: F dbe3 fninit # Initialize Floating Point Unit no wait ! 134: fF dbe3 finit # Initialize Floating Point Unit ! 135: F d9d0 fnop # No Operation ! 136: F d9f3 fpatan # Partial Arctangent ! 137: F d9f8 fprem # Partial Remainder toward 0 ! 138: F d9f5 fprem1 # Partial Remainder < 1/2 modulus ! 139: F d9f2 fptan # Partial Tangent ! 140: F dbf4 frstpm # set 287XL real mode (nop for 387/486) ! 141: F d9fc frndint # Round To Integer ! 142: 0F dd04 frstor m32 # Resore FPU State ! 143: 0F dd06 fnsave m32 # Store FPU State no wait ! 144: 0fF dd06 fsave m32 # Store FPU State ! 145: F d9fd fscale # Scale ! 146: F dbe4 fsetpm # set 287 protected mode (nop for 387/486) ! 147: F d9fe fsin # Sine ! 148: F d9fb fsincos # Sine and Cosine ! 149: F d9fa fsqrt # Square Root ! 150: 0F d907 fnstcw m32 # Store Control Word no wait ! 151: 0fF d907 fstcw m32 # Store Control Word ! 152: 0F d906 fnstenv m32 # Store FPU Environment no wait ! 153: 0fF d906 fstenv m32 # Store FPU Environment ! 154: F d9e4 ftst # Test ! 155: F dae9 fucompp # Unordered compare %st %st1 and pop twice ! 156: F 009b fwait # Wait for coprocessor ! 157: F d9e5 fxam # Examine ! 158: F d9f4 fxtract # Extract Exponent and Significand ! 159: F d9f1 fyl2x # %st1 * log(%st) base 2 ! 160: F d9f9 fyl2xp1 # %st1 * log(%st + 1.0) base 2 ! 161: - 00f4 hlt # Halt ! 162: d5 ff02 icall rm32 # Call indirect ! 163: d5 ff04 ijmp rm32 # Jump indirect ! 164: d5 ff03 ilcall m32 # Long call indirect ! 165: d5 ff05 iljmp m32 # Long jump indirect ! 166: - 00cc int con3 # Interrupt 3 ! 167: - 00cd int imm8 # Interrupt ! 168: w 00ce into # Int 4 if overflow is 1 ! 169: r 006c insb # Input byte from port into ES:(E)DI ! 170: r 006c insb atdx # Input byte from port into ES:(E)DI ! 171: wr 006d insw # Input word from port into ES:(E)DI ! 172: wr 006d insw atdx # Input word from port into ES:(E)DI ! 173: dr 006d insl # Input long from port into ES:(E)DI ! 174: dr 006d insl atdx # Input long from port into ES:(E)DI ! 175: - 00cf iret # Interrupt return ! 176: - 00cf iretd # Different mode different opcode ? ! 177: i 7 ja reli # Jump if above ! 178: i 3 jae reli # Jump if above or equal ! 179: i 2 jb reli # Jump if below ! 180: i 6 jbe reli # Jump if below or equal ! 181: i 2 jc reli # Jump if carry ! 182: i 4 je reli # Jump if equal ! 183: i 4 jz reli # Jump if zero ! 184: i f jg reli # Jump if greater ! 185: i d jge reli # Jump if greater or equal ! 186: i c jl reli # Jump if less ! 187: i e jle reli # Jump if less or equal ! 188: i 6 jna reli # Jump if not above ! 189: i 2 jnae reli # Jump if not above or equal ! 190: i 3 jnb reli # Jump if not below ! 191: i 7 jnbe reli # Jump if not below or equal ! 192: i 3 jnc reli # Jump if no carry ! 193: i 5 jne reli # Jump if not equal ! 194: i e jng reli # Jump if not greater ! 195: i c jnge reli # Jump if not greater or equal ! 196: i d jnl reli # Jump if not less ! 197: i f jnle reli # Jump if not less or equal ! 198: i 1 jno reli # Jump if not overflow ! 199: i b jnp reli # Jump if not parity ! 200: i 9 jns reli # Jump if not sign ! 201: i 5 jnz reli # Jump if not zero ! 202: i 0 jo reli # Jump if overflow ! 203: i a jp reli # Jump if parity ! 204: i a jpe reli # Jump if parity even ! 205: i b jpo reli # Jump if parity odd ! 206: i 8 js reli # Jump if sign ! 207: i 4 jz reli # Jump if zero ! 208: i e9 jmp reli # Jump absolute ! 209: # ! 210: - 00e3 jcxz rel8 # Jump if CX is zero ! 211: - 00e3 jecxz rel8 # Jump if CX is zero ! 212: # ! 213: - 009f lahf # Load flags into AH register ! 214: d 009a lcall imm16x imm32 # Long call ! 215: d 00ea ljmp imm16x imm32 # Long jump ! 216: - 00c9 leave # High level procedure exit ! 217: p6 0002 lldt rm16 # Load local descriptor table register ! 218: p7 0106 lmsw rm16 # Load machine status word ! 219: L 00f0 lock # Assert lock signal for next instruction ! 220: r 00ac lodsb # Load string operand byte ! 221: wr 00ad lodsw # Load string operand word ! 222: dr 00ad lodsl # Load string operand long ! 223: - 00e2 loop rel8 # Dec count jmp if count <> 0 ! 224: - 00e1 loope rel8 # Dec count jmp if count <> 0 and ZF = 1 ! 225: - 00e1 loopz rel8 # Dec count jmp if count <> 0 and ZF = 1 ! 226: - 00e0 loopne rel8 # Dec count jmp if count <> 0 and ZF = 0 ! 227: - 00e0 loopnz rel8 # Dec count jmp if count <> 0 and ZF = 0 ! 228: p6 0003 ltr rm16 # Load task register ! 229: r 00a4 movsb # Move bytes ! 230: wr 00a5 movsw # Move words ! 231: dr 00a5 movsl # Move longs ! 232: - 0090 nop # No operation ! 233: r 006e outsb # Output byte to port into ES:(E)DI ! 234: wr 006f outsw # Output word to port into ES:(E)DI ! 235: dr 006f outsl # Output long to port into ES:(E)DI ! 236: R 00f3 rep # rep following instruction CX times ! 237: R 00f3 repe # repe following instruction CX times or eq ! 238: R 00f3 repz # alternate name for repe ! 239: R 00f2 repne # repne following instruction CX times or ne ! 240: R 00f2 repnz # alternate name for repnz ! 241: - 00c3 ret # Return ! 242: - 00c2 ret imm16 # Return pop imm16 bytes of parms ! 243: - 00cb lret # Far return ! 244: - 00ca lret imm16 # Far return pop imm16 bytes of parms ! 245: - 009e sahf # Store AH into flags ! 246: r 00ae scasb # Compare string bytes ! 247: dr 00af scasl # Compare string longs ! 248: wr 00af scasw # Compare string words ! 249: # ! 250: p 0097 seta rm8 # Set byte if above ! 251: p 0093 setae rm8 # Set byte if above or equal ! 252: p 0092 setb rm8 # Set byte if below ! 253: p 0096 setbe rm8 # Set byte if below or equal ! 254: p 0092 setc rm8 # Set byte if carry ! 255: p 0094 sete rm8 # Set byte if equal ! 256: p 0094 setz rm8 # Set byte if zero ! 257: p 009f setg rm8 # Set byte if greater ! 258: p 009d setge rm8 # Set byte if greater or equal ! 259: p 009c setl rm8 # Set byte if less ! 260: p 009e setle rm8 # Set byte if less or equal ! 261: p 0096 setna rm8 # Set byte if not above ! 262: p 0092 setnae rm8 # Set byte if not above or equal ! 263: p 0093 setnb rm8 # Set byte if not below ! 264: p 0097 setnbe rm8 # Set byte if not below or equal ! 265: p 0093 setnc rm8 # Set byte if no carry ! 266: p 0095 setne rm8 # Set byte if not equal ! 267: p 009e setng rm8 # Set byte if not greater ! 268: p 009c setnge rm8 # Set byte if not greater or equal ! 269: p 009d setnl rm8 # Set byte if not less ! 270: p 009f setnle rm8 # Set byte if not less or equal ! 271: p 0091 setno rm8 # Set byte if not overflow ! 272: p 009b setnp rm8 # Set byte if not parity ! 273: p 0099 setns rm8 # Set byte if not sign ! 274: p 0095 setnz rm8 # Set byte if not zero ! 275: p 0090 seto rm8 # Set byte if overflow ! 276: p 009a setp rm8 # Set byte if parity ! 277: p 009a setpe rm8 # Set byte if parity even ! 278: p 009b setpo rm8 # Set byte if parity odd ! 279: p 0098 sets rm8 # Set byte if sign ! 280: p 0094 setz rm8 # Set byte if zero ! 281: # ! 282: p7 0100 sgdt mem32 # Store gdtr ! 283: p7 0101 sidt mem32 # Store idtr ! 284: p6 0000 sldt rm16 # Store ldtr to EA word ! 285: p7 0104 smsw rm16 # Store machine status to EA word ! 286: - 00f9 stc # Set carry flag ! 287: - 00fd std # Clear direction flag ! 288: - 00fb sti # Set interrupt flag ! 289: r 00aa stosb # Store string byte ! 290: wr 00ab stosw # Store string word ! 291: dr 00ab stosl # Store string long ! 292: p6 0001 str # Store task register ! 293: p6 0004 verr rm16 # Verify segment for read ! 294: p6 0005 verw rm16 # Verify segment for write ! 295: - 009b wait # Wait for coprocessor ! 296: - 00d7 xlat # Table lookup translation ! 297: - 00d7 xlatb # Table lookup translation ! 298: G adc # Add with carry ! 299: A1l 8302 adc imm8s m32 ! 300: d1l 8302 adcl imm8s rm32 ! 301: w1l 8302 adcw imm8s rm16 ! 302: - 0014 adcb imm8 al ! 303: w 0015 adcw imm16 ax ! 304: d 0015 adcl imm32 eax ! 305: d 0015 adcl imm32 ! 306: 1l 8002 adcb imm8 rm8 ! 307: w1l 8102 adcw imm16 rm16 ! 308: d1l 8102 adcl imm32 rm32 ! 309: lP 0012 adcb rm8 r8 ! 310: wlP 0013 adcw rm16 r16 ! 311: dlP 0013 adcl rm32 r32 ! 312: lP 0010 adcb r8 rm8 ! 313: wlP 0011 adcw r16 rm16 ! 314: dlP 0011 adcl r32 rm32 ! 315: G add # Add ! 316: A1l 8300 add imm8s m32 ! 317: d1l 8300 addl imm8s rm32 ! 318: w1l 8300 addw imm8s rm16 ! 319: l 0004 addb imm8 al ! 320: wl 0005 addw imm16 ax ! 321: dl 0005 addl imm32 eax ! 322: dl 0005 addl imm32 ! 323: 1l 8000 addb imm8 rm8 ! 324: w1l 8100 addw imm16 rm16 ! 325: d1l 8100 addl imm32 rm32 ! 326: lP 0002 addb rm8 r8 ! 327: wlP 0003 addw rm16 r16 ! 328: dlP 0003 addl rm32 r32 ! 329: lP 0000 addb r8 rm8 ! 330: wlP 0001 addw r16 rm16 ! 331: dlP 0001 addl r32 rm32 ! 332: G and # Logical AND ! 333: A1l 8304 and imm8s m32 ! 334: d1l 8304 andl imm8s rm32 ! 335: w1l 8304 andw imm8s rm16 ! 336: l 0024 andb imm8 al ! 337: wl 0025 andw imm16 ax ! 338: dl 0025 andl imm32 eax ! 339: dl 0025 andl imm32 ! 340: 1l 8004 andb imm8 rm8 ! 341: w1l 8104 andw imm16 rm16 ! 342: d1l 8104 andl imm32 rm32 ! 343: lP 0022 andb rm8 r8 ! 344: wlP 0023 andw rm16 r16 ! 345: dlP 0023 andl rm32 r32 ! 346: lP 0020 andb r8 rm8 ! 347: wlP 0021 andw r16 rm16 ! 348: dlP 0021 andl r32 rm32 ! 349: G bound # Check if register is within bounds ! 350: wP 0062 boundw m16 r16 ! 351: dP 0062 boundl m32 r32 ! 352: G bsf # Bit scan forward ! 353: wp 00bc bsfw rm16 r16 ! 354: dp 00bc bsfl rm32 r32 ! 355: G bsr # Bit scan reverse ! 356: wp 00bd bsrw rm16 r16 ! 357: dp 00bd bsrl rm32 r32 ! 358: G bt # Save bit in carry flag ! 359: wp 00a3 btw r16 rm16 ! 360: dp 00a3 btl r32 rm32 ! 361: wp8 ba04 btw imm8 rm16 ! 362: dp8 ba04 btl imm8 rm32 ! 363: G btc # Bit test and complement ! 364: wpl 00bb btcw r16 rm16 ! 365: dpl 00bb btcl r32 rm32 ! 366: wp8l ba07 btcw imm8 rm16 ! 367: dp8l ba07 btcl imm8 rm32 ! 368: G btr # Bit test and reset ! 369: wpl 00b3 btrw r16 rm16 ! 370: dpl 00b3 btrl r32 rm32 ! 371: wp8l ba06 btrw imm8 rm16 ! 372: dp8l ba06 btrl imm8 rm32 ! 373: G bts # Bit test and set ! 374: wpl 00ab btsw r16 rm16 ! 375: dpl 00ab btsl r32 rm32 ! 376: wp8l ba05 btsw imm8 rm16 ! 377: dp8l ba05 btsl imm8 rm32 ! 378: G cmp # Compare ! 379: A1 8307 cmp imm8s m32 ! 380: d1 8307 cmpl imm8s rm32 ! 381: w1 8307 cmpw imm8s rm16 ! 382: - 003c cmpb imm8 al ! 383: w 003d cmpw imm16 ax ! 384: d 003d cmpl imm32 eax ! 385: d 003d cmpl imm32 ! 386: 1 8007 cmpb imm8 rm8 ! 387: w1 8107 cmpw imm16 rm16 ! 388: d1 8107 cmpl imm32 rm32 ! 389: P 003a cmpb rm8 r8 ! 390: wP 003b cmpw rm16 r16 ! 391: dP 003b cmpl rm32 r32 ! 392: P 0038 cmpb r8 rm8 ! 393: wP 0039 cmpw r16 rm16 ! 394: dP 0039 cmpl r32 rm32 ! 395: G dec # Decrement by 1 ! 396: A5l ff01 dec m32 ! 397: wa 0048 decw r16 ! 398: da 0048 decl r32 ! 399: 4l fe01 decb rm8 ! 400: w5l ff01 decw rm16 ! 401: d5l ff01 decl rm32 ! 402: G div # Unsigned divide ! 403: A3 f706 div m32 ! 404: 3 f606 divb rm8 al ! 405: 3 f606 divb rm8 ! 406: w3 f706 divw rm16 ax ! 407: w3 f706 divw rm16 ! 408: d3 f706 divl rm32 eax ! 409: d3 f706 divl rm32 ! 410: G fadd # Floating add ! 411: A0F d800 fadd m32 ! 412: 0F d800 fadds m32 ! 413: 0F dc00 faddl m64 ! 414: aF d8c0 fadd fpreg st0 ! 415: aF d8c0 fadd fpreg ! 416: F dec1 fadd ! 417: aF dcc0 fadd st0 fpreg ! 418: G faddp # Floating add and pop ! 419: aF dec0 faddp st0 fpreg ! 420: aF dec0 faddp fpreg ! 421: F dec1 faddp ! 422: G fcom # Floating Compare ! 423: A0F d802 fcom m32 ! 424: 0F d802 fcoms m32 ! 425: 0F dc02 fcoml m64 ! 426: aF d8d0 fcom fpreg st0 ! 427: aF d8d0 fcom fpreg ! 428: F d8d1 fcom ! 429: G fcomp # Floating Compare and Pop ! 430: A0F d803 fcomp m32 ! 431: 0F d803 fcomps m32 ! 432: 0F dc03 fcompl m64 ! 433: aF d8d8 fcomp fpreg ! 434: F d8d9 fcomp ! 435: G fdiv # Floating divide ! 436: A0F d806 fdiv m32 ! 437: 0F d806 fdivs m32 ! 438: 0F dc06 fdivl m64 ! 439: aF d8f0 fdiv fpreg st0 ! 440: aF d8f0 fdiv fpreg ! 441: F def1 fdiv ! 442: aF dcf0 fdiv st0 fpreg ! 443: G fdivp # Floating divide and pop ! 444: aF def0 fdivp st0 fpreg ! 445: aF def0 fdivp fpreg ! 446: F def1 fdivp ! 447: G fdivr # Reverse floating divide ! 448: A0F d807 fdivr m32 ! 449: 0F d807 fdivrs m32 ! 450: 0F dc07 fdivrl m64 ! 451: aF d8f8 fdivr fpreg st0 ! 452: aF d8f8 fdivr fpreg ! 453: F def9 fdivr ! 454: aF dcf8 fdivr st0 fpreg ! 455: G fdivrp # Reverse floating divide and pop ! 456: aF def8 fdivrp st0 fpreg ! 457: aF def8 fdivrp fpreg ! 458: F def9 fdivrp ! 459: G fiadd # Add integer to float ! 460: A0F da00 fiadd m32 ! 461: 0F da00 fiaddl m32 ! 462: 0F de00 fiadds m16 ! 463: G ficom # Compare float to integer ! 464: A0F da02 ficom m32 ! 465: 0F da02 ficoml m32 ! 466: 0F de02 ficoms m16 ! 467: G ficomp # Compare float to integer and pop ! 468: A0F da03 ficomp m32 ! 469: 0F da03 ficompl m32 ! 470: 0F de03 ficomps m16 ! 471: G fidiv # Divide float by integer ! 472: A0F da06 fidiv m32 ! 473: 0F da06 fidivl m32 ! 474: 0F de06 fidivs m16 ! 475: G fidivr # Reverse divide integer by float ! 476: A0F da07 fidivr m32 ! 477: 0F da07 fidivrl m32 ! 478: 0F de07 fidivrs m16 ! 479: G fild # Load integer ! 480: A0F db00 fild m32 ! 481: 0F db00 fildl m32 ! 482: 0F df00 filds m16 ! 483: 0F df05 fildll m64 ! 484: G fimul # Multiply integer to float ! 485: A0F da01 fimul m32 ! 486: 0F da01 fimull m32 ! 487: 0F de01 fimuls m16 ! 488: G fist # Store integer ! 489: A0F db02 fist m32 ! 490: 0F db02 fistl m32 ! 491: 0F df02 fists m16 ! 492: G fistp # Store integer and pop ! 493: A0F db03 fistp m32 ! 494: 0F db03 fistpl m32 ! 495: 0F df03 fistps m16 ! 496: 0F df07 fistpll m32 ! 497: G fisub # Subtract integer from float ! 498: A0F da04 fisub m32 ! 499: 0F da04 fisubl m32 ! 500: 0F de04 fisubs m16 ! 501: G fisubr # Reverse subtract integer from float ! 502: A0F da05 fisubr m32 ! 503: 0F da05 fisubrl m32 ! 504: 0F de05 fisubrs m16 ! 505: G fld # Load Real ! 506: A0F d900 fld m32 ! 507: aF d9c0 fld fpreg ! 508: 0F d900 flds m32 ! 509: 0F dd00 fldl m32 ! 510: 0F db05 fldt m64 ! 511: G fmul # Floating multiply ! 512: A0F d801 fmul m32 ! 513: 0F d801 fmuls m32 ! 514: 0F dc01 fmull m64 ! 515: aF d8c8 fmul fpreg st0 ! 516: aF d8c8 fmul fpreg ! 517: F dec9 fmul ! 518: aF dcc8 fmul st0 fpreg ! 519: G fmulp # Floating multiply and pop ! 520: aF dec8 fmulp st0 fpreg ! 521: aF dec8 fmulp fpreg ! 522: F dec9 fmulp ! 523: G fst # Store Real ! 524: A0F d902 fst m32 ! 525: aF ddd0 fst fpreg ! 526: 0F d902 fsts m32 ! 527: 0F dd02 fstl m64 ! 528: G fstp # Store Real and pop ! 529: A0F d903 fstp m32 ! 530: aF ddd8 fstp fpreg ! 531: 0F d903 fstps m32 ! 532: 0F dd03 fstpl m64 ! 533: 0F db07 fstpt m80 ! 534: G fnstsw # Store Status Word no wait ! 535: 0F dd07 fnstsw m16 ! 536: F dfe0 fnstsw ax ! 537: G fstsw # Store Status Word ! 538: 0fF dd07 fstsw m16 ! 539: fF dfe0 fstsw ax ! 540: G fsub # Floating subtract ! 541: A0F d804 fsub m32 ! 542: 0F d804 fsubs m32 ! 543: 0F dc04 fsubl m64 ! 544: aF d8e0 fsub fpreg st0 ! 545: aF d8e0 fsub fpreg ! 546: F dee1 fsub ! 547: aF dce0 fsub st0 fpreg ! 548: G fsubp # Floating subtract and pop ! 549: aF dee0 fsubp st0 fpreg ! 550: aF dee0 fsubp fpreg ! 551: F dee1 fsubp ! 552: G fsubr # Reverse floating subtract ! 553: A0F d805 fsubr m32 ! 554: 0F d805 fsubrs m32 ! 555: 0F dc05 fsubrl m64 ! 556: aF d8e8 fsubr fpreg st0 ! 557: aF d8e8 fsubr fpreg ! 558: F dee9 fsubr ! 559: aF dce8 fsubr st0 fpreg ! 560: G fsubrp # Reverse floating subtract and pop ! 561: aF dee8 fsubrp st0 fpreg ! 562: aF dee8 fsubrp fpreg ! 563: F dee9 fsubrp ! 564: G fucom # Unordered compare real ! 565: aF dde0 fucom st0 fpreg ! 566: aF dde0 fucom fpreg ! 567: F dde1 fucom ! 568: G fucomp # Unordered compare real and pop ! 569: aF dde8 fucomp st0 fpreg ! 570: aF dde8 fucomp fpreg ! 571: F dde9 fucomp ! 572: G fxch # Floating exchange ! 573: aF d9c8 fxch st0 fpreg ! 574: aF d9c8 fxch fpreg st0 ! 575: aF d9c8 fxch fpreg ! 576: F d9c9 fxch ! 577: G idiv # Signed divide ! 578: A3 f707 idiv m32 ! 579: 3 f607 idivb rm8 al ! 580: 3 f607 idivb rm8 ! 581: w3 f707 idivw rm16 ax ! 582: w3 f707 idivw rm16 ! 583: d3 f707 idivl rm32 eax ! 584: d3 f707 idivl rm32 ! 585: G imul # Signed multiply ! 586: 3 f605 imulb rm8 ! 587: w3 f705 imulw rm16 ! 588: d3 f705 imull rm32 ! 589: wpP 00af imulw rm16 r16 ! 590: dpP 00af imull rm32 r32 ! 591: w 006b imulw imm8s rm16 r16 ! 592: d 006b imull imm8s rm32 r32 ! 593: wtP 006b imulw imm8s r16 ! 594: dtP 006b imull imm8s r32 ! 595: w 0069 imulw imm16 rm16 r16 ! 596: d 0069 imull imm32 rm32 r32 ! 597: wtP 0069 imulw imm16 r16 ! 598: dtP 0069 imull imm32 r32 ! 599: G in # Input from port ! 600: - 00ec in dx al ! 601: w 00ed in dx ax ! 602: d 00ed in dx eax ! 603: - 00e4 inb imm8 ! 604: w 00e5 inw imm8 ! 605: d 00e5 inl imm8 ! 606: - 00ec inb atdx ! 607: w 00ed inw atdx ! 608: d 00ed inl atdx ! 609: G inc # Increment by one ! 610: A5l ff00 inc m32 ! 611: wa 0040 incw r16 ! 612: da 0040 incl r32 ! 613: 4l fe00 incb rm8 ! 614: w5l ff00 incw rm16 ! 615: d5l ff00 incl rm32 ! 616: G lar # Load access rights byte ! 617: wpP 0002 larw rm16 r16 ! 618: dpP 0002 larl rm32 r32 ! 619: G lea # Load effective address ! 620: wP 008d leaw m16 r16 ! 621: dP 008d leal m32 r32 ! 622: G lgdt # Load m into DGTR ! 623: wp7 0102 lgdtw m16 ! 624: dp7 0102 lgdtl m32 ! 625: G lidt # Load m into IDTR ! 626: wp7 0103 lidtw m16 ! 627: dp7 0103 lidtl m32 ! 628: G lds # load full pointer DS:r16 ! 629: wP 00c5 ldsw m16 r16 ! 630: dP 00c5 ldsl m32 r32 ! 631: G lss # Load full pointer SS:r16 ! 632: wpP 00b2 lssw m16 r16 ! 633: dpP 00b2 lssl m32 r32 ! 634: G les # Load full pointer ES:r16 ! 635: wP 00c4 lesw m16 r16 ! 636: dP 00c4 lesl m32 r32 ! 637: G lfs # Load full pointer FS:r16 ! 638: wpP 00b4 lfsw m16 r16 ! 639: dpP 00b4 lfsl m32 r32 ! 640: G lgs # Load full pointer GS:r16 ! 641: wpP 00b5 lgsw m16 r16 ! 642: dpP 00b5 lgsl m32 r32 ! 643: G lsl # Load segment limit ! 644: wpP 0003 lslw rm16 r16 ! 645: dpP 0003 lsll rm32 r32 ! 646: G mov # Move data ! 647: A 00c6 mov imm8 m32 ! 648: - 00a0 movb moffs al ! 649: w 00a1 movw moffs ax ! 650: d 00a1 movl moffs eax ! 651: - 00a2 movb al moffs ! 652: w 00a3 movw ax moffs ! 653: d 00a3 movl eax moffs ! 654: P 008a movb rm8 r8 ! 655: wP 008b movw rm16 r16 ! 656: dP 008b movl rm32 r32 ! 657: P 0088 movb r8 rm8 ! 658: wP 0089 movw r16 rm16 ! 659: dP 0089 movl r32 rm32 ! 660: P 008c movw sreg rm16 ! 661: P 008e movw rm16 sreg ! 662: a 00b0 movb imm8 r8 ! 663: wa 00b8 movw imm16 r16 ! 664: da 00b8 movl imm32 r32 ! 665: - 00c6 movb imm8 rm8 ! 666: w 00c7 movw imm16 rm16 ! 667: d 00c7 movl imm32 rm32 ! 668: dpP 0020 movl ctlreg r32 ! 669: dpP 0022 movl r32 ctlreg ! 670: dpP 0021 movl dbreg r32 ! 671: dpP 0023 movl r32 dbreg ! 672: dpP 0024 movl treg r32 ! 673: dpP 0026 movl r32 treg ! 674: G movsx # Move with sign extend ! 675: AdpP 00be movsx m8 r32 ! 676: wpP 00be movsxb rm8 r16 ! 677: dpP 00be movsxb rm8 r32 ! 678: dpXP 00bf movsxw rm16 r32 ! 679: wpP 00be movsbw rm8 r16 ! 680: dpP 00be movsbl rm8 r32 ! 681: dpXP 00bf movswl rm16 r32 ! 682: G movzx # Move with zero extend ! 683: AdpP 00b6 movzx m8 r32 ! 684: wpP 00b6 movzxb rm8 r16 ! 685: dpP 00b6 movzxb rm8 r32 ! 686: dpXP 00b7 movzxw rm16 r32 ! 687: wpP 00b6 movzbw rm8 r16 ! 688: dpP 00b6 movzbl rm8 r32 ! 689: dpXP 00b7 movzwl rm16 r32 ! 690: G mul # Unsigned multiply ! 691: A3 f704 mul m32 ! 692: 3 f604 mulb rm8 al ! 693: 3 f604 mulb rm8 ! 694: w3 f704 mulw rm16 ax ! 695: w3 f704 mulw rm16 ! 696: d3 f704 mull rm32 eax ! 697: d3 f704 mull rm32 ! 698: G neg # Negate ! 699: A3l f703 neg m32 ! 700: 3l f603 negb rm8 ! 701: w3l f703 negw rm16 ! 702: d3l f703 negl rm32 ! 703: G not # Invert bits ! 704: A3l f702 not m32 ! 705: 3l f602 notb rm8 ! 706: w3l f702 notw rm16 ! 707: d3l f702 notl rm32 ! 708: G or # Logical inclusive OR ! 709: A1l 8301 or imm8s m32 ! 710: d1l 8301 orl imm8s rm32 ! 711: w1l 8301 orw imm8s rm16 ! 712: l 000c orb imm8 al ! 713: wl 000d orw imm16 ax ! 714: dl 000d orl imm32 eax ! 715: dl 000d orl imm32 ! 716: 1l 8001 orb imm8 rm8 ! 717: w1l 8101 orw imm16 rm16 ! 718: d1l 8101 orl imm32 rm32 ! 719: lP 000a orb rm8 r8 ! 720: wlP 000b orw rm16 r16 ! 721: dlP 000b orl rm32 r32 ! 722: lP 0008 orb r8 rm8 ! 723: wlP 0009 orw r16 rm16 ! 724: dlP 0009 orl r32 rm32 ! 725: G out # Output from port ! 726: - 00e6 outb imm8 ! 727: w 00e7 outw imm8 ! 728: d 00e7 outl imm8 ! 729: - 00ee outb atdx ! 730: w 00ef outw atdx ! 731: d 00ef outl atdx ! 732: - 00ee out al dx ! 733: w 00ef out ax dx ! 734: d 00ef out eax dx ! 735: G pop # Pop a word from the stack ! 736: wa 0058 popw r16 ! 737: da 0058 popl r32 ! 738: - 001f popw ds ! 739: - 0007 popw es ! 740: - 0017 popw ss ! 741: p 00a1 popw fs ! 742: p 00a9 popw gs ! 743: w8 8f00 popw m16 ! 744: d8 8f00 popl m32 ! 745: G popa # Pop all ! 746: w 0061 popaw ! 747: d 0061 popal ! 748: G popf # Pop stack into flags ! 749: w 009d popfw ! 750: d 009d popfl ! 751: G push # Push a word on the stack ! 752: wa 0050 pushw r16 ! 753: da 0050 pushl r32 ! 754: - 006a pushb imm8s ! 755: w 0068 pushw imm16 ! 756: d 0068 pushl imm32 ! 757: - 000e pushw cs ! 758: - 001e pushw ds ! 759: - 0006 pushw es ! 760: - 0016 pushw ss ! 761: p 00a0 pushw fs ! 762: p 00a8 pushw gs ! 763: w5 ff06 pushw m16 ! 764: d5 ff06 pushl m32 ! 765: G pusha # Push all ! 766: w 0060 pushaw ! 767: d 0060 pushal ! 768: G pushf # Push flags ! 769: w 009c pushfw ! 770: d 009c pushfl ! 771: G rcl # Rotate carry left ! 772: A2 d102 rcl con1 m32 ! 773: A2 d102 rcl m32 ! 774: A2 d302 rcl cl m32 ! 775: A2 c102 rcl imm8 m32 ! 776: 2 d002 rclb con1 rm8 ! 777: 2 d002 rclb rm8 ! 778: 2 d202 rclb cl rm8 ! 779: 2 c002 rclb imm8 rm8 ! 780: w2 d102 rclw con1 rm16 ! 781: w2 d102 rclw rm16 ! 782: w2 d302 rclw cl rm16 ! 783: w2 c102 rclw imm8 rm16 ! 784: d2 d102 rcll con1 rm32 ! 785: d2 d102 rcll rm32 ! 786: d2 d302 rcll cl rm32 ! 787: d2 c102 rcll imm8 rm32 ! 788: G rcr # Rotate carry right ! 789: A2 d103 rcr con1 m32 ! 790: A2 d103 rcr m32 ! 791: A2 d303 rcr cl m32 ! 792: A2 c103 rcr imm8 m32 ! 793: 2 d003 rcrb con1 rm8 ! 794: 2 d003 rcrb rm8 ! 795: 2 d203 rcrb cl rm8 ! 796: 2 c003 rcrb imm8 rm8 ! 797: w2 d103 rcrw con1 rm16 ! 798: w2 d103 rcrw rm16 ! 799: w2 d303 rcrw cl rm16 ! 800: w2 c103 rcrw imm8 rm16 ! 801: d2 d103 rcrl con1 rm32 ! 802: d2 d103 rcrl rm32 ! 803: d2 d303 rcrl cl rm32 ! 804: d2 c103 rcrl imm8 rm32 ! 805: G rol # Rotate left ! 806: A2 d100 rol con1 m32 ! 807: A2 d100 rol m32 ! 808: A2 d300 rol cl m32 ! 809: A2 c100 rol imm8 m32 ! 810: 2 d000 rolb con1 rm8 ! 811: 2 d000 rolb rm8 ! 812: 2 d200 rolb cl rm8 ! 813: 2 c000 rolb imm8 rm8 ! 814: w2 d100 rolw con1 rm16 ! 815: w2 d100 rolw rm16 ! 816: w2 d300 rolw cl rm16 ! 817: w2 c100 rolw imm8 rm16 ! 818: d2 d100 roll con1 rm32 ! 819: d2 d100 roll rm32 ! 820: d2 d300 roll cl rm32 ! 821: d2 c100 roll imm8 rm32 ! 822: G ror # Rotate right ! 823: A2 d101 ror con1 m32 ! 824: A2 d101 ror m32 ! 825: A2 d301 ror cl m32 ! 826: A2 c101 ror imm8 m32 ! 827: 2 d001 rorb con1 rm8 ! 828: 2 d001 rorb rm8 ! 829: 2 d201 rorb cl rm8 ! 830: 2 c001 rorb imm8 rm8 ! 831: w2 d101 rorw con1 rm16 ! 832: w2 d101 rorw rm16 ! 833: w2 d301 rorw cl rm16 ! 834: w2 c101 rorw imm8 rm16 ! 835: d2 d101 rorl con1 rm32 ! 836: d2 d101 rorl rm32 ! 837: d2 d301 rorl cl rm32 ! 838: d2 c101 rorl imm8 rm32 ! 839: G sal # Shift arithmetic left ! 840: A2 d104 sal con1 m32 ! 841: A2 d104 sal m32 ! 842: A2 d304 sal cl m32 ! 843: A2 c104 sal imm8 m32 ! 844: 2 d004 salb con1 rm8 ! 845: 2 d004 salb rm8 ! 846: 2 d204 salb cl rm8 ! 847: 2 c004 salb imm8 rm8 ! 848: w2 d104 salw con1 rm16 ! 849: w2 d104 salw rm16 ! 850: w2 d304 salw cl rm16 ! 851: w2 c104 salw imm8 rm16 ! 852: d2 d104 sall con1 rm32 ! 853: d2 d104 sall rm32 ! 854: d2 d304 sall cl rm32 ! 855: d2 c104 sall imm8 rm32 ! 856: G shl # Shift arithmetic left ! 857: A2 d104 shl con1 m32 ! 858: A2 d104 shl m32 ! 859: A2 d304 shl cl m32 ! 860: A2 c104 shl imm8 m32 ! 861: 2 d004 shlb con1 rm8 ! 862: 2 d004 shlb rm8 ! 863: 2 d204 shlb cl rm8 ! 864: 2 c004 shlb imm8 rm8 ! 865: w2 d104 shlw con1 rm16 ! 866: w2 d104 shlw rm16 ! 867: w2 d304 shlw cl rm16 ! 868: w2 c104 shlw imm8 rm16 ! 869: d2 d104 shll con1 rm32 ! 870: d2 d104 shll rm32 ! 871: d2 d304 shll cl rm32 ! 872: d2 c104 shll imm8 rm32 ! 873: G sar # Shift arithmetic right ! 874: A2 d107 sar con1 m32 ! 875: A2 d107 sar m32 ! 876: A2 d307 sar cl m32 ! 877: A2 c107 sar imm8 m32 ! 878: 2 d007 sarb con1 rm8 ! 879: 2 d007 sarb rm8 ! 880: 2 d207 sarb cl rm8 ! 881: 2 c007 sarb imm8 rm8 ! 882: w2 d107 sarw con1 rm16 ! 883: w2 d107 sarw rm16 ! 884: w2 d307 sarw cl rm16 ! 885: w2 c107 sarw imm8 rm16 ! 886: d2 d107 sarl con1 rm32 ! 887: d2 d107 sarl rm32 ! 888: d2 d307 sarl cl rm32 ! 889: d2 c107 sarl imm8 rm32 ! 890: G shr # Shift right ! 891: A2 d105 shr con1 m32 ! 892: A2 d105 shr m32 ! 893: A2 d305 shr cl m32 ! 894: A2 c105 shr imm8 m32 ! 895: 2 d005 shrb con1 rm8 ! 896: 2 d005 shrb rm8 ! 897: 2 d205 shrb cl rm8 ! 898: 2 c005 shrb imm8 rm8 ! 899: w2 d105 shrw con1 rm16 ! 900: w2 d105 shrw rm16 ! 901: w2 d305 shrw cl rm16 ! 902: w2 c105 shrw imm8 rm16 ! 903: d2 d105 shrl con1 rm32 ! 904: d2 d105 shrl rm32 ! 905: d2 d305 shrl cl rm32 ! 906: d2 c105 shrl imm8 rm32 ! 907: G sbb # Subtract with borrow ! 908: A1l 8303 sbb imm8s rm32 ! 909: d1l 8303 sbbl imm8s rm32 ! 910: w1l 8303 sbbw imm8s rm16 ! 911: l 001c sbbb imm8 al ! 912: wl 001d sbbw imm16 ax ! 913: dl 001d sbbl imm32 eax ! 914: dl 001d sbbl imm32 ! 915: 1l 8003 sbbb imm8 rm8 ! 916: w1l 8103 sbbw imm16 rm16 ! 917: d1l 8103 sbbl imm32 rm32 ! 918: lP 001a sbbb rm8 r8 ! 919: wlP 001b sbbw rm16 r16 ! 920: dlP 001b sbbl rm32 r32 ! 921: lP 0018 sbbb r8 rm8 ! 922: wlP 0019 sbbw r16 rm16 ! 923: dlP 0019 sbbl r32 rm32 ! 924: G shld # Shift double precision left ! 925: wp 00a4 shldw imm8 r16 rm16 ! 926: dp 00a4 shldl imm8 r32 rm32 ! 927: wp 00a5 shldw cl r16 rm16 ! 928: dp 00a5 shldl cl r32 rm32 ! 929: G shrd # Shift double precision right ! 930: wp 00ac shrdw imm8 r16 rm16 ! 931: dp 00ac shrdl imm8 r32 rm32 ! 932: wp 00ad shrdw cl r16 rm16 ! 933: dp 00ad shrdl cl r32 rm32 ! 934: wp 00ad shrdw r16 rm16 ! 935: dp 00ad shrdl r32 rm32 ! 936: G sub # Subtract ! 937: A1l 8305 sub imm8s m32 ! 938: d1l 8305 subl imm8s rm32 ! 939: w1l 8305 subw imm8s rm16 ! 940: l 002c subb imm8 al ! 941: wl 002d subw imm16 ax ! 942: dl 002d subl imm32 eax ! 943: dl 002d subl imm32 ! 944: 1l 8005 subb imm8 rm8 ! 945: w1l 8105 subw imm16 rm16 ! 946: d1l 8105 subl imm32 rm32 ! 947: lP 002a subb rm8 r8 ! 948: wlP 002b subw rm16 r16 ! 949: dlP 002b subl rm32 r32 ! 950: lP 0028 subb r8 rm8 ! 951: wlP 0029 subw r16 rm16 ! 952: dlP 0029 subl r32 rm32 ! 953: G test # Logical compare ! 954: A3 f600 test imm8 m32 ! 955: - 00a8 testb imm8 al ! 956: w 00a9 testw imm16 ax ! 957: d 00a9 testl imm32 eax ! 958: d 00a9 testl imm32 ! 959: 3 f600 testb imm8 rm8 ! 960: w3 f700 testw imm16 rm16 ! 961: d3 f700 testl imm32 rm32 ! 962: P 0084 testb r8 rm8 ! 963: wP 0085 testw r16 rm16 ! 964: dP 0085 testl r32 rm32 ! 965: G xchg # Exchange register ! 966: wa 0090 xchgw r16 ax ! 967: wa 0090 xchgw ax r16 ! 968: da 0090 xchgl r32 eax ! 969: da 0090 xchgl r32 ! 970: da 0090 xchgl eax r32 ! 971: lP 0086 xchgb rm8 r8 ! 972: wlP 0087 xchgw rm16 r16 ! 973: dlP 0087 xchgl rm32 r32 ! 974: lP 0086 xchgb r8 rm8 ! 975: wlP 0087 xchgw r16 rm16 ! 976: dlP 0087 xchgl r32 rm32 ! 977: G xor # Logical exclusive OR ! 978: A1l 8306 xor imm8s m32 ! 979: d1l 8306 xorl imm8s rm32 ! 980: w1l 8306 xorw imm8s rm16 ! 981: l 0034 xorb imm8 al ! 982: wl 0035 xorw imm16 ax ! 983: dl 0035 xorl imm32 eax ! 984: dl 0035 xorl imm32 ! 985: 1l 8006 xorb imm8 rm8 ! 986: w1l 8106 xorw imm16 rm16 ! 987: d1l 8106 xorl imm32 rm32 ! 988: lP 0032 xorb rm8 r8 ! 989: wlP 0033 xorw rm16 r16 ! 990: dlP 0033 xorl rm32 r32 ! 991: lP 0030 xorb r8 rm8 ! 992: wlP 0031 xorw r16 rm16 ! 993: dlP 0031 xorl r32 rm32 ! 994: + 2 # Preloaded symbol table ! 995: al REG 0 1 ! 996: ax REG 0 2 ! 997: eax REG 0 4 ! 998: cl REG 1 1 ! 999: cx REG 1 2 ! 1000: ecx REG 1 4 ! 1001: dl REG 2 1 ! 1002: dx REG 2 2 ! 1003: edx REG 2 4 ! 1004: bl REG 3 1 ! 1005: bx REG 3 2 ! 1006: ebx REG 3 4 ! 1007: ah REG 4 1 ! 1008: sp REG 4 2 ! 1009: esp REG 4 4 ! 1010: ch REG 5 1 ! 1011: bp REG 5 2 ! 1012: ebp REG 5 4 ! 1013: dh REG 6 1 ! 1014: si REG 6 2 ! 1015: esi REG 6 4 ! 1016: bh REG 7 1 ! 1017: di REG 7 2 ! 1018: edi REG 7 4 ! 1019: # Segment regs ! 1020: es SREG 0 2 ! 1021: cs SREG 1 2 ! 1022: ss SREG 2 2 ! 1023: ds SREG 3 2 ! 1024: fs SREG 4 2 ! 1025: gs SREG 5 2 ! 1026: # Control registers (CR1 is missing) ! 1027: cr0 CREG 0 4 ! 1028: cr2 CREG 2 4 ! 1029: cr3 CREG 3 4 ! 1030: # Debug registers (DR4 and DR5 missing) ! 1031: dr0 DREG 0 4 ! 1032: dr1 DREG 1 4 ! 1033: dr2 DREG 2 4 ! 1034: dr3 DREG 3 4 ! 1035: dr6 DREG 6 4 ! 1036: dr7 DREG 7 4 ! 1037: # Test registers (TR0 - TR5 missing) ! 1038: tr6 TREG 6 4 ! 1039: tr7 TREG 7 4 ! 1040: # Miscellaneous operators ! 1041: %st FSTACK 0 0 ! 1042: .rem REM 0 0 ! 1043: .div DIVIDE 0 4 ! 1044: .defined DEFINED 0 4 ! 1045: .sizeof SIZEOF 0 4 ! 1046: .segment SEGMENT 0 4 ! 1047: .location LOCATION 0 4 ! 1048: .string TOSTRING 0 4 ! 1049: .number TONUMBER 0 4 ! 1050: .float TOFLOAT 0 4 ! 1051: .parmct PARMCT 0 4 ! 1052: + 3 # Assembler directives ! 1053: 1 .fail ERROR CMD # print message as error ! 1054: 0 .warn ERROR CMD # print message as warning ! 1055: 0 .mexit MEXIT NCMD # exit current macro ! 1056: 0 .shift SHIFT ICMD # shift macro parms ! 1057: 0 .org ORG DATA # move current location ! 1058: 0 .if IF ICMD # conditional assembly ! 1059: 0 .else ELSE NCMD # connects to if ! 1060: 0 .endi ENDI NCMD # end if ! 1061: 0 .while WHILE ICMD # conditional assembly loop ! 1062: 0 .endw ENDW NCMD # end while ! 1063: 0 .macro MACRO DCMD # declare macro ! 1064: 0 - MAC CMD # Macro expansion no opcode. ! 1065: 0 .endm ENDM NCMD # end macro declaration ! 1066: 0 .include INCLUDE CMD # include file ! 1067: 0 .equ EQU ICMD # newlab .equ expr ! 1068: 0 .define EQUS CMD # newstr .define anything ! 1069: 0 .undef UNDEFINE CMD # .undef newstr ! 1070: 1 .list LIST NCMD # Turn on listing if -l was on ! 1071: 0 .nolist LIST NCMD # Turn off listing ! 1072: 0 .llen LLEN ICMD # set print line length, default 112 ! 1073: 0 .plen PLEN ICMD # page length, default 56 ! 1074: 1 .page PAGE NCMD # Turn on page breaks ! 1075: 0 .eject EJECT NCMD # Force a page break ! 1076: 0 .mlist MLIST CMD # list macro expansions ! 1077: 0 .ttl TITLE CMD # Set page title ! 1078: 0 .section SECTION CMD # Set section ! 1079: 0 .nopage PAGE NCMD # Turn off page breaks ! 1080: 0 .byte DATA DATA # .byte val [,val] ! 1081: 1 .word DATA DATA # .word val [,val] ! 1082: 1 .2byte UDATA DATA # .2byte val, val ! 1083: 1 .value DATA DATA # .value val [,val] ! 1084: 2 .long DATA DATA # .long val [,val] ! 1085: 2 .4byte UDATA DATA # .4byte val, [val] ! 1086: 3 .float DATA DATA # .float val [,val] ! 1087: 4 .double DATA DATA # .double val [,val] ! 1088: 5 .string DATA DATA # .string astring ! 1089: 2 .comm COMM ECMDX # .comm name expr ! 1090: 2 .lcomm COMM ECMDX # .lcomm name expr ! 1091: 1 .alignon ALIGNON NCMD # align non char data objects ! 1092: 0 .alignoff ALIGNON NCMD # don't align non char data objects ! 1093: 0 .align ALIGN DATA # .align val [, fillChar] ! 1094: 0 .even EVEN NCMD # .even ! 1095: 2 .bss SEGMENT ECMD # .bss tag, bytes ! 1096: 2 .bssd SEGMENT ECMD # .bss tag, bytes ! 1097: 0 .zero ZERO ICMD # .zero value ! 1098: 0 .blkb BLKB ICMD # .blkb value ! 1099: 1 .data SEGMENT NCMD # .data ! 1100: 1 .shrd SEGMENT NCMD # .data ! 1101: 1 .prvd SEGMENT NCMD # .data ! 1102: 1 .strn SEGMENT NCMD # .data ! 1103: 0 .text SEGMENT NCMD # .text ! 1104: 10000 .previous SEGMENT NCMD # .previous ! 1105: 0 .shri SEGMENT NCMD # .text ! 1106: 0 .prvi SEGMENT NCMD # .text ! 1107: 0 .globl GLOBL DATA # .globl name [,name] ! 1108: 0 .ident CMNT CMD # .ident string ! 1109: 1 .version CMNT CMD # .comment string ! 1110: 0 .set SET ECMD # .set name, expr ! 1111: 1 .32 LMODE NCMD # .32 ! 1112: 0 .16 LMODE NCMD # .16 ! 1113: 0 .errataon ERRATA NCMD # .errataon ! 1114: 1 .errataoff ERRATA NCMD # .errataon ! 1115: 0 .warnon WARNINGS NCMD # .warnon ! 1116: 1 .warnoff WARNINGS NCMD # .warnoff ! 1117: 0 .unixorder OPORDER NCMD # .unixorder ! 1118: 1 .intelorder OPORDER NCMD # .intelorder ! 1119: 0 .bracketnorm BORDER NCMD # .bracketnorm ! 1120: 1 .bracketrev BORDER NCMD # .bracketrev ! 1121: 0 .size SIZE ICMD # .size expr ! 1122: 0 .type TYPE ICMD # .type expr ! 1123: 0 .val VAL ICMD # .val expr ! 1124: 0 .tag TAG CMD # .tag string ! 1125: 0 .scl SCL ICMD # .scl expr ! 1126: 0 .ln LN ICMD # .ln expr ! 1127: 0 .line LINE ICMD # .line expr ! 1128: 0 .file FILE CMD # .file name ! 1129: 0 .endef ENDF NCMD # .endf ! 1130: 0 .def DEF CMD # .def name ! 1131: 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.