6-8 Opcodes Instruction Description 37 AAA ASCII adjust AL (carry into AH) after addition D5 0A AAD ASCII adjust before division (AX = 10*AH + AL) D4 0A AAM ASCII adjust after multiply (AL/10: AH=Quo AL=Rem) 3F AAS ASCII adjust AL (borrow from AH) after subtraction 14 ib ADC AL,ib Add with carry immediate byte into AL 15 iw ADC AX,iw Add with carry immediate word into AX 80 /2 ib ADC eb,ib Add with carry immediate byte into EA byte 10 /r ADC eb,rb Add with carry byte register into EA byte 83 /2 ib ADC ew,ib Add with carry immediate byte into EA word 81 /2 iw ADC ew,iw Add with carry immediate word into EA word 11 /r ADC ew,rw Add with carry word register into EA word 12 /r ADC rb,eb Add with carry EA byte into byte register 13 /r ADC rw,ew Add with carry EA word into word register 04 ib ADD AL,ib Add immediate byte into AL 05 iw ADD AX,iw Add immediate word into AX 80 /0 ib ADD eb,ib Add immediate byte into EA byte 00 /r ADD eb,rb Add byte register into EA byte 83 /0 ib ADD ew,ib Add immediate byte into EA word 81 /0 iw ADD ew,iw Add immediate word into EA word 01 /r ADD ew,rw Add word register into EA word 02 /r ADD rb,eb Add EA byte into byte register 03 /r ADD rw,ew Add EA word into word register 0F 20 #ADD4S Add CL nibbles BCD from DS:SI into ES:DI (CL even,NZ) 24 ib AND AL,ib Logical-AND immediate byte into AL 25 iw AND AX,iw Logical-AND immediate word into AX 80 /4 ib AND eb,ib Logical-AND immediate byte into EA byte 20 /r AND eb,rb Logical-AND byte register into EA byte 83 /4 ib AND ew,ib Logical-AND immediate byte into EA word 81 /4 iw AND ew,iw Logical-AND immediate word into EA word 21 /r AND ew,rw Logical-AND word register into EA word 22 /r AND rb,eb Logical-AND EA byte into byte register 23 /r AND rw,ew Logical-AND EA word into word register 63 /r *ARPL ew,rw Adjust RPL of EA word not smaller than RPL of rw 62 /r *BOUND rw,md INT 5 if rw not between [md] and [md+2] inclusive 9A cd CALL cd Call far segment, immediate 4-byte address E8 cw CALL cw Call near, offset relative to next instruction FF /3 CALL ed Call far segment, address at EA doubleword FF /2 CALL ew Call near, offset absolute at EA word 0F FF ib #CALL80 ib Call 8080-emulation code at INT number ib 98 CBW Convert byte into word (AH = top bit of AL) F8 CLC Clear carry flag FC CLD Clear direction flag so SI and DI will increment FA CLI Clear interrupt enable flag; interrupts disabled 6-9 0F 12/0 #CLRBIT eb,CL Clear bit CL of eb 0F 13/0 #CLRBIT ew,CL Clear bit CL of ew 0F 1A/0 ib #CLRBIT eb,ib Clear bit ib of eb 0F 1B/0 ib #CLRBIT ew,ib Clear bit ib of ew 0F 06 *CLTS Clear task switched flag F5 CMC Complement carry flag 3C ib CMP AL,ib Subtract immediate byte from AL for flags only 3D iw CMP AX,iw Subtract immediate word from AX for flags only 80 /7 ib CMP eb,ib Subtract immediate byte from EA byte for flags only 38 /r CMP eb,rb Subtract byte register from EA byte for flags only 83 /7 ib CMP ew,ib Subtract immediate byte from EA word for flags only 81 /7 iw CMP ew,iw Subtract immediate word from EA word for flags only 39 /r CMP ew,rw Subtract word register from EA word for flags only 3A /r CMP rb,eb Subtract EA byte from byte register for flags only 3B /r CMP rw,ew Subtract EA word from word register for flags only 0F 26 #CMP4S Compare CL nibbles CD at DS:SI from ES:DI (CL even,NZ) A6 CMPS mb,mb Compare bytes ES:[DI] from [SI], advance SI and DI A7 CMPS mw,mw Compare words ES:[DI] from [SI], advance SI and DI A6 CMPSB Compare bytes ES:[DI] from DS:[SI], advance SI and DI A7 CMPSW Compare words ES:[DI] from DS:[SI], advance SI and DI 99 CWD Convert word to doubleword (DX = top bit of AX) 27 DAA Decimal adjust AL after addition 2F DAS Decimal adjust AL after subtraction FE /1 DEC eb Decrement EA byte by 1 FF /1 DEC ew Decrement EA word by 1 48+rw DEC rw Decrement word register by 1 F6 /6 DIV eb Unsigned divide AX by EA byte (AL=Quo AH=Rem) F7 /6 DIV ew Unsigned divide DXAX by EA word (AX=Quo DX=Rem) C8 iw 00 *ENTER iw,0 Make stack frame, iw bytes local storage, 0 levels C8 iw 01 *ENTER iw,1 Make stack frame, iw bytes local storage, 1 level C8 iw ib *ENTER iw,ib Make stack frame, iw bytes local storage, ib levels Fany Floating point set is in Chapter 7 F4 HLT Halt F6 /7 IDIV eb Signed divide AX by EA byte (AL=Quo AH=Rem) F7 /7 IDIV ew Signed divide DXAX by EA word (AX=Quo DX=Rem) F6 /5 IMUL eb Signed multiply (AX = AL * EA byte) F7 /5 IMUL ew Signed multiply (DXAX = AX * EA word) 6B /r ib *IMUL rw,ib Signed multiply immediate byte into word register 69 /r iw *IMUL rw,iw Signed multiply immediate word into word register 69 /r iw *IMUL rw,ew,iw Signed multiply (rw = EA word * immediate word) 6B /r ib *IMUL rw,ew,ib Signed multiply (rw = EA word * immediate byte) E4 ib IN AL,ib Input byte from immediate port into AL EC IN AL,DX Input byte from port DX into AL E5 ib IN AX,ib Input word from immediate port into AX ED IN AX,DX Input word from port DX into AX FE /0 INC eb Increment EA byte by 1 FF /0 INC ew Increment EA word by 1 40+rw INC rw Increment word register by 1 6C *INS eb,DX Input byte from port DX into [DI] 6D *INS ew,DX Input word from port DX into [DI] 6C *INSB Input byte from port DX into ES:[DI] 6D *INSW Input word from port DX into ES:[DI] 6-10 CC INT 3 Interrupt 3 (trap to debugger) (far call, with flags CD ib INT ib Interrupt numbered by immediate byte pushed first) CE INTO Interrupt 4 if overflow flag is 1 CF IRET Interrupt return (far return and pop flags) 77 cb JA cb Jump short if above (CF=0 and ZF=0) above=UNSIGNED 73 cb JAE cb Jump short if above or equal (CF=0) 72 cb JB cb Jump short if below (CF=1) below=UNSIGNED 76 cb JBE cb Jump short if below or equal (CF=1 or ZF=1) 72 cb JC cb Jump short if carry (CF=1) E3 cb JCXZ cb Jump short if CX register is zero 74 cb JE cb Jump short if equal (ZF=1) 7F cb JG cb Jump short if greater (ZF=0 and SF=OF) greater=SIGNED 7D cb JGE cb Jump short if greater or equal (SF=OF) 7C cb JL cb Jump short if less (SF/=OF) less=SIGNED 7E cb JLE cb Jump short if less or equal (ZF=1 or SF/=OF) EB cb JMP cb Jump short (signed byte relative to next instruction) EA cd JMP cd Jump far (4-byte immediate address) E9 cw JMP cw Jump near (word offset relative to next instruction) FF /4 JMP ew Jump near to EA word (absolute offset) FF /5 JMP md Jump far (4-byte address in memory doubleword) 76 cb JNA cb Jump short if not above (CF=1 or ZF=1) 72 cb JNAE cb Jump short if not above or equal (CF=1) 73 cb JNB cb Jump short if not below (CF=0) 77 cb JNBE cb Jump short if not below or equal (CF=0 and ZF=0) 73 cb JNC cb Jump short if not carry (CF=0) 75 cb JNE cb Jump short if not equal (ZF=0) 7E cb JNG cb Jump short if not greater (ZF=1 or SF/=OF) 7C cb JNGE cb Jump short if not greater or equal (SF/=OF) 7D cb JNL cb Jump short if not less (SF=OF) 7F cb JNLE cb Jump short if not less or equal (ZF=0 and SF=OF) 71 cb JNO cb Jump short if not overflow (OF=0) 7B cb JNP cb Jump short if not parity (PF=0) 79 cb JNS cb Jump short if not sign (SF=0) 75 cb JNZ cb Jump short if not zero (ZF=0) 70 cb JO cb Jump short if overflow (OF=1) 7A cb JP cb Jump short if parity (PF=1) 7A cb JPE cb Jump short if parity even (PF=1) 7B cb JPO cb Jump short if parity odd (PF=0) 78 cb JS cb Jump short if sign (SF=1) 74 cb JZ cb Jump short if zero (ZF=1) 9F LAHF Load: AH = flags SF ZF xx AF xx PF xx CF 0F 02 /r *LAR rw,ew Load: high(rw) = Access Rights byte, selector ew C5 /r LDS rw,ed Load EA doubleword into DS and word register 8D /r LEA rw,m Calculate EA offset given by m, place in rw C9 *LEAVE Set SP to BP, then POP BP (reverses previous ENTER) C4 /r LES rw,ed Load EA doubleword into ES and word register 0F 01 /2 *LGDT m Load 6 bytes at m into Global Descriptor Table reg 0F 01 /3 *LIDT m Load 6 bytes at m into Interrupt Descriptor Table reg 0F 00 /2 *LLDT ew Load selector ew into Local Descriptor Table reg 0F 01 /6 *LMSW ew Load EA word into Machine Status Word F0 LOCK (prefix) Assert BUSLOCK signal for the next instruction 6-11 0F 33/r #LODBITS rb,rb Load AX with DS:SI,bit rb (incr. SI,rb), rb+1 bits 0F 3B/0 ib #LODBITS rb,ib Load AX with DS:SI,bit rb (incr. SI,rb), ib+1 bits AC LODS mb Load byte [SI] into AL, advance SI AD LODS mw Load word [SI] into AX, advance SI AC LODSB Load byte [SI] into AL, advance SI AD LODSW Load word [SI] into AX, advance SI E2 cb LOOP cb noflags DEC CX; jump short if CX/=0 E1 cb LOOPE cb noflags DEC CX; jump short if CX/=0 and equal (ZF=1) E0 cb LOOPNE cb noflags DEC CX; jump short if CX/=0 and not equal E0 cb LOOPNZ cb noflags DEC CX; jump short if CX/=0 and ZF=0 E1 cb LOOPZ cb noflags DEC CX; jump short if CX/=0 and zero (ZF=1) 0F 03 /r *LSL rw,ew Load: rw = Segment Limit, selector ew 0F 00 /3 *LTR ew Load EA word into Task Register A0 iw MOV AL,xb Move byte variable (offset iw) into AL A1 iw MOV AX,xw Move word variable (offset iw) into AX 8E /3 MOV DS,mw Move memory word into DS 8E /3 MOV DS,rw Move word register into DS C6 /0 ib MOV eb,ib Move immediate byte into EA byte 88 /r MOV eb,rb Move byte register into EA byte 8E /0 MOV ES,mw Move memory word into ES 8E /0 MOV ES,rw Move word register into ES 8C /1 MOV ew,CS Move CS into EA word 8C /3 MOV ew,DS Move DS into EA word C7 /0 iw MOV ew,iw Move immediate word into EA word 8C /0 MOV ew,ES Move ES into EA word 89 /r MOV ew,rw Move word register into EA word 8C /2 MOV ew,SS Move SS into EA word B0+rb ib MOV rb,ib Move immediate byte into byte register 8A /r MOV rb,eb Move EA byte into byte register B8+rw iw MOV rw,iw Move immediate word into word register 8B /r MOV rw,ew Move EA word into word register 8E /2 MOV SS,mw Move memory word into SS 8E /2 MOV SS,rw Move word register into SS A2 iw MOV xb,AL Move AL into byte variable (offset iw) A3 iw MOV xw,AX Move AX into word register (offset iw) A4 MOVS mb,mb Move byte [SI] to ES:[DI], advance SI and DI A5 MOVS mw,mw Move word [SI] to ES:[DI], advance SI and DI A4 MOVSB Move byte DS:[SI] to ES:[DI], advance SI and DI A5 MOVSW Move word DS:[SI] to ES:[DI], advance SI and DI 6-12 F6 /4 MUL eb Unsigned multiply (AX = AL * EA byte) F7 /4 MUL ew Unsigned multiply (DXAX = AX * EA word) F6 /3 NEG eb Two's complement negate EA byte F7 /3 NEG ew Two's complement negate EA word NIL (prefix) Special "do-nothing" opcode assembles no code 90 NOP No Operation F6 /2 NOT eb Reverse each bit of EA byte F7 /2 NOT ew Reverse each bit of EA word 0F 16/0 #NOTBIT eb,CL Complement bit CL of eb 0F 17/0 #NOTBIT ew,CL Complement bit CL of ew 0F 1E/0 ib #NOTBIT eb,ib Complement bit ib of eb 0F 1F/0 ib #NOTBIT ew,ib Complement bit ib of ew 0C ib OR AL,ib Logical-OR immediate byte into AL 0D iw OR AX,iw Logical-OR immediate word into AX 80 /1 ib OR eb,ib Logical-OR immediate byte into EA byte 08 /r OR eb,rb Logical-OR byte register into EA byte 83 /1 ib OR ew,ib Logical-OR immediate byte into EA word 81 /1 iw OR ew,iw Logical-OR immediate word into EA word 09 /r OR ew,rw Logical-OR word register into EA word 0A /r OR rb,eb Logical-OR EA byte into byte register 0B /r OR rw,ew Logical-OR EA word into word register E6 ib OUT ib,AL Output byte AL to immediate port number ib E7 ib OUT ib,AX Output word AX to immediate port number ib EE OUT DX,AL Output byte AL to port number DX EF OUT DX,AX Output word AX to port number DX 6E *OUTS DX,eb Output byte [SI] to port number DX, advance SI 6F *OUTS DX,ew Output word [SI] to port number DX, advance SI 6E *OUTSB Output byte DS:[SI] to port number DX, advance SI 6F *OUTSW Output word DS:[SI] to port number DX, advance SI 1F POP DS Set DS to top of stack, increment SP by 2 07 POP ES Set ES to top of stack, increment SP by 2 8F /0 POP mw Set memory word to top of stack, increment SP by 2 58+rw POP rw Set word register to top of stack, increment SP by 2 17 POP SS Set SS to top of stack, increment SP by 2 61 *POPA Pop DI,SI,BP,SP,BX,DX,CX,AX (SP value is ignored) 9D POPF Set flags register to top of stack, increment SP by 2 0E PUSH CS Set [SP-2] to CS, then decrement SP by 2 1E PUSH DS Set [SP-2] to DS, then decrement SP by 2 06 PUSH ES Set [SP-2] to ES, then decrement SP by 2 6A ib *PUSH ib Push sign-extended immediate byte 68 iw *PUSH iw Set [SP-2] to immediate word, then decrement SP by 2 FF /6 PUSH mw Set [SP-2] to memory word, then decrement SP by 2 50+rw PUSH rw Set [SP-2] to word register, then decrement SP by 2 16 PUSH SS Set [SP-2] to SS, then decrement SP by 2 60 *PUSHA Push AX,CX,DX,BX,original SP,BP,SI,DI 9C PUSHF Set [SP-2] to flags register, then decrement SP by 2 D0 /2 RCL eb,1 Rotate 9-bit quantity (CF, EA byte) left once D2 /2 RCL eb,CL Rotate 9-bit quantity (CF, EA byte) left CL times C0 /2 ib *RCL eb,ib Rotate 9-bit quantity (CF, EA byte) left ib times D1 /2 RCL ew,1 Rotate 17-bit quantity (CF, EA word) left once D3 /2 RCL ew,CL Rotate 17-bit quantity (CF, EA word) left CL times C1 /2 ib *RCL ew,ib Rotate 17-bit quantity (CF, EA word) left ib times 6-13 D0 /3 RCR eb,1 Rotate 9-bit quantity (CF, EA byte) right once D2 /3 RCR eb,CL Rotate 9-bit quantity (CF, EA byte) right CL times C0 /3 ib *RCR eb,ib Rotate 9-bit quantity (CF, EA byte) right ib times D1 /3 RCR ew,1 Rotate 17-bit quantity (CF, EA word) right once D3 /3 RCR ew,CL Rotate 17-bit quantity (CF, EA word) right CL times C1 /3 ib *RCR ew,ib Rotate 17-bit quantity (CF, EA word) right ib times F3 REP (prefix) Repeat following MOVS,LODS,STOS,INS, or OUTS CX times 65 #REPC (prefix) Repeat following CMPS or SCAS CX times or until CF=0 F3 REPE (prefix) Repeat following CMPS or SCAS CX times or until ZF=0 64 #REPNC (prfix) Repeat following CMPS or SCAS CX times or until CF=1 F2 REPNE (prfix) Repeat following CMPS or SCAS CX times or until ZF=1 F2 REPNZ (prfix) Repeat following CMPS or SCAS CX times or until ZF=1 F3 REPZ (prefix) Repeat following CMPS or SCAS CX times or until ZF=0 CB RETF Return to far caller (pop offset, then seg) C3 RET Return to near caller (pop offset only) CA iw RETF iw RET (far), pop offset, seg, iw bytes C2 iw RET iw RET (near), pop offset, iw bytes pushed before Call D0 /0 ROL eb,1 Rotate 8-bit EA byte left once D2 /0 ROL eb,CL Rotate 8-bit EA byte left CL times C0 /0 ib *ROL eb,ib Rotate 8-bit EA byte left ib times D1 /0 ROL ew,1 Rotate 16-bit EA word left once D3 /0 ROL ew,CL Rotate 16-bit EA word left CL times C1 /0 ib *ROL ew,ib Rotate 16-bit EA word left ib times 0F 28/0 #ROL4 eb Rotate nibbles: Heb=Leb HAL,Leb=LAL LAL=Heb D0 /1 ROR eb,1 Rotate 8-bit EA byte right once D2 /1 ROR eb,CL Rotate 8-bit EA byte right CL times C0 /1 ib *ROR eb,ib Rotate 8-bit EA byte right ib times D1 /1 ROR ew,1 Rotate 16-bit EA word right once D3 /1 ROR ew,CL Rotate 16-bit EA word right CL times C1 /1 ib *ROR ew,ib Rotate 16-bit EA word right ib times 0F 2A/0 #ROR4 eb Rotate nibbles: Leb=Heb Heb=LAL AL=eb 9E SAHF Store AH into flags SF ZF xx AF xx PF xx CF D0 /4 SAL eb,1 Multiply EA byte by 2, once D2 /4 SAL eb,CL Multiply EA byte by 2, CL times C0 /4 ib *SAL eb,ib Multiply EA byte by 2, ib times D1 /4 SAL ew,1 Multiply EA word by 2, once D3 /4 SAL ew,CL Multiply EA word by 2, CL times C1 /4 ib *SAL ew,ib Multiply EA word by 2, ib times D0 /7 SAR eb,1 Signed divide EA byte by 2, once D2 /7 SAR eb,CL Signed divide EA byte by 2, CL times C0 /7 ib *SAR eb,ib Signed divide EA byte by 2, ib times D1 /7 SAR ew,1 Signed divide EA word by 2, once D3 /7 SAR ew,CL Signed divide EA word by 2, CL times C1 /7 ib *SAR ew,ib Signed divide EA word by 2, ib times 6-14 1C ib SBB AL,ib Subtract with borrow immediate byte from AL 1D iw SBB AX,iw Subtract with borrow immediate word from AX 80 /3 ib SBB eb,ib Subtract with borrow immediate byte from EA byte 18 /r SBB eb,rb Subtract with borrow byte register from EA byte 83 /3 ib SBB ew,ib Subtract with borrow immediate byte from EA word 81 /3 iw SBB ew,iw Subtract with borrow immediate word from EA word 19 /r SBB ew,rw Subtract with borrow word register from EA word 1A /r SBB rb,eb Subtract with borrow EA byte from byte register 1B /r SBB rw,ew Subtract with borrow EA word from word register AE SCAS mb Compare bytes AL - ES:[DI], advance DI AF SCAS mw Compare words AL - ES:[DI], advance DI AE SCASB Compare bytes AX - ES:[DI], advance DI AF SCASW Compare words AX - ES:[DI], advance DI 0F 14/0 #SETBIT eb,CL Set bit CL of eb 0F 15/0 #SETBIT ew,CL Set bit CL of ew 0F 1C/0 ib #SETBIT eb,ib Set bit ib of eb 0F 1D/0 ib #SETBIT ew,ib Set bit ib of ew 0F 01 /0 *SGDT m Store 6-byte Global Descriptor Table register to M D0 /4 SHL eb,1 Multiply EA byte by 2, once D2 /4 SHL eb,CL Multiply EA byte by 2, CL times C0 /4 ib *SHL eb,ib Multiply EA byte by 2, ib times D1 /4 SHL ew,1 Multiply EA word by 2, once D3 /4 SHL ew,CL Multiply EA word by 2, CL times C1 /4 ib *SHL ew,ib Multiply EA word by 2, ib times D0 /5 SHR eb,1 Unsigned divide EA byte by 2, once D2 /5 SHR eb,CL Unsigned divide EA byte by 2, CL times C0 /5 ib *SHR eb,ib Unsigned divide EA byte by 2, ib times D1 /5 SHR ew,1 Unsigned divide EA word by 2, once D3 /5 SHR ew,CL Unsigned divide EA word by 2, CL times C1 /5 ib *SHR ew,ib Unsigned divide EA word by 2, ib times 0F 01 /1 *SIDT m Store 6-byte Interrupt Descriptor Table register to M 0F 00 /0 *SLDT ew Store Local Descriptor Table register to EA word 0F 01 /4 *SMSW ew Store Machine Status Word to EA word F9 STC Set carry flag FD STD Set direction flag so SI and DI will decrement FB STI Set interrupt enable flag, interrupts enabled 0F 31/r #STOBITS rb,rb Store AX to ES:DI,bit rb (incr. DI,rb), rb+1 bits 0F 39/0 ib #STOBITS rb,ib Store AX to ES:DI,bit rb (incr. DI,rb), ib+1 bits AA STOS mb Store AL to byte [DI], advance DI AB STOS mw Store AX to word [DI], advance DI AA STOSB Store AL to byte ES:[DI], advance DI AB STOSW Store AX to word ES:[DI], advance DI 0F 00 /1 *STR ew Store Task Register to EA word 6-15 2C ib SUB AL,ib Subtract immediate byte from AL 2D iw SUB AX,iw Subtract immediate word from AX 80 /5 ib SUB eb,ib Subtract immediate byte from EA byte 28 /r SUB eb,rb Subtract byte register from EA byte 83 /5 ib SUB ew,ib Subtract immediate byte from EA word 81 /5 iw SUB ew,iw Subtract immediate word from EA word 29 /r SUB ew,rw Subtract word register from EA word 2A /r SUB rb,eb Subtract EA byte from byte register 2B /r SUB rw,ew Subtract EA word from word register 0F 22 #SUB4S Sub CL nibbles BCD at DS:SI from ES:DI (CL even,NZ) A8 ib TEST AL,ib AND immediate byte into AL for flags only A9 iw TEST AX,iw AND immediate word into AX for flags only F6 /0 ib TEST eb,ib AND immediate byte into EA byte for flags only 84 /r TEST eb,rb AND byte register into EA byte for flags only F7 /0 iw TEST ew,iw AND immediate word into EA word for flags only 85 /r TEST ew,rw AND word register into EA word for flags only 84 /r TEST rb,eb AND EA byte into byte register for flags only 85 /r TEST rw,ew AND EA word into word register for flags only 0F 10/0 #TESTBIT eb,CL Test bit CL of eb, set Z flag 0F 11/0 #TESTBIT ew,CL Test bit CL of ew, set Z flag 0F 18/0 ib #TESTBIT eb,ib Test bit ib of eb, set Z flag 0F 19/0 ib #TESTBIT ew,ib Test bit ib of ew, set Z flag 9B WAIT Wait until BUSY pin is inactive (HIGH) 0F 00 /4 *VERR ew Set ZF=1 if segment can be read, selector ew 0F 00 /5 *VERW ew Set ZF=1 if segment can be written to, selector ew 9r XCHG AX,rw Exchange word register with AX 86 /r XCHG eb,rb Exchange byte register with EA byte 87 /r XCHG ew,rw Exchange word register with EA word 86 /r XCHG rb,eb Exchange EA byte with byte register 9r XCHG rw,AX Exchange with word register 87 /r XCHG rw,ew Exchange EA word with word register D7 XLAT mb Set AL to memory byte [BX + unsigned AL] D7 XLATB Set AL to memory byte DS:[BX + unsigned AL] 34 ib XOR AL,ib Exclusive-OR immediate byte into AL 35 iw XOR AX,iw Exclusive-OR immediate word into AX 80 /6 ib XOR eb,ib Exclusive-OR immediate byte into EA byte 30 /r XOR eb,rb Exclusive-OR byte register into EA byte 83 /6 ib XOR ew,ib Exclusive-OR immediate byte into EA word 81 /6 iw XOR ew,iw Exclusive-OR immediate word into EA word 31 /r XOR ew,rw Exclusive-OR word register into EA word 32 /r XOR rb,eb Exclusive-OR EA byte into byte register 33 /r XOR rw,ew Exclusive-OR EA word into word register * Starred forms will not execute on 8086/8088! See note at top of chart. # These instructions work only on NEC chips! See note at top of chart.