| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 类别查找 | 指令 | 英文全称 | 中文全称 | 代码 | 目的操作数格式(dist) | 源操作数格式(src) | 注意事项 | 指令作用 | 补充 | ||||||||||||||||
2 | 数据传送 | MOV | Move | 通用数据传送指令 | MOV dist, src | 寄存器、段寄存器(除CS)、内存 | 寄存器、段寄存器、内存、立即数 | 1.立即数不能为目的操作数; 2.立即数不能送到段寄存器; 3.两内存单元、两段寄存器间(16位)都不能互相传送,但能与通用寄存器互相传送(内存单元和段寄存器之间也不能直接传送); 4.源、目的操作数间类型(位宽)需相同; 5.IP不可通过MOV指令访问; 6.CS段寄存器不能为目的操作数。 7.立即数传内存时需要定义内存的位宽(...PTR) 8.立即数不能以字母开头(可能会被识别成变量) 寻址相关: 1.仅BX,BP(基址寄存器):SI,DI(变址寄存器)可用于寄存器寻址(其他寄存器不行·) 2.(相对)基址变址寻址仅能用一个基址寄存器和一个变址寄存器(不能用两个基址或变址) 3.段超越仅可超越到ES段,并且ES段只能用DI作为变址寄存器 | 将数据从源操作数复制到目的操作数 | 白名单: 立即数 => 寄存器,内存(需定义位宽) 寄存器 <=> 段寄存器,内存。 寄存器 <=> 寄存器 注: 仍需要注意4-8 段寄存器为16位, =>表示src=>dist 本表格寄存器都仅指通用寄存器 | ||||||||||||||||
3 | 数据传送 | XCHG | Exchange | 交换指令 | XCHG dist, src | 寄存器 | 寄存器、内存 | 1.目的操作数必须是寄存器; 2.目的操作数和源操作数类型必须相同。 | 实现字节或字的交换 | 寄存器<=>寄存器 内存=>寄存器 | ||||||||||||||||
4 | 堆栈 | PUSH | Push | 入栈指令 | PUSH src | 寄存器、段寄存器、内存 | 1.操作数不能为立即数; 2.入栈时“先减后压”; 3.栈内数据存取以字(16位)为单位进行。 | 将源操作数压入堆栈 | 先进后出,后进先出 | |||||||||||||||||
5 | 堆栈 | POP | Pop | 出栈指令 | POP dist | 寄存器、段寄存器、内存 | 1.目的操作数不能是CS、SS段寄存器; 2.出栈时“先弹后加”; 3.栈内数据存取以字(16位)为单位进行。 | 从堆栈弹出值到目的操作数 | ||||||||||||||||||
6 | 堆栈 | PUSHF | Push Flags | 标志入栈指令 | PUSHF | 堆栈 | 标志寄存器 | 标志寄存器本身的内容不变 | 堆栈指针SP减2后,将标志寄存器的值压入堆栈 | |||||||||||||||||
7 | 堆栈 | POPF | Pop Flags | 标志出栈指令 | POPF | 标志寄存器 | 堆栈 | 标志寄存器本身的内容改变 | 从栈顶弹出一个字送到标志寄存器,然后堆栈指针SP加2 | |||||||||||||||||
8 | 标志 | LAHF | Load AH From Flages | 读取标志指令 | LAHF | AH | 标志寄存器低8位 | 标志寄存器本身的内容不变 | 将标志寄存器低8位送到AH中 | 标志位: SF,ZF,AF,PF,CF 位: 7, 6, 4, 2, 0 | ||||||||||||||||
9 | 标志 | SAHF | Store AH into Flags | 设置标志指令 | SAHF | 标志寄存器低8位 | AH | 标志寄存器本身的内容改变 | 将AH送到标志寄存器低8位中 | |||||||||||||||||
10 | 偏移地址 | LEA | Load Effective Address | 取有效地址指令 | LEA reg,mem | 寄存器 | 存储器 | 常用于指针运算,不对内存实际进行读取或写入 | 将储存器的有效地址传送到16位寄存器 | |||||||||||||||||
11 | 指针 | LDS | Load pointer with DS | 地址指针装定到指定寄存器和DS的指令 | LDS reg,mem | 寄存器和DS | 存储器 | LDS指令会改变DS值,因此当前所对应数据段也发生了改变 | 从存储器中取2个字(4个存储单元),并将第一个字送入目的寄存器中,将第二个字作为段基址送入DS中 | |||||||||||||||||
12 | 指针 | LES | Load pointer with ES | 地址指针装定到指定寄存器和ES的指令 | LES reg,mem | 寄存器和ES | 存储器 | 功能与LDS类似,不同只是把DS变成ES | 从存储器中取2个字(4个存储单元),并将第一个字送入目的寄存器中,将第二个字作为段基址送入ES中 | |||||||||||||||||
13 | 其他 | XLAT | translate | 换码指令 | XLAT | AL | DS:[BX+AL] | 表首地址(偏移地址)预置于BX中,待查数据在表内的位置序号预置于AL中 | 该指令完成查表转换功能(把存储器物理地址里的内容送入AL,标号=>数据) | |||||||||||||||||
14 | io | IN | Input | 输入指令 | IN AL/AX, port8/DX | AL/AX | 端口号: 立即数(8位) DX(8或16位) | 端口号可以是立即数(8位)或DX寄存器存储的值(8位或16位); 地址均不用加[ ]。 | 从指定端口读取数据到AL/AX | 16位端口地址(AX)只能用DX间接寻址方式 | ||||||||||||||||
15 | io | OUT | Output | 输出指令 | OUT port/DX, AL/AX | 端口号: 立即数(8位) DX(8或16位) | AL/AX | 端口号可以是立即数(8位)或DX寄存器存储的值(8位或16位); 地址均不用加[ ]。 | 将AL/AX中的数据输出到指定端口 | |||||||||||||||||
16 | 计算 | ADD | Add | 不带进位加法指令 | ADD dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 两者必须是相同类型(字+字或字节+字节) | 将源操作数加到目的操作数上,结果影响全部状态标志位 | |||||||||||||||||
17 | 计算 | ADC | Add with Carry | 带进位加法指令 | ADC dist, src | 寄存器、内存 | 寄存器、内存、立即数 | ADD再加上进位标志位(CF)的值 | 将源操作数和CF一起加到目的操作数上,结果影响全部状态标志位 | |||||||||||||||||
18 | 计算 | INC | Increment | 增量指令 | INC dist | 寄存器、内存 | 常用于指针,不影响CF但影响其他标志 | 目的操作数自增1(加一送回,但不会进位[不影响CF]) | ||||||||||||||||||
19 | 计算 | SUB | Subtract | 不带借位的减法指令 | SUB dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 两者必须是相同类型(字-字或字节-字节) | 从目的操作数减去源操作数,结果影响全部状态标志位 | |||||||||||||||||
20 | 计算 | SBB | Subtract with Borrow | 带借位的减法指令 | SBB dist, src | 寄存器、内存 | 寄存器、内存、立即数 | SUB再减去进位标志位(CF)的值 | 从目的操作数中减去源操作数和CF,结果影响全部状态标志位 | |||||||||||||||||
21 | 计算 | DEC | Decrement | 减量指令 | DEC dist | 寄存器、内存 | 常用于指针,不影响CF但影响其他标志 | 目的操作数自减1(减一送回,但不会借位[不影响CF]) | ||||||||||||||||||
22 | 计算 | NEG | Negate | 求补指令 (求负数的指令) | NEG dist | 寄存器、内存 | 和正常求补码不一样,需要连同符号位取反+1(包括正数) | 取目的操作数的相反数(连同符号位取反加一) | ||||||||||||||||||
23 | 计算 | CMP | Compare | 比较指令 | CMP dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 结果不存储,影响标志位 ;相当于执行减法但不存储结果。 | 比较目的操作数与源操作数,设置标志位(与SUB影响一致) | |||||||||||||||||
24 | 计算 | MUL | Multiplication | 无符号乘法指令 | MUL src | AL(8位)或AX(16位) | 寄存器、内存 | 字乘结果在DX(高16位) AX(低16位), 字节乘结果在AX | 计算无符号乘法 | 若乘积高半部分不为零,则CF=OF=1,否则都为0 | ||||||||||||||||
25 | 计算 | IMUL | Integer Multiplication | 带符号数的乘法指令 | IMUL src | AL(8位)或AX(16位) | 寄存器、内存 | 1.字乘结果在DX(高16位)AX(低16位),字节乘结果在AX 2.乘数和结果都是补码,高位拓展根据低位符号位(补1或0) | 计算有符号乘法 | 若乘积高半部分为低半部分的符号位拓展,则CF=OF=0,否则都为1 | ||||||||||||||||
26 | 计算 | DIV | Division | 无符号除法指令 | DIV src | 被除数(隐含): 字节除:AX 字除:DX(高16位)AX(低16位) | 除数: 寄存器、内存 | 1.除数不能太小,否则报错“被零除”; 2.字节除:商在AL中,余数在AH中, 字除:商在AX中,余数在DX中, (即商在低位,余数在高位); 3.被除数和除数位数相同时,需要拓展被除数位数(使用CBW或者CWD) | 计算无符号除法,结果存入商和余数 | |||||||||||||||||
27 | 计算 | IDIV | Integer Division | 带符号的除法指令 | IDIV src | 被除数(隐含): 字节除:AX 字除:DX(高16位)AX(低16位) | 除数: 寄存器、内存 | 1.2.3.同上 4.除数结果都是补码,商可正可负,余数和被除数符号一致 | 计算有符号除法,结果存入商和余数 | |||||||||||||||||
28 | 拓展 | CBW | Convert Byte to Word | 字节扩展为字指令 | CBW | AX | AL | 向AH全填充AL的符号位 | 把AL中的符号位扩展到AH中 | |||||||||||||||||
29 | 拓展 | CWD | Convert Word to Double Word | 字扩展为双字指令 | CWD | DX | AX | 向DX全填充AX的符号位 | 把AX中的符号位扩展到DX中 | |||||||||||||||||
30 | BCD调整 | AAA | ASCII Adjust after Addition | 加法的非压缩型BCD码调整指令 | AAA | 1.调整后的结果低位在 AL中,高位在AH中。 2.该指令一般用于加法指令之后,需要将结果调整为BCD码的场合。 3.本指令不影响 PF、ZF、SF、OF。 | 把AL中的加法结果调整为非压缩型BCD码数。 | 若AL低4位大于9 或 AF = 1 则执行三步操作:: 1.AL+6=>AL,且将AL高4位清0; 2.AH+1=>AH; 3.CF与AF置1。 否则,不做调整,CF和AF清0。 | ||||||||||||||||||
31 | BCD调整 | DAA | Decimal Adjust after Addition | 加法的压缩型BCD码调整指令 | DAA | 1.调整后的结果在AL中 2.指令一般紧跟在加法指令之后且只能对AL中的内容进行调整。 3.它影响CF、 PF、AF、ZF、SF,其中 CF = 1 说明结果大于99。 | 把AL的加法结果调整为压缩型BCD码数 | 若AL中的低4位 > 9 或 AF = 1 则AL+06H=>AL, 1=>AF; 若AL中的高4位 > 9 或 CF = 1 ,则AL+60H=>AL, 1=>CF | ||||||||||||||||||
32 | BCD调整 | AAS | ASCII Adjust after Subtraction | 非压缩型BCD码减法的调整指令 | AAS | 1.调整后的结果低位在AL中,高位在AH中。 2.本指令必须紧跟在减法指令后 且只对AL中的内容进行调整。 | 把AL的减法结果调整为非压缩型BCD码数。 | 若AF=1,则执行操作: AL-6=>AL,且将AL的高4位清0; AH-1=>AH: 1=>CF. 否则,不做调整。 | ||||||||||||||||||
33 | BCD调整 | DAS | Decimal Adjust after Subtraction | 压缩型BCD码减法的调整指令 | DAS | 1. 调整后的结果在AL中。 2. 同AAS的2 | 把AL中的减法结果调整为压缩型BCD码数, | 1.若AL中低4位大于9或AF=1,则AL-06H=>AL,并使AF置1; 2.若AL中高4位大于9或CF=1,则AL-60H=>AL,并使CF置1。 | ||||||||||||||||||
34 | BCD调整 | AAM | ASCII Adjust after Multiply | 乘法的非压缩型BCD码调整指令 | AAM | 1. 调整后的结果 低位(个位)在AL中, 高位(十位)在AH中。 2. 该指令影响 PF、SF、ZF,也须紧跟在乘法指令 MUL之后。注意,BCD码数总是作为 无符号数看待,所以相乘时不能用IMUL指令。 | 把AX的乘法结果调整为非压缩型BCD码数。 | 把AL的内容除以0AH,商放AH中,余数放AL中。AAM的操作实质 是将AL中不大于99的二进制数转换成非压缩型BCD码。 | ||||||||||||||||||
35 | BCD调整 | AAD | ASCII Adjust before Division | 除法的非压缩型BCD码调整指令 | AAD | 1.调整后的结果在AL中。 2.与其他5条调整指令不同的是,AAD指令须放在相应的除法指令之前。 | 对AX中的两位非压缩型BCD码数进行调整 | AH * 0AH + AL=>AL, 0=>AH | ||||||||||||||||||
36 | BCD调整 | ?A? | * | BCD码调整指令 | ?A? | (A,D) A (A,S,M,D) 非压缩/压缩 (加,减,乘,除) | 这些调整指令都采用隐含寻址方式将AL(或AL和AH)作为隐含的操作数,用于对结果进行BCD码调整 | 1.除AAD外均位于计算指令后 2.不包括DAM,DAD | ||||||||||||||||||
37 | 逻辑操作 | AND | And | 逻辑与指令 | AND dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 1.两者必须是相同类型(位宽); 2常用于希望将某些位 置0。 | 按位与操作,结果存入目的操作数 | 影响ZF标志位 | ||||||||||||||||
38 | 逻辑操作 | OR | Or | 逻辑或指令 | OR dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 1.两者必须是相同类型(位宽); 2.常用于希望将某些位 置1。 | 按位或操作,结果存入目的操作数 | |||||||||||||||||
39 | 逻辑操作 | XOR | Xor (⊕) | 逻辑异或指令 | XOR dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 1.两者必须是相同类型(位宽); 2.常用于希望将某些位取反。 | 按位异或操作,结果存入目的操作数 | 可用于置零(如XOR AX,AX) | ||||||||||||||||
40 | 逻辑操作 | NOT | Not | 逻辑非指令 | NOT dist | 寄存器、内存 | 常用于对某个数作求反运算 | 按位取反目的操作数 | ||||||||||||||||||
41 | 逻辑操作 | TEST | Test | 测试指令 | TEST dist, src | 寄存器、内存 | 寄存器、内存、立即数 | 1.不修改目的操作数; 2.常用于检测操作数某些位是1还是0.(通过ZF) | 将目的操作数和源操作数作按位与运算,但不送回结果,只影响标志位。 | |||||||||||||||||
42 | 移位 | SHL | Shift Left | 逻辑左移指令 | SHL dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数左移,低位填零,高位移入CF。(两指令一致) | S (A,H) (R,L) (算数,逻辑) (右,左) | ||||||||||||||||
43 | 移位 | SAL | Shift Arithmetic Left | 算术左移指令 | SAL dist, count | 寄存器、内存 | 1或CL | |||||||||||||||||||
44 | 移位 | SHR | Shift Right | 逻辑右移指令 | SHR dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数右移,高位填零,低位移入CF。 | |||||||||||||||||
45 | 移位 | SAR | Shift Arithmetic Right | 算术右移指令 | SAR dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数右移,高位填符号位,低位移入CF。 | |||||||||||||||||
46 | 移位 | ROL | Rotate Left | 循环左移指令 | ROL dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数循环左移,最高位复制至CF。 | R (O,C) (R,L) 循环 不带/带进位 (右,左) 只影响CF,OF | ||||||||||||||||
47 | 移位 | RCL | Rotate Left through Carry | 带进位循环左移指令 | RCL dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数与CF共同循环左移 | |||||||||||||||||
48 | 移位 | ROR | Rotate Right | 循环右移指令 | ROR dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数循环右移,最低位复制至CF。 | |||||||||||||||||
49 | 移位 | RCR | Rotate Reft through Carry | 带进位循环右移指令 | RCR dist, count | 寄存器、内存 | 1或CL | 移位位数>1一般用CL | 将目的操作数与CF共同循环右移 | |||||||||||||||||
50 | 串操作 | MOVSB | Move String Byte | 字节串传输指令 | MOVSB | ES:DI存储单元 | DS:SI存储单元 | 需预置ES、DS、DI、SI | 将源串一个字节或字传送到目的串中(即将SI指向的数据复制到DI指向的地址),同时根据DF的值自动修改SI和DI,不改变标志位 | |||||||||||||||||
51 | 串操作 | MOVSW | Move String Word | 字串传输指令 | MOVSW | |||||||||||||||||||||
52 | 串操作 | MOVS | Move String | 串传输指令 | MOVS dist, src | ES:DI存储单元 | DS:SI存储单元 | 需标明源、目的操作数地址和大小(字or字节?) | ||||||||||||||||||
53 | 串操作 | LODSB | Load String Byte | 读字节串指令 | LODSB | AX/AL | DS:SI存储单元 | 需预置DS、SI、AX、AL | 将源串中的一个字节或字的数据送入AL或AX中,同时根据DF的值自动修改SI,不改变标志位 | |||||||||||||||||
54 | 串操作 | LODSW | Load String Word | 读字串指令 | LODSW | |||||||||||||||||||||
55 | 串操作 | LODS | Load String | 读串指令 | LODS src | AX/AL | DS:SI存储单元 | 需标明源操作数地址和大小(字or字节?) | ||||||||||||||||||
56 | 串操作 | STOSB | Store String Byte | 存字节串指令 | STOSB | ES:DI存储单元 | AX/AL | 需预置ES、DI、AX、AL | 将AL或AX中的一个字节或字的内容送到目的串(存储单元)中,同时根据DF的值自动修改DI,不改变标志位 | |||||||||||||||||
57 | 串操作 | STOSW | Store String Word | 存字串指令 | STOSW | |||||||||||||||||||||
58 | 串操作 | STOS | Store String | 存串指令 | STOS dist | ES:DI存储单元 | AX/AL | 需标明目的操作数地址和大小(字or字节?) | ||||||||||||||||||
59 | 串操作 | CMPSB | Compare String Byte | 字节串比较指令 | CMPSB | ES:DI存储单元 | DS:SI存储单元 | 需预置ES、DS、DI、SI | 将目的串中的一个字节或字与源串中的一个字节或字相减,不保存结果,只影响标志位 | |||||||||||||||||
60 | 串操作 | CMPSW | Compare String Word | 字串比较指令 | CMPSW | |||||||||||||||||||||
61 | 串操作 | CMPS | Compare String | 串比较指令 | CMPS dist, src | ES:DI存储单元 | DS:SI存储单元 | 需标明源、目的操作数地址和大小(字or字节?) | ||||||||||||||||||
62 | 串操作 | SCASB | Scan String Byte | 字节串扫描指令 | SCASB | ES:DI存储单元 | AX/AL | 需预置ES、DI、AX、AL | 将AL或AX中的一个字节或字与目的串中的一个字节或字相减,不保存结果,只影响标志位 | 通常用于查找一个特定的值在字符串中的位置。 | ||||||||||||||||
63 | 串操作 | SCASW | Scan String Word | 字串扫描指令 | SCASW | |||||||||||||||||||||
64 | 串操作 | SCAS | Scan String | 串扫描指令 | SCAS dist | ES:DI存储单元 | AX/AL | 需标明目的操作数地址和大小(字or字节?) | ||||||||||||||||||
65 | 串操作 | REP | Repeat | 重复前缀 | REP 串操作指令 | 需预置重复次数CX; RPEP/PEPZ; CX≠0且ZF=1重复,否则不重复,常用于CMPS、SCAS的前缀; REPNE/REPNZ; CX≠0且ZF=0重复,否则不重复,也常用于CMPS、SCAS的前缀。 | 重复执行紧跟其后的串操作指令,直到CX=0才停止,每重复一次,CX减1 | |||||||||||||||||||
66 | 跳转 | JMP | Jump | 无条件转移指令 | JMP 目标标号 | 段内: 立即数(字) 标号 WORD PTR 内存 段间: 立即数:立即数(字:字,CS:IP) 标号 DWORD PTR 内存(高位CS:低位IP) | 目标地址应在有效范围内。 | 无条件跳转到目标地址 | 段内转移仅改变IP,段间转移还改变CS 偶性转移:JP/JPE 奇性转移:JNPN/JPO A :Above, B:Below, C:Carry, E:Equal G:Greater, L:Less, N:Not, O:Over, S:Sign, PE:Parity Even, PO:Parity Odd | |||||||||||||||||
67 | 跳转 | J(N)? | Jump (Not) ? | 条件转移指令 | J(N)? 目标标号 | ?: (PE,PO), O, C, S 中文: (偶,奇), 溢出,进位,符号 标志位: PF(1,0), OF, CF, SF | 满足条件跳转到目标地址 ( J(N)E 等价于 J(N)Z ) | |||||||||||||||||||
68 | 跳转 | (A,B) (E) (高于,低于) (等于) 无符号数 | ||||||||||||||||||||||||
69 | 跳转 | (G,L) (E) (大于,小于) (等于) 有符号数 | ||||||||||||||||||||||||
70 | 子程序 | CALL | Call | 子程序调用指令 | CALL 过程名 | 堆栈 | 段内调用: 1.压IP进堆栈 (SP-2) 2. 子程序名(过程名)对应偏移地址=>IP 段间调用: 1.CS,IP先后压入堆栈(SP-4) 2.子程序名对应偏移地址=>IP,段基址=>CS | 调用子程序并将返回地址压入堆栈 | ||||||||||||||||||
71 | 子程序 | RET | Return | 返回指令 | RET (n) | 1.CALL指令的相反操作 2.一个子程序里至少有一个RET指令 3.RET指令一般放子程序最后 4.若带了参数(RET n),返回时不仅会弹出返回地址,还会弹出堆栈中的n个字节(不常见) | 从子程序返回主程序,并弹出返回地址 | |||||||||||||||||||
72 | 循环 | LOOP | Loop | 循环指令 | LOOP 目标标号 | 同JUMP | 需预置重复次数CX; LOOPE/LOOPZ; CX≠0且ZF=1则转移到目标地址,否则顺序执行后续指令; LOOPNE/LOOPNZ; CX≠0且ZF=0则转移到目标地址,否则顺序执行后续指令。 | CX-1=>CX; 若CX≠0,则转移到目的地址,反之则顺序执行后续指令。 | 可用于检查两个字符串是否相同 | |||||||||||||||||
73 | 循环 | JCXZ | Jump if CX is Zero | 循环结束转移指令 | JCXZ 目标标号 | 同JUMP | 用于循环结束时跳转 | CX=0,则转移到目的地址;CX≠0,则顺序执行后续指令 | ||||||||||||||||||
74 | 中断 | INT | Interrupt | 中断指令 | INT n | 中断类型号(0~255) | INT仅影响IF和TF,不影响其他标志位; 中断类型号*4=中断向量表中位置(入口地址) | 1.将标志寄存器内容压入堆栈; 2.将标志位IF、TF清零; 3.将代码段寄存器CS的内容压入堆栈; 4.将当前IP内容压入堆栈; 5.查中断向量表,取出对应的中断服务程序入口的基地址装入CS,偏移地址装入IP。 | IP为0是为了使CPU处理当前中断指令,在此过程中不响应其他中断 | |||||||||||||||||
75 | 中断 | INTO | Interrupt if Overflow | 溢出中断指令 | INTO | INTO 等价于 INT 4; 若前一条算术运算指令结果溢出,即OF=1,则自动执行该指令 | 进入处理溢出出错的中断服务程序 | |||||||||||||||||||
76 | 中断 | IRET | Return from Interrupt | 中断返回指令 | IRET | 任何中断子程序执行的最后一条指令 | 1.依次将堆栈终端点地址弹出到IP和CS; 2.将压入堆栈的标志字内容弹出至标志寄存器,以恢复标志寄存器的内容。 | |||||||||||||||||||
77 | 标志 | * | * | 状态标志位指令操作 | * | (CL,ST) (C,D,I) (cl:clear,st:set) 置零/置一 进位/方向/中断 CMC (Complement Carry) CF取反 | 对CF,DF,IF执行复位和置位等操作 | |||||||||||||||||||
78 | 处理器控制 | NOP | No Operation | 空操作指令 | NOP | 无特殊要求。 | 无操作,消耗三个时钟周期 | |||||||||||||||||||
79 | 处理器控制 | HLT | Halt | 暂停指令 | HLT | 处理器会停止,需外部信号才能继续。 | 暂停CPU,但不影响标志位 | |||||||||||||||||||
80 | 这两列灰色字体表示隐含 | |||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 | ||||||||||||||||||||||||||