指令名称 | 指令形式 | 机器码 | 标志位(设置/测试) | 说 明 | 应用举例 |
---|
AAA | AAA | 37 | 设置 AF CF | 加法后的ASCII码调整AL | AAA | AAD | AAD | D5 0A 或 D5 ib | 设置 SF ZF PF | 除法前的ASCII码调整AX | AAD | AAM | AAM | D4 0A 或 D4 ib | 设置 PF SF ZF | 乘法后的ASCII码调整AX | AAM | AAS | AAS | 3F | 设置 AF CF | 减法后的ASCII码调整AL | AAS | ADC | ADC AL, imm8 | 14 ib | 设置 AF CF OF SF PF ZF | 带进位加法 | ADC AL, 1F | ADC AX, imm16 | 15 iw | ADC AX, 4F80 | ADC EAX, imm32 | 15 id | ADC EAX, 00004F80 | ADC r/m8, imm8 | 80 /2 ib | ADC BYTE PTR [006387EA], 39 | ADC r/m16,imm16 | 81 /2 iw | ADC WORD PTR [006387EA], 1039 | ADC r/m32,imm32 | 81 /2 id | ADC DWORD PTR [006387EA], 00001039 | ADC r/m16,imm8 | 83 /2 ib | ADC WORD PTR [006387EA], 39 | ADC r/m32,imm8 | 83 /2 ib | ADC DWORD PTR [006387EA], 39 | ADC r/m8,r8 | 10 /r | ADC [006387EA], AL | ADC r/m16,r16 | 11 /r | ADC [006387EA], AX | ADC r/m32,r32 | 11 / r | ADC [006387EA], EAX | ADC r8,r/m8 | 12 /r | ADC AL, [006387EA] | ADC r16,r/m16 | 13 /r | ADC AX, [006387EA] | ADC r32,r/m32 | 13 /r | ADC EAX, [006387EA] | ADD | ADD AL, imm8 | 04 ib | 设置 AF CF OF SF PF ZF | 加法 | ADD AL, 1F | ADD AX, imm16 | 05 iw | ADD AX, 4F80 | ADD EAX, imm32 | 05 id | ADD EAX, 00004F80 | ADD r/m8, imm8 | 80 /0 ib | ADD BYTE PTR [006387EA], 39 | ADD r/m16,imm16 | 81 /0 iw | ADD WORD PTR [006387EA], 1039 | ADD r/m32,imm32 | 81 /0 id | ADD DWORD PTR [006387EA], 00001039 | ADD r/m16,imm8 | 83 /0 ib | ADD WORD PTR [006387EA], 39 | ADD r/m32,imm8 | 83 /0 ib | ADD DWORD PTR [006387EA], 39 | ADD r/m8,r8 | 00 /r | ADD [006387EA], AL | ADD r/m16,r16 | 01 /r | ADD [006387EA], AX | ADD r/m32,r32 | 01 / r | ADD [006387EA], EAX | ADD r8,r/m8 | 02 /r | ADD AL, [006387EA] | ADD r16,r/m16 | 03 /r | ADD AX, [006387EA] | ADD r32,r/m32 | 03 /r | ADD EAX, [006387EA] | AND | AND AL, imm8 | 24 ib | 设置 CF OF PF SF ZF | 逻辑与 | AND AL, 1F | AND AX, imm16 | 25 iw | AND AX, 4F80 | AND EAX, imm32 | 25 id | AND EAX, 00004F80 | AND r/m8, imm8 | 80 /4 ib | AND BYTE PTR [006387EA], 39 | AND r/m16,imm16 | 81 /4 iw | AND WORD PTR [006387EA], 1039 | AND r/m32,imm32 | 81 /4 id | AND DWORD PTR [006387EA], 00001039 | AND r/m16,imm8 | 83 /4 ib | AND WORD PTR [006387EA], 39 | AND r/m32,imm8 | 83 /4 ib | AND DWORD PTR [006387EA], 39 | AND r/m8,r8 | 20 /r | AND BYTE PTR [006387EA], AL | AND r/m16,r16 | 21 /r | AND WORD PTR [006387EA], AX | AND r/m32,r32 | 21 /r | AND DWORD PTR [006387EA], EAX | AND r8,r/m8 | 22 /r | AND AL, [006387EA] | AND r16,r/m16 | 23 /r | AND AX, [006387EA] | AND r32,r/m32 | 23 /r | AND EAX, [006387EA] | ARPL | ARPL r/m16,r16 | 63 /r | 设置 ZF | 调整请求特权级 (286+ PM) | ARPL AX, BX ;如果AX的RPL小于BX的RPL,则改为BX的RPL,且ZF置1,否则ZF清0 | BOUND | BOUND r16,m16&16 | 62 /r | 不影响标志位 | 越界检查 (80188+) | BOUND AX, [006387EA] ;如果AX不在[006387EA]及[006387EA+2]的值中间,则产生异常5 | BOUND r32,m32&32 | BOUND EAX, [006387EA] ;如果EAX不在[006387EA]及[006387EA+4]的值中间,则产生异常5 | BSF | BSF r16,r/m16 | 0F BC | 设置 ZF | 从低到高扫描目标,查找对应为1的位 (386+) | BSF AX, BX ;把BX由低到高第一个1的位置送AX,如全0则ZF置1,否则ZF清0 | BSF r32,r/m32 | BSF EAX, EBX ;把EBX由低到高第一个1的位置送EAX,如全0则ZF置1,否则ZF清0 | BSR | BSR r16,r/m16 | 0F BD | 设置 ZF | 从高到低扫描目标,查找对应为1的位 (386+) | BSR AX, BX ;把BX由高到低第一个1的位置送AX,如全0则ZF置1,否则ZF清0 | BSR r32,r/m32 | BSR EAX, EBX ;把EBX由高到低第一个1的位置送EAX,如全0则ZF置1,否则ZF清0 | BSWAP | BSWAP reg32 | 0F C8+rd | 不影响标志位 | 32位寄存器高低字节交换(486+) | BSWAP EAX | BT | BT r/m16,r16 | 0F A3 | 设置 CF | 测试目标的指定位 (386+) | BT AX, BX ;如果AX中BX指定的位为1,则CF置1,否则CF清0 | BT r/m32,r32 | 0F A3 | BT EAX, EBX ;如果EAX中EBX指定的位为1,则CF置1,否则CF清0 | BT r/m16,imm8 | 0F BA /4 | BT AX, 01 ;如果AX中01位为1,则CF置1,否则CF清0 | BT r/m32,imm8 | 0F BA /4 | BT EAX, 01 ;如果EAX中01位为1,则CF置1,否则CF清0 | BTC | BTC r/m16,r16 | 0F BB | 设置 CF | 将目标指定位取反 (386+) | BTC AX, BX ;将AX中BX指定的位取反,CF存放指定位并取反位 | BTC r/m32,r32 | 0F BB | BTC EAX, EBX ;将EAX中EBX指定的位取反,CF存放指定位并取反 | BTC r/m16,imm8 | 0F BA /7 | BTC AX, 01 ;将AX中01位取反,CF存放指定位并取反 | BTC r/m32,imm8 | 0F BA /7 | BTC EAX, 01 ;将EAX中01位取反,CF存放指定位并取反 | BTR | BTR r/m16,r16 | 0F B3 | 设置 CF | 将目标指定位清0 (386+) | BTR AX, BX ;将AX中BX指定的位清0,CF存放指定位并清0 | BTR r/m32,r32 | 0F B3 | BTR EAX, EBX ;将EAX中EBX指定的位清0,CF存放指定位并清0 | BTR r/m16,imm8 | 0F BA /6 | BTR AX, 01 ;将AX中01位清0,CF存放指定位并清0 | BTR r/m32,imm8 | 0F BA /6 | BTR EAX, 01 ;将EAX中01位清0,CF存放指定位并清0 | BTS | BTS r/m16,r16 | 0F AB | 设置 CF | 将目标指定位置1 (386+) | BTS AX, BX ;将AX中BX指定的位置1,CF存放指定位并置1 | BTS r/m32,r32 | 0F AB | BTS EAX, EBX ;将EAX中EBX指定的位置1,CF存放指定位并置1 | BTS r/m16,imm8 | 0F BA /5 | BTS AX, 01 ;将AX中01位置1,CF存放指定位并置1 | BTS r/m32,imm8 | 0F BA /5 | BTS EAX, 01 ;将EAX中01位置1,CF存放指定位并置1 | CALL | CALL rel16 | E8 cw | 不影响标志位 | 子程序调用(16位相对寻址) | | CALL rel32 | E8 cd | 子程序调用(32位相对寻址) | | CALL r/m16 | FF /2 | 子程序调用(16位间接寻址) | | CALL r/m32 | FF /2 | 子程序调用(32位间接寻址) | | CALL ptr16:16 | 9A cd | 子程序调用(直接绝对寻址) | | CALL ptr16:32 | 9A cp | 子程序调用(直接绝对寻址) | | CALL m16:16 | FF /3 | 子程序调用(间接绝对寻址) | | CALL m16:32 | FF /3 | 子程序调用(间接绝对寻址) | | CBW | CBW | 98 | 不影响标志位 | 将AL值带符号扩展到AX | CBW | CDQ | CDQ | 99 | 不影响标志位 | 将EAX值带符号扩展到EDX:EAX | CDQ | CLD | CLD | FC | 设置 DF | 清除方向位(DF)标志 | CLD | CLI | CLI | FA | 设置 IF | 清除中断允许位(IF)标志 | CLD | CLTS | CLTS | 0F 06 | 不影响标志位 | 清除任务开关标志(TSF) | CLTS | CMC | CMC | F5 | 设置 CF | 进位标志取反 | CMC | CMOVcc | CMOVA r16, r/m16 | 0F 47 /r | 高于(CF=0 and ZF=0) | 条件传送指令 | CMOVA AX, BX | CMOVA r32, r/m32 | CMOVA EAX, EBX | CMOVAE r16, r/m16 | 0F 43 /r | 高于等于(CF=0) | CMOVAE AX, BX | CMOVAE r32, r/m32 | CMOVAE EAX, EBX | CMOVB r16, r/m16 | 0F 42 /r | 低于(CF=1) | CMOVB AX, BX | CMOVB r32, r/m32 | CMOVB EAX, EBX | CMOVBE r16, r/m16 | 0F 46 /r | 低于等于(CF=1 or ZF=1) | CMOVBE AX, BX | CMOVBE r32, r/m32 | CMOVBE EAX, EBX | CMOVC r16, r/m16 | 0F 42 /r | 有进位(CF=1) | CMOVC AX, BX | CMOVC r32, r/m32 | CMOVC EAX, EBX | CMOVE r16, r/m16 | 0F 44 /r | 等于(ZF=1) | CMOVE AX, BX | CMOVE r32, r/m32 | CMOVE EAX, EBX | CMOVG r16, r/m16 | 0F 4F /r | 大于(ZF=0 and SF=OF) | CMOVG AX, BX | CMOVG r32, r/m32 | CMOVG EAX, EBX | CMOVGE r16, r/m16 | 0F 4D /r | 大于等于(SF=OF) | CMOVGE AX, BX | CMOVGE r32, r/m32 | CMOVGE EAX, EBX | CMOVL r16, r/m16 | 0F 4C /r | 小于(SF<>OF) | CMOVL AX, BX | CMOVL r32, r/m32 | CMOVL EAX, EBX | CMOVLE r16, r/m16 | 0F 4E /r | 小于等于(ZF=1 or SF<>OF) | CMOVLE AX, BX | CMOVLE r32, r/m32 | CMOVLE EAX, EBX | CMOVNA r16, r/m16 | 0F 46 /r | 不高于(CF=1 or ZF=1) | CMOVNA AX, BX | CMOVNA r32, r/m32 | CMOVNA EAX, EBX | CMOVNAE r16, r/m16 | 0F 42 /r | 不高等于(CF=1) | CMOVNAE AX, BX | CMOVNAE r32, r/m32 | CMOVNAE EAX, EBX | CMOVNB r16, r/m16 | 0F 43 /r | 不低于(CF=0) | CMOVNB AX, BX | CMOVNB r32, r/m32 | CMOVNB EAX, EBX | CMOVNBE r16, r/m16 | 0F 47 /r | 不低等于(CF=0 and ZF=0) | CMOVNBE AX, BX | CMOVNBE r32, r/m32 | CMOVNBE EAX, EBX | CMOVNC r16, r/m16 | 0F 43 /r | 无进位(CF=0) | CMOVNC AX, BX | CMOVNC r32, r/m32 | CMOVNC EAX, EBX | CMOVNE r16, r/m16 | 0F 45 /r | 不等于(ZF=0) | CMOVNE AX, BX | CMOVNE r32, r/m32 | CMOVNE EAX, EBX | CMOVNG r16, r/m16 | 0F 4E /r | 不大于(ZF=1 or SF<>OF) | CMOVNG AX, BX | CMOVNG r32, r/m32 | CMOVNG EAX, EBX | CMOVNGE r16, r/m16 | 0F 4C /r | 不大等于(SF<>OF) | CMOVNGE AX, BX | CMOVNGE r32, r/m32 | CMOVNGE EAX, EBX | CMOVNL r16, r/m16 | 0F 4D /r | 不小于(SF=OF) | CMOVNL AX, BX | CMOVNL r32, r/m32 | CMOVNL EAX, EBX | CMOVNLE r16, r/m16 | 0F 4F /r | 不小等于(ZF=0 and SF=OF) | CMOVNLE AX, BX | CMOVNLE r32, r/m32 | CMOVNLE EAX, EBX | CMOVNO r16, r/m16 | 0F 41 /r | 无溢出(OF=0) | CMOVNO AX, BX | CMOVNO r32, r/m32 | CMOVNO EAX, EBX | CMOVNP r16, r/m16 | 0F 4B /r | 非偶数(PF=0) | CMOVNP AX, BX | CMOVNP r32, r/m32 | CMOVNP EAX, EBX | CMOVNS r16, r/m16 | 0F 49 /r | 非负数(SF=0) | CMOVNS AX, BX | CMOVNS r32, r/m32 | CMOVNS EAX, EBX | CMOVNZ r16, r/m16 | 0F 45 /r | 非零(ZF=0) | CMOVNZ AX, BX | CMOVNZ r32, r/m32 | CMOVNZ EAX, EBX | CMOVO r16, r/m16 | 0F 40 /r | 溢出(OF=1) | CMOVO AX, BX | CMOVO r32, r/m32 | CMOVO EAX, EBX | CMOVP r16, r/m16 | 0F 4A /r | 偶数(PF=1) | CMOVP AX, BX | CMOVP r32, r/m32 | CMOVP EAX, EBX | CMOVPE r16, r/m16 | 0F 4A /r | 偶数(PF=1) | CMOVPE AX, BX | CMOVPE r32, r/m32 | CMOVPE EAX, EBX | CMOVPO r16, r/m16 | 0F 4B /r | 奇数(PF=0) | CMOVPO AX, BX | CMOVPO r32, r/m32 | CMOVPO EAX, EBX | CMOVS r16, r/m16 | 0F 48 /r | 负数(SF=1) | CMOVS AX, BX | CMOVS r32, r/m32 | CMOVS EAX, EBX | CMOVZ r16, r/m16 | 0F 44 /r | 为零(ZF=1) | CMOVZ AX, BX | CMOVZ r32, r/m32 | CMOVZ EAX, EBX | CMP | CMP AL, imm8 | 3C ib | 设置 AF CF OF PF SF ZF | 比较大小,然后设置标志位 | CMP AL, 1F | CMP AX, imm16 | 3D iw | CMP AX, 4F80 | CMP EAX, imm32 | 3D id | CMP EAX, 00004F80 | CMP r/m8, imm8 | 80 /7 ib | CMP BYTE PTR [006387EA], 39 | CMP r/m16,imm16 | 81 /7 iw | CMP WORD PTR [006387EA], 1039 | CMP r/m32,imm32 | 81 /7 id | CMP DWORD PTR [006387EA], 00001039 | CMP r/m16,imm8 | 83 /7 ib | CMP WORD PTR [006387EA], 39 | CMP r/m32,imm8 | 83 /7 ib | CMP DWORD PTR [006387EA], 39 | CMP r/m8,r8 | 38 /r | CMP BYTE PTR [006387EA], AL | CMP r/m16,r16 | 39 /r | CMP WORD PTR [006387EA], AX | CMP r/m32,r32 | 39 / r | CMP DWORD PTR [006387EA], EAX | CMP r8,r/m8 | 3A /r | CMP AL, [006387EA] | CMP r16,r/m16 | 3B /r | CMP AX, [006387EA] | CMP r32,r/m32 | 3B /r | CMP EAX, [006387EA] | CMPS | CMPS m8, m8 | A6 | 设置 AF CF OF PF SF ZF | 比较字符串,每次比较1个字节 | CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI | CMPS m16, m16 | A7 | 比较字符串,每次比较1个字 | CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI | CMPS m32, m32 | A7 | 比较字符串,每次比较1个双字 | CMPS STRING1, STRING2 ;源串DS:(E)SI,目的串:ES:(E)DI (386+) | CMPSB | A6 | 比较字符串,每次比较1个字节 | CMPSB ;源串DS:(E)SI,目的串:ES:(E)DI | CMPSW | A7 | 比较字符串,每次比较1个字 | CMPSW ;源串DS:(E)SI,目的串:ES:(E)DI | CMPSD | A7 | 比较字符串,每次比较1个双字 | CMPSD ;源串DS:(E)SI,目的串:ES:(E)DI (386+) | CMPXCHG | CMPXCHG r/m8,r8 | 0F B0 /r | 设置 AF CF OF PF SF ZF | 比较交换 (486+) | CMPXCHG BL,CL ;如果AL与BL相等,则CL送BL且ZF置1;否则BL送CL,且ZF清0 | CMPXCHG r/m16,r16 | 0F B1 /r | CMPXCHG BX,CX ;如果AX与BX相等,则CX送BX且ZF置1;否则BX送CX,且ZF清0 | CMPXCHG r/m32,r32 | 0F B1 /r | CMPXCHG EBX,ECX ;如果EAX与EBX相等,则ECX送EBX且ZF置1;否则EBX送ECX,且ZF清0 | CMPXCHG8B | CMPXCHG8B m64 | 0F C7 /1 m64 | 设置 ZF | 比较交换 (486+) | CMPXCHG [ESI] ;比较EDX:EAX与64位的目标,如果相等则ECX:EBX送往目标且ZF置1,否则目标送EDX:EAX且ZF清0 | CPUID | CPUID | 0F A2 | 不影响标志位 | CPU标识送EAX、EBX、ECX、EDX | CPUID | CWD | CWD | 99 | 不影响标志位 | 将AX带符号扩展到DX:AX | CWD | CWDE | CWDE | 98 | 不影响标志位 | 将AX带符号扩展到EAX |
|