Pentium指令的执行周期数

1、数据传送指令

1.1、传送指令

指令的语法

举例

周期数

MOV reg,reg

mov bp,sp

1

MOV mem,reg

mov array[di],bx

1

MOV reg,mem

mov bx,pointer

1

MOV mem,immed

mov [bx],15

1

MOV reg,immed

mov cx,256

1

MOV mem,accum

mov total,ax

1

MOV accum,mem

mov al,string

1

MOV segreg,reg16

mov ds,ax

2, 3

MOV segreg,mem16

mov es,psp

2, 3

MOV reg16,segreg

mov ax,ds

1

MOV mem16,segreg

mov stack_save,ss

1

MOV reg32,controlreg

mov eax,cr0

22

mov eax,cr2

12

mov eax,cr3

21, 46

mov eax,cr4

14

MOV controlreg,reg32

mov cr0,eax

4

MOV reg32,debugreg

mov edx,dr0

DR0-DR3, DR6,DR7=11

DR4,DR5=12

MOV debugreg,reg32

mov dr0,ecx

DR0-DR3,

DR4,DR5=12 DR6,DR7=11

1.2、传送-填充指令

MOVSX reg,reg

movsx bx,al

3

MOVSX reg,mem

movsx eax,bsign

3

MOVZX reg,reg

movzx bx,al

3

MOVZX reg,mem

movzx eax,bunsign

3

1.3、交换指令

XCHG reg,reg

xchg cx,dx

3

XCHG reg,mem

xchg bx,pointer

3

XCHG mem,reg

xchg [bx],ax

3

XCHG accum,reg

xchg ax,cx

2

XCHG reg,accum

xchg cx,ax

2

1.4、取段地址和有效地址指令

LDS reg,mem

lds si,fpointer

4

LES reg,mem

les di,fpointer

4

LFS reg,mem

lfs edi,fpointer

4

LGS reg,mem

lgs bx,fpointer

4

LSS reg,mem

lss bp, fpointer

4, pm=8

LEA reg,mem

lea bx,npointer

1

1.5、进栈指令

PUSH reg

push dx

1

PUSH mem

push [di]

2

PUSH segreg

push es

1

PUSH immed

push 15000

1

PUSHA

pusha

5

PUSHAD

pushad

5

PUSHF

pushf

4, pm=3

PUSHFD

pushfd

4, pm=3

1.6、出栈指令

POP reg

pop cx

1

POP mem

pop param

3

POP segreg

pop es

3

POPA

popa

5

POPAD

popad

5

POPF

popf

6, pm=4

POPFD

popfd

6, pm=4

1.7、转换指令

XLAT [[segreg:]mem]

xlat

4

XLATB [[segreg:]mem]

xlatb es:table

4

1.8、输入指令

IN accum,immed

in ax,60h

7, pm=4,21*(注), vm=19

IN accum,DX

in ax,dx

7, pm=4,21*, vm=19

INS [ES:]dest, DX

ins es:instr,dx

9, pm=6,24*, vm=22

INSB

Insb

9, pm=6,24*, vm=22

INSW

Insw

9, pm=6,24*, vm=22

INSD

Insd

9, pm=6,24*, vm=22

注:当CPL≤IOPL时,执行时间是第一个时钟周期,否则是第二个时钟周期。

1.9、输出指令

OUT immed8,accum

out 60h,al

12, pm=9,26, VM=24

OUT DX,accum

out dx,ax

12, pm=9,25  VM=24

OUTS DX,[segreg:]src

outs dx,buffer

13, pm=10,27, VM=24

OUTSB [DX,[segreg:]src]

outsb

13, pm=10,27, VM=24

OUTSW [DX,[segreg:]src]

outsw

13, pm=10,27, VM=24

OUTSD [DX,[segreg:]src]

outsd

13, pm=10,27, VM=24

2、标志位操作指令

2.1、标志位操作指令

指令的语法

举例

周期数

CLC

clc

2

CMC

cmc

2

STC

stc

2

CLD

cld

2

STD

std

2

CLI

cli

7

STI

sti

7

2.2、标志位存取操作指令

SAHF

Sahf

2

LAHF

lahf

2

2.3、标志位堆栈操作指令

PUSHF

pushf

4, pm=3

PUSHFD

pushfd

4, pm=3

POPF

popf

6, pm=4

POPFD

popfd

6, pm=4

3、算术运算指令

3.1、加法指令

指令的语法

举例

周期数

ADC reg,reg

adc dx,cx

1

ADC mem,reg

adc word ptr m16[2],dx

3

ADC reg,mem

adc dx,dword ptr m32[2]

2

ADD reg,reg

add ax,bx

1

ADD mem,reg

add total, cx

3

ADD reg,mem

add cx,incr

2

ADD reg,immed

add bx,6

1

ADD mem,immed

add pointers[bx][si],6

3

ADD accum,immed

add ax,10

1

INC reg

inc bx

1

INC mem

inc vpage

3

XADD reg,reg

xadd dl,al

3

XADD mem,reg

xadd string,bl

4

3.2、减法指令

SUB reg,reg

sub ax,bx

1

SUB mem,reg

sub array[di],bi

3

SUB reg,mem

sub al,[bx]

2

SUB reg,immed

sub bl,7

1

SUB mem,immed

sub total,4000

3

SUB accum,immed

sub ax,32000

1

SBB accum,immed

sbb ax,320

1

SBB reg,immed

sbb dx,45

1

SBB mem,immed

sbb word ptr m32[2],40

3

SBB reg,reg

sbb dx,cx

1

SBB mem,reg

sbb word ptr m32[2],dx

3

SBB reg,mem

sbb dx,word ptr m32[2]

2

DEC reg

dec ax

1

DEC mem

dec counter

3

NEG reg

neg ax

1

NEG mem

neg balance

3

3.3、乘法指令

MUL reg

mul bx

 

MUL memX

mul word ptr [bx]

8,16-bit=11

32-bit=10

IMUL reg

imul dx

11

IMUL mem

imul factor

11

IMUL reg,immed

imul cx,25

10

IMUL reg,reg,immed

imul dx,ax,18

10

IMUL reg,mem,immed

imul bx,[si],60

10

IMUL reg,reg

imul cx,ax

10

IMUL reg,mem

imul dx,[si]

10

3.4、除法指令

DIV reg

div cx

byte=17 word=25

DIV mem

div [bx]

dword=41

IDIV reg

idiv dl

8-bit=22;16-bit=30

IDIV mem

idiv itemp

32-bit=46

3.5、类型转换指令

CBW

cbw

3

CWD

cwd

2

CWDE

cwde

3

CDQ

cdq

2

4、逻辑运算指令

4.1、逻辑与操作指令

指令的语法

举例

周期数

AND reg,reg

and dx,bx

1

AND mem,reg

and bitmask,bx

3

AND reg,mem

and bx,masker

2

AND reg,immed

and dx,0F7h

1

AND mem,immed

and masker,100lb

3

AND accum,immed

and ax,0B6h

1

4.2、逻辑与操作指令

OR reg,reg

or ax,dx

1

OR mem,reg

or bits,dx

3

OR reg,mem

or dx,color[di]

2

OR reg,immed

or dx,110110b

1

OR mem,immed

or flag_rec,8

3

OR accum,immed

or ax,40h

1

4.3、逻辑与操作指令

NOT reg

not ax

1

NOT mem

not masker

3

4.4、逻辑异或操作指令

XOR reg,reg

xor cx,bx

1

XOR reg,mem

xor cx,flags

2

XOR mem,reg

xor [bp+10],cx

3

XOR reg,immed

xor bl,1

1

XOR mem,immed

xor switches[bx],101b

3

XOR accum,immed

xor ax,01010101b

1

、移位操作指令

5.1、算术左移指令

指令的语法

举例

周期数

SAL reg,1

sal bx,1

1

SAL mem,1

sal word ptr m32[0],1

3

SAL reg,CL

sal ah,cl

4

SAL mem,CL

sal BYTE PTR [di],cl

4

SAL reg,immed

sal cx,6

1

SAL mem,immed

sal array[bx+di],14

3

5.2、算术右移指令

SAR reg,1

sar di,1

1

SAR mem,1

sar count,1

3

SAR reg,CL

sar bx,cl

4

SAR mem,CL

sar sign,cl

4

SAR reg,immed

sar bx,5

1

SAR mem,immed

sar sign_count,3

3

5.3、逻辑左移指令

SHL reg,1

shl si,1

1

SHL mem,1

shl index,1

3

SHL reg,CL

shl di,cl

4

SHL mem,CL

shl index,cl

4

SHL reg,immed

shl di,2

1

SHL mem,immed

shl unsign,4

3

5.4、逻辑右移指令

SHR reg,1

shr dh,1

1

SHR mem,1

shr unsign[di],1

3

SHR reg,CL

shr dx,cl

4

SHR mem,CL

shr word ptr m32[2],cl

4

SHR reg,immed

shr bx,8

1

SHR mem,immed

shr mem16,11

3

5.5、双精度左移指令

SHLD reg16,reg16,immed8

shld ax,dx,10

4

SHLD reg32,reg32,immed8

     

SHLD mem16,reg16,immed8

shld bits,cx,5

4

SHLD mem32,reg32,immed8

     

SHLD reg16,reg16,CL

shld ax,dx,cl

4

SHLD reg32,reg32,CL

     

SHLD mem16,reg16,CL

shld masker,ax,cl

5

SHLD mem32,reg32,CL

     

5.6、双精度右移指令

SHRD reg16,reg16,immed8

shrd cx,si,3

4

SHRD reg32,reg32,immed8

 

 

SHRD mem16,reg16,immed8

shrd [di],dx,5

4

SHRD mem32,reg32,immed8

 

 

SHRD reg16,reg16,CL

shrd ax,dx,cl

4

SHRD reg32,reg32,CL

 

 

SHRD mem16,reg16,CL

shrd [bx],ax,cl

5

SHRD mem32,reg32,CL

 

 

5.7、循环左移指令

指令的语法

举例

周期数

ROL reg,1

rol ax,1

1

ROL mem,1

rol bits,1

3

ROL reg,CL

rol ax,cl

4

ROL mem,CL

rol color,cl

4

ROL reg,immed8

rol ax,13

1

ROL mem,immed8

rol byte ptr [bx],10

3

5.8、循环右移指令

ROR reg,1

ror ax,1

1

ROR mem,1

ror word ptr [bx],1

3

ROR reg,CL

ror dx,cl

4

ROR mem,CL

ror color,cl

5

ROR reg,immed8

ror bl,3

1

ROR mem,immed8

ror bits,6

3

5.9、带进位的循环左移指令

RCL reg,1

rcl dx,1

1

RCL mem,1

rcl WORD PTR [si],1

3

RCL reg,CL

rcl dx,cl

7-24

RCL mem,CL

rcl masker,cl

9-26

RCL reg,immed8

rcl bx,5

8-25

RCL mem,immed8

rcl word ptr [bp+8],3

10-27

5.10、带进位的循环右移指令

RCR reg,1

rcr bl,1

1

RCR mem,1

rcr word ptr m32[0],1

3

RCR reg,CL

rcr bl,cl

7-24

RCR mem,CL

rcl word ptr [bx=di],cl

9-26

RCR reg,immed8

rcr si,9

8-25

RCR mem,immed8

rcr masker,3

10-27

6、位操作指令

6.1、正向位扫描指令

指令的语法

举例

周期数

BSF reg16,reg16

bsf cx,bx

6-34

BSF reg32,reg32

bsf cx,bx

6-42

BSF reg16,mem16

bsf ecx,bitmask

6-35

BSF reg32,mem32

bsf ecx,bitmask

6-43

6.2、正向位扫描指令

BSR reg16,reg16

bsr cx,dx

7-39

BSR reg32,reg32

bsr ecx, edx

7-71

BSR reg16,mem16

bsr ax,bitmask

7-40

BSR reg32,mem32

bsr eax,bitmask

7-72

6.3、正向位扫描指令

BT reg16,immed8*(注)

bt ax,4

4

BT mem16,immed8

bt [bx],4

4

BT reg16,reg16

bt ax,bx

4

BT mem16,reg16

bt [bx],dx

9

(注) 操作数也可以是32位数。

6.4、正向位扫描指令

BTC reg16,immed8*

btc edi,4

7

BTC mem16,immed8*

btc color[di],4

8

BTC reg16,reg16*

btc eax,ebx

7

BTC mem16,reg16*

btc [bp+8],si

13

6.5、正向位扫描指令

BTR reg16,immed8*

btr bx,17

7

BTR mem16,immed8*

btr [bx],27

8

BTR reg16,reg16*

btr cx,di

7

BTR mem16,reg16*

btr rotate,cx

13

6.6、正向位扫描指令

BTS reg16,immed8*

bts ax,4

7

BTS mem16,immed8*

bts maskit,4

8

BTS reg16,reg16*

bts bx,ax

7

BTS mem16,reg16*

bts flags[bx],cx

13

6.7、正向位扫描指令

TEST reg,reg

test dx,bx

1

TEST mem,reg

test flags,dx

2

TEST reg,immed

test cx,30h

1

TEST mem,immed

test masker,1

2

TEST accum,immed

test ax,90h

1

7、比较运算指令

7.1、比较指令

指令的语法

举例

周期数

CMP reg,reg

cmp dl,cl

1

CMP mem,reg

cmp array[si],bl

2

CMP reg,mem

cmp bh,array[si]

2

CMP reg,immed

cmp bx,24

1

CMP mem,immed

cmp tester,4000

2

CMP accum,immed

cmp ax,1000

1

7.2、比较交换指令

CMPXCHG mem,reg

cmpxchg string,bl

6

CMPXCHG reg,reg

cmpxchg bx,cx

6

CMPXCHG8B reg,mem64

cmpxchg8b ax,[bx]

10

8、循环指令

8.1、循环指令

LOOP label

loop wend

5, 6

LOOPE label

loope again

7, 8

LOOPZ label

loopz again

7, 8

LOOPNE label

loopne for_next

7, 8

LOOPNZ label

loopnz for_next

7, 8

8.2、循环指令

JCXZ label

jcxz notfound

6,5

JECXZ label

jecxz notfound

6,5

9、转移指令

9.1、无条件转移指令

指令的语法

举例

周期数

JMP label

jmp NEAR PTR distant

1

jmp distant

3

JMP reg16

jmp ax

2

JMP mem16

jmp table[di]

2

JMP reg32

jmp eax

3

JMP mem32

jmp fpointer[si]

2

JMP mem48

jmp FWORD PTR [di]

4

9.2、条件转移指令

Jcondition label

je next

1

9.3、子程序调用指令

CALL label

call upcase

1

call distant

4

CALL reg

call ax

2

CALL mem32

call [bx]

2

CALL mem32

call dword ptr [bx]

5

9.4、子程序返回指令

RETN

retn

2

RETN immed16

retn 8

3

RETF

retf

4, 23

RETF immed16

retf 32

4, 23

9.5、中断指令

INT immed8

int 25h

16, pm=31, 48*(注)

INT 3

int 3

13, pm=27, 44*

INTO

Into

13, pm=27, 44*

注:第一时间是同等优先级的中断时间,第二时间为高优先级的中断时间。

9.6、中断返回指令

IRET

Iret

8*(注),10, pm=27

IRETD

Iretd

10, pm=27

IRETF

Iretf

 

IRETDF

Iretdf

 

注:实方式或虚拟8086方式。

10、条件设置字节指令

SETcondition reg8

setc dh

1

SETcondition mem8

setle flag

2

11、字符串操作指令

11.1、取字符串数据指令

指令的语法

举例

周期数

LODS [segreg:]src

lods es:source

2

LODSB [[segreg:]src]

Lodsb

2

LODSW [[segreg:]src]

Lodsw

2

LODSD [[segreg:]src]

Lodsd

2

11.2、置字符串数据指令

STOS [ES:]dest

stor es:dstring

3

STOSB [[ES:]dest]

stosb

3

STOSW [[ES:]dest]

stosw

3

STOSD [[ES:]dest]

stosd

3

11.3、字符串传送指令

MOVS [es:]dest, [segreg:]src

movs dest,es:source

4

MOVSB [[es:]dest, [segreg:]src]

movsb

4

MOVSW [[es:]dest, [segreg:]src]

movsw

4

MOVSD [[es:]dest, [segreg:]src]

movsd

4

11.4、输入字符串指令

INS [ES:]dest, DX

ins es:instr,dx

9, pm=6,24*, vm=22

INSB

Insb

9, pm=6,24*, vm=22

INSW

Insw

9, pm=6,24*, vm=22

INSD

Insd

9, pm=6,24*, vm=22

11.5、输出字符串指令

OUTS DX,[segreg:]src

outs dx,buffer

13, pm=10,27, VM=24

OUTSB [DX,[segreg:]src]

outsb

13, pm=10,27, VM=24

OUTSW [DX,[segreg:]src]

outsw

13, pm=10,27, VM=24

OUTSD [DX,[segreg:]src]

outsd

13, pm=10,27, VM=24

11.6、字符串比较指令

CMPS [segreg:] src, [ES:]dest

cmps source,es:dest

5

CMPSB [[segreg:[src,] ES:] dest]

cmpsb

5

CMPSW [[segreg:[src,] ES:]dest]

cmpsw

5

CMPSD [[segreg:[src,] ES:] dest]

cmpsd

5

11.7、字符串扫描指令

SCAS [ES]:dest

scas es:destin

4

SCASB

Scasb

4

SCASW

Scasw

4

SCASD

Scasd

4

11.8、重复前缀指令

REP INS dest,DX

rep ins dest,dx

11+3n, pm=(8,25)+3n*

REP MOVS dest,src

rep movs dest,source

6, 13n

REP OUTS DX,src

rep outs dx,source

13+4n, pm=(10,27)+4n*

REP LODS dest

rep lods dest

7, 7+3n

REP STOS dest

rep stos dest

6, 9+3n

注:当CPL≤IOPL时,执行时间是第一个时钟周期,否则是第二个时钟周期。

11.9、相等重复前缀指令

REPE CMPS src,dest

repe cmps src,dest

7, 9+4n

REPE SCAS dest

repe scas dest

7, 9+4n

11.10、不相等重复前缀指令

REPNE CMPS src,dest

repne cmps src,dest

7, 8+4n

REPNE SCAS dest

repne scas dest

7, 9+4n

12、ASCII-BCD码运算调整指令

指令的语法

举例

周期数

AAA

aaa

3

AAD

aad

10

AAM

aam

18

AAS

aas

3

DAA

daa

3

DAS

das

3

13、处理器指令

HLT

Hlt

12

NOP

nop

1

WAIT

wait

1

LOCK

lock

1

14、协处理器指令

指令的语法

举例

周期数

FBLD membcdfbld packbck48-58
FBSTP membcdfbstp bcds[bx]148-154
FLD regfld st(3)1
FLD mem32realfld longreal1
FLD mem64real 1
FLD mem80real 3
FST regfst st1
FST memrealfst longs[bx]2
FSTP regfstp st(3)1
FSTP mem32realfstp longreal2
FSTP mem64real 2
FSTP mem80real 3
FXCH [reg]fxchg st(3)1
FILD memintfild quads[si]3, 1
FIST memintfist doubles[8]6
FISTP memintfistp longint6
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍 第1章 预备知识  1.1 汇编语言的由来及其特点   1 机器语言   2 汇编语言   3 汇编程序   4 汇编语言的主要特点   5 汇编语言的使用领域  1.2 据的表示和类型   1 据的表示   2 非据的表示   3 基本的据类型  1.3 习题 第2章 CPU资源和存储器  2.1 寄存器组   1 寄存器组   2 通用寄存器的作用   3 专用寄存器的作用  2.2 存储器的管理模式   1 16位微机的内存管理模式   2 32位微机的内存管理模式  2.3 习题 第3章 操作的寻址方式  3.1 立即寻址方式  3.2 寄存器寻址方式  3.3 直接寻址方式  3.4 寄存器间接寻址方式  3.5 寄存器相对寻址方式  3.6 基址加变址寻址方式  3.7 相对基址加变址寻址方式  3.8 32位地址的寻址方式  3.9 操作寻址方式的小结  3.10 习题 第4章 标识符和表达式  4.1 标识符  4.2 简单内存变量的定义   1 内存变量定义的一般形式   2 字节变量   3 字变量   4 双字变量   5 六字节变量   6 八字节变量   7 十字节变量  4.3 调整偏移量伪指令   1 偶对齐伪指令   2 对齐伪指令   3 调整偏移量伪指令   4 偏移量计器的值  4.4 复合内存变量的定义   1 重复说明符   2 结构类型的定义   3 联合类型的定义   4 记录类型的定义   5 据类型的自定义  4.5 标号  4.6 内存变量和标号的属性   1 段属性操作符   2 偏移量属性操作符   3 类型属性操作符   4 长度属性操作符   5 容量属性操作符   6 强制属性操作符   7 存储单元别名操作符  4.7 表达式   1 进制伪指令   2 值表达式   3 地址表达式  4.8 符号定义语句   1 等价语句   2 等号语句   3 符号名定义语句  4.9 习题 第5章 微机CPU的指令系统  5.1 汇编语言指令格式   1 指令格式   2 了解指令的几个方面  5.2 指令系统   1 据传送指令   2 标志位操作指令   3 算术运算指令   4 逻辑运算指令   5 移位操作指令   6 位操作指令   7 比较运算指令   8 循环指令   9 转移指令   10 条件设置字节指令   11 字符串操作指令   12 ASCII-BCD码调整指令   13 处理器指令  5.3 习题 第6章 程序的基本结构  6.1 程序的基本组成   1 段的定义   2 段寄存器的说明语句   3 堆栈段的说明   4 源程序的结构  6.2 程序的基本结构   1 顺序结构   2 分支结构   3 循环结构  6.3 段的基本属性   1 对齐类型   2 组合类型   3 类别   4 段组  6.4 简化的段定义   1 存储模型说明伪指令   2 简化段定义伪指令   3 简化段段名的引用  6.5 源程序的辅助说明伪指令   1 模块名定义伪指令   2 页面定义伪指令   3 标题定义伪指令   4 子标题定义伪指令  6.6 习题 第7章 子程序和库  7.1 子程序的定义  7.2 子程序的调用和返回指令   1 调用指令   2 返回指令  7.3 子程序的参传递   1 寄存器传递参   2 存储单元传递参   3 堆栈传递参  7.4 寄存器的保护与恢复  7.5 子程序的完全定义   1 子程序完全定义格式   2 子程序的位距   3 子程序的语言类型   4 子程序的可见性   5 子程序的起始和结束操作   6 寄存器的保护和恢复   7 子程序的参传递   8 子程序的原型说明   9 子程序的调用伪指令   10 局部变量的定义  7.6 子程序库   1 建立库文件命令   2 建立库文件举例   3 库文件的应用   4 库文件的好处  7.7 习题 第8章 输入输出和中断  8.1 输入输出的基本概念   1 I/O端口地址   2 I/O指令  8.2 中断   1 中断的基本概念   2 中断指令   3 中断返回指令   4 中断和子程序  8.3 中断的分类   1 键盘输入的中断功能   2 屏幕显示的中断功能   3 打印输出的中断功能   4 串行通信口的中断功能   5 鼠标的中断功能   6 目录和文件的中断功能   7 内存管理的中断功能   8 读取和设置中断向量  8.4 习题 第9章 宏  9.1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值