📄 汇编指令的字节.html
字号:
<B>DAA</B> Decimal adjust AL after addition
bytes 8088 186 286 386 486 Pentium
1 4 4 3 4 2 3 NP
Example: daa
<B>DAS</B> Decimal adjust AL after subtraction
bytes 8088 186 286 386 486 Pentium
1 4 4 3 4 2 3 NP
Example: das
<B>DEC</B> Decrement
operand bytes 8088 186 286 386 486 Pentium
r8 2 3 3 2 2 1 1 UV
r16 1 3 3 2 2 1 1 UV
r32 1 3 3 2 2 1 1 UV
mem 2+d(0,2) 23+EA 15 7 6 3 3 UV
Example: dec eax
<B>DIV</B> Unsigned divide
operand bytes 8088 186 286 386 486 Pentium
r8 2 80-90 29 14 14 16 17 NP
r16 2 144-162 38 22 22 24 25 NP
r32 2 - - - 38 40 41 NP
mem8 2+d(0-2) 86-96+EA 35 17 17 16 17 NP
mem16 2+d(0-2) 150-168+EA 44 25 25 24 25 NP
mem32 2+d(0-2) - - - 41 40 41 NP
implied operand quotient remainder
dividend
AX / byte = AL AH
DX:AX / word = AX DX
EDX:EAX / dword = EAX EDX
Example: div ebx
<B>ENTER</B> Make stack frame for procedure parameters (186+)
operands bytes 8088 186 286 386 486 Pentium
imm16, 0 3 - 15 11 10 14 11 NP
imm16, 1 4 - 25 15 12 17 15 NP
imm16, imm8 4 - 22+16n 12+4n 15+4n 17+3i 15+2i NP
n = imm8-1; i = imm8
Example: enter 1, 0
<B>ESC</B> Escape
escape opcodes D8 - DF are used by <A HREF="opcode_f.html">floating point instructions
</A><B>HLT</B> Halt
bytes 8088 186 286 386 486 Pentium
1 2 2 2 5 4 4 NP
Example: hlt
<B>IDIV</B> Signed divide
operand bytes 8088 186 286 386 486 Pentium
r8 2 101-112 44-52 17 19 19 22 NP
r16 2 165-184 53-61 25 27 27 30 NP
r32 2 - - - 43 43 46 NP
mem8 2+d(0-2) 107-118+EA 50-58 20 22 20 22 NP
mem16 2+d(0-2) 171-190+EA 59-67 28 30 28 30 NP
mem32 2+d(0-2) - - - 46 44 46 NP
implied operand quotient remainder
dividend
AX / byte = AL AH
DX:AX / word = AX DX
EDX:EAX / dword = EAX EDX
Example: idiv ebx
<B>IMUL</B> Signed multiply
Accumulator Multiplies
operand bytes 8088 186 286 386 486 Pentium
r8 2 80-98 25-28 13 9-14 13-18 11 NP
r16 2 128-154 34-37 21 9-22 13-26 11 NP
r32 2 - - - 9-38 13-42 10 NP
mem8 2+d(0-2) 86-104+EA 32-34 16 12-17 13-18 11 NP
mem16 2+d(0-2) 134-160+EA 40-43 24 12-25 13-26 11 NP
mem32 2+d(0-2) - - - 12-41 13-42 10 NP
implied operand result
multiplicand (multiplier)
AL * byte = AX
AX * word = DX:AX
EAX * dword = EDX:EAX
Example: imul ebx
2 and 3 operand Multiplies
operands bytes 186 286 386 486 Pentium
r16, imm 2+i(1,2) - 21 9-14/9-22 13-18/13-26 10 NP
r32, imm 2+i(1,2) - - 9-38 13-42 10 NP
r16,r16,imm 2+i(1,2) 22/29 21 9-14/9-22 13-18/13-26 10 NP
r32,r32,imm 2+i(1,2) - - 9-38 13-42 10 NP
r16,m16,imm 2+d(0-2) 25/32 24 12-17/12-25 13-18/13-26 10 NP
+i(1,2)
r32,m32,imm 2+d(0-2)+i(1,2) - 12-41 13-42 10 NP
r16, r16 2+i(1,2) - - 9-22 13-18/13-26 10 NP
r32, r32 2+i(1,2) - - 9-38 13-42 10 NP
r16, m16 2+d(0-2)+i(1,2) - 12-25 13-18/13-26 10 NP
r32, m32 2+d(0-2)+i(1,2) - 12-41 13-42 10 NP
all forms: dest, src cycles for: byte/word
or dword
dest, src1, src2
Example: imul eax, ebx, 10
<B>IN </B> Input from port
operands bytes 8088 186 286 386 486 Pentium
al, imm8 2 14 10 5 12 14 7 NP
ax, imm8 2 14 10 5 12 14 7 NP
eax, imm8 2 - - - 12 14 7 NP
al, dx 1 12 8 5 13 14 7 NP
ax, dx 1 12 8 5 13 14 7 NP
eax, dx 1 - - - 13 14 7 NP
Protected mode
operands bytes 386 486 Pentium
acc, imm 2 6/26/26 9/29/27 4/21/19 NP
acc, dx 1 7/27/27 8/28/27 4/21/19 NP
cycles for: CPL <= IOPL / CPL > IOPL / V86
Example: in al, dx
<B>INC</B> Increment
operand bytes 8088 186 286 386 486 Pentium
r8 2 3 3 2 2 1 1 UV
r16 1 3 3 2 2 1 1 UV
r32 1 3 3 2 2 1 1 UV
mem 2+d(0,2) 23+EA 15 7 6 3 3 UV
Example: inc ebx
<B>INS/INSB/INSW/INSD </B> Input from port to string
variations bytes 8088 186 286 386 486 Pentium
insb 1 - 14 5 15 17 9 NP
insw 1 - 14 5 15 17 9 NP
insd 1 - - - 15 17 9 NP
Protected Mode
bytes 386 486 Pentium
1 9/29/29 10/32/30 6/24/22 NP
cycles for: CPL <= IOPL / CPL > IOPL / V86
Example: rep insb
<B>INT</B> Call interrupt procedure
operands bytes 8088 186 286 386 486 Pentium
3 1 72 45 23+m 33 26 13 NP
imm8 2 71 47 23+m 37 30 16 NP
Protected mode
bytes 8088 186 286 386 486 Pentium
1 - - (40-78)+m 59-99 44-71 27-82 NP
Example: int 21h
<B>INTO</B> Call interrupt procedure if overflow
bytes 8088 186 286 386 486 Pentium
1 4/73 4/48 3/24+m 3/35 3/28 4/13 NP
Protected mode
bytes 286 386 486 Pentium
1 (40-78)+m 59-99 44-71 27-56 NP
Task switch clocks not shown
Example: into
<B>INVD</B> Invalidate data cache (486+)
bytes 8088 186 286 386 486 Pentium
2 - - - - 4 15 NP
Example: invd
<B>INVLPG</B> Invalidate TLB entry (486+)
operands bytes 486 Pentium
mem32 5 12 25 NP
Example: invlpg [eax]
<B>IRET</B> Return from interrupt
bytes 8088 186 286 386 486 Pentium
1 44 28 17+m 22 15 8-27 NP
Task switch clocks not shown
Example: iret
<B>IRETD</B> 32-bit return from interrupt (386+)
bytes 386 486 Pentium
1 22 15 10-27 NP
Task switch clocks not shown
Example: iretd
<B>Jcc </B> Jump on condition code
operand bytes 8088 186 286 386 486 Pentium
near8 2 4/16 4/13 3/7+m 3/7+m 1/3 1 PV
near16 3 - - - 3/7+m 1/3 1 PV
cycles for: no jump/jump
conditional jump instructions:
ja jump if above jnbe jump if not below or equal
jae jump if above or equal jnb jump if not below
jb jump if below jnae jump if not above or equal
jbe jump if below or equal jna jump if not above
jg jump if greater jnle jump if not less or equal
jge jump if greater or equal jnl jump if not less
jl jump if less jnge jump if not greater or equal
jle jump if less or equal jng jump if not greater
je jump if equal jz jump if zero
jne jump if not equal jnz jump if not zero
jc jump if carry jnc jump if not carry
js jump if sign jns jump if not sign
jnp jump if no parity (odd) jpo jump if parity odd
jo jump if overflow jno jump if not overflow
jp jump if parity (even) jpe jump if parity even
Example: jne not_equal
<B>JCXZ/JECXZ </B> Jump if CX/ECX = 0
operand bytes 8088 186 286 386 486 Pentium
dest 2 6/18 5/16 4/8+m 5/9+m 5/8 5/6 NP
dest 2 - - - 5/9+m 5/8 5/6 NP
cycles for: no jump/jump
Example: jcxz cx_is_zero
<B>JMP</B> Unconditional jump
operand bytes 8088 186 286 386 486 Pentium
short 2 15 13 7+m 7+m 3 1 PV
near 3 15 13 7+m 7+m 3 1 PV
far 5 15 13 11+m 12+m 17 3 NP
r16 2 11 11 7+m 7+m 5 2 NP
mem16 2+d(0,2) 18+EA 17 11+m 10+m 5 2 NP
mem32 2+d(4) 24+EA 26 15+m 12+m 13 4 NP
r32 2 - - - 7+m 5 2 NP
mem32 2+d(0,2) - - - 10+m 5 2 NP
mem48 2+d(6) - - - 12+m 13 4 NP
cycles for jumps through call gates not shown
Example: jmp target_address
<B>LAHF</B> Load flags into AH
bytes 8088 186 286 386 486 Pentium
1 4 2 2 2 3 2 NP
Example: lahf
<B>LAR</B> Load access rights byte (286+)
operands bytes 286 386 486 Pentium
r16, r16 3 14 15 11 8 NP
r32, r32 3 - 15 11 8 NP
r16, m16 3 16 16 11 8 NP
r32, m32 3 - 16 11 8 NP
Example: lar eax, ebx
<B>LDS</B> Load far pointer
operands bytes 8088 186 286 386 486 Pentium
reg, mem 2+d(2) 24+EA 18 7 7 6 4 NP
Example: lds si, ptr_1
<B>LES </B> Load far pointer
operands bytes 8088 186 286 386 486 Pentium
reg, mem 2+d(2) 24+EA 18 7 7 6 4 NP
Example: les di, ptr_2
<B>LFS</B> Load far pointer (386+)
operands bytes 386 486 Pentium
reg, mem 3+d(2,4) 7 6 4 NP
Example: lfs si, ptr_3
<B>LGS</B> Load far pointer (386+)
operands bytes 386 486 Pentium
reg, mem 3+d(2,4) 7 6 4 NP
Example: lgs si, ptr_4
<B>LSS</B> Load stack segment and offset
operands bytes 386 486 Pentium
reg, mem 3+d(2,4) 7 6 4 NP
Example: lss bp, ptr_5
<B>LEA</B> Load effective address
operands bytes 8088 186 286 386 486 Pentium
r16, mem 2+d(2) 2+EA 6 3 2 1-2 1 UV
r32, mem 2+d(2) - - - 2 1-2 1 UV
Example: lea eax, [eax+ebx*2+3]
<B>LEAVE</B> High level procedure exit (186+)
bytes 186 286 386 486 Pentium
1 8 5 4 5 3 NP
Example: leave
<B>LGDT</B> Load global descriptor table register (286+)
operand bytes 286 386 486 Pentium
mem48 5 11 11 11 6 NP
Example: lgdt descriptor[ebx]
<B>LIDT</B> Load interrupt descriptor table register (286+)
operand bytes 286 386 486 Pentium
mem48 5 12 11 11 6 NP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -