51 指令系统

 

目录

 

内部 RAM 传送指令

外部传送指令

程序存储器数据传送指令

字节交换指令

算术运算指令-加法

算术运算指令-减法

算术运算指令-十进制调整指令

算术运算指令-乘除法指令

逻辑运算类指令

控制转移类指令

布尔操作类指令

伪指令


 


 

内部 RAM 传送指令

 

 

指令名称

指令格式

功能

字节数

周期

以 A 为目的操作

MOV A,RN

A <- RN

1

1

MOV A,direct

A <- (direct)

2

1

MOV A,@Ri

A <- (Ri)

1

1

MOV A,#data

A <- #data

2

1

以 RN 为止目的

操作数

MOV RN,A

RN <- A

1

1

MOV RN,direct

RN <- (direct)

2

2

MOV RN,#data

RN <- #data

2

1

以直接地址为目

的操作数

MOV direct,A

(direct)  <- A

2

1

MOV direct,RN

(direct)  <- RN

2

2

MOV direct, direct

(direct)  <- (direct)

2

2

MOV direct, @Ri

(direct)  <- (Ri)

3

2

MOV direct, #data

(direct)  <- #data

2

2

以寄存储间接地

址为目的操作数

MOV @Ri, A

(Ri)  <- A

2

2

MOV @Ri, direct

(Ri)  <- (direct)

2

2

MOV @Ri, #data

(Ri)  <- #data

1

1

16 位数据传输

MOV DPTR,#data16

DPH <- #data(15-8)

DPL <- #data(7-0)

3

2

外部传送指令

指令格式

功能

字节数

周期

MOVX A,@RI

A <- (Ri)

1

2

MOVX A,@DPTR

A <- ( DPTR)

2

2

MOVX @RI,A

(Ri) <-  A

1

2

MOVX @DPTR,A

( DPTR)  <- A

2

2

程序存储器数据传送指令

指令格式

功能

字节数

周期

MOVC A,@A+DPTR

A <- ( A+DPTR)

1

2

MOVC A,@A+PC

A <- ( A+PC)

1

2

指令格式

功能

字节数

周期

PUSH direct

SP <- SP+1,(SP)  <-  (direct)

2

2

POP direct

(direct)  <-  (SP), SP <- SP-1

2

2

字节交换指令

指令格式

功能

字节数

周期

XCH A,RN

A <--> RN

1

1

XCH A, direct

A <--> ( direct)

1

1

XCH A,@RI

A <--> ( RI)

1

1

SWAP A

A(0-3) <--> A(4-7)

1

1

XCHD A,@RI

A(0-3) <--> (RI)(0-3)

1

1

算术运算指令-加法

指令名称

指令格式

功能

字节数

周期

不带进位加法

ADD A,RN

A <- A+RN

1

1

ADD A,@RI

A <- A+(RI)

1

1

ADD A, direct

A <- A+( direct)

2

1

ADD A, #data

A <- A+data

2

1

带进位加法

ADDC A, RN

A <- A+RN+CY

1

1

ADDC A, @RI

A <- A+(RI) +CY

1

1

ADDC A, direct

A <- A+( direct) +CY

2

1

ADDC A, #data

A <- A+data+CY

2

1

算术运算指令-减法

指令格式

功能

字节数

周期

SUBB A,RN

A <- A-RN-CY

1

1

SUBB A,@RI

A <- A-(RI) -CY

2

1

SUBB A, direct

A <- A-( direct) -CY

1

1

SUBB A, #data

A <- A-data-CY

2

1

指令名称

指令格式

功能

字节数

周期

加 1  指令

INC A

A <- A+1

1

1

INC RN

RN  <-  RN +1

1

1

INC @RI

(RI) <- (RI)+1

1

1

INC direct

(direct) <- ( direct)+1

2

1

INC DPTR

DPTR  <-  DPTR +1

1

2

减 1 指令

DEC A

A <- A-1

1

1

DEC RN

RN  <-  RN -1

1

1

DEC @RI

(RI) <- (RI)-1

1

1

DEC direct

(direct) <- ( direct)-1

2

  1

算术运算指令-十进制调整指令

指令格式

功能

字节数

周期

DA A

将 A 中内容转换为 BCD 码

1

1

方法:将累加器 A 中的低半字节的值大于 9 或 AC=1 时低半字节加 6,当高半字节大于 9 或

C=1 时,高半字节加 6,

算术运算指令-乘除法指令

指令格式

功能

字节数

周期

MUL AB

B A <- A*B

1

4

DIV AB

A <- A/B,(B 放余数)

1

4

逻辑运算类指令

指令名称

指令格式

功能

字节数

周期

逻辑与指令

ANL A,RN

A <- A^RN

1

1

ANL A,@RI

A <- A^(RI)

1

1

ANL A, direct

A <- A^( direct)

2

1

ANL A,# data

A <- A^ data

2

1

ANL direct, # data

( direct) <-  ( direct)^RN

2

1

 

ANL direct,A

( direct) <-  ( direct)^A

3

2

逻辑或指令

ORL A,RN

A <- AVRN

1

1

ORL A,@RI

A <- AV(RI)

1

1

ORL A, direct

A <- AV ( direct)

2

1

ORL A,# data

A <- AV data

2

1

ORL direct, # data

( direct) <-  ( direct)VRN

2

1

ORL direct,A

( direct) <-  ( direct)VA

3

2

逻辑异或指令

XOR A,RN

A <- A※RN

1

1

XOR A,@RI

A <- AV※(RI)

1

1

XOR A, direct

A <- A※( direct)

2

1

XOR A,# data

A <- A※ data

2

1

XOR direct, # data

( direct) <-  ( direct)  ※RN

2

1

XOR direct,A

( direct) <-  ( direct)  ※A

3

2

累加器 A 清 0  与

取反

CPL A

A <- ~A

1

1

CLR A

A <- 0

1

1

空操作

NOP

空操作

1

1

不带进位循环移

位指令

RL A

An+1 <- An(n=0--6),A0 <- A7

1

1

RR A

An  <-  An+1 (n=0--6), A7 <-  A0

1

1

带进位循环移位

指令

RLC A

An+1 <- An(n=0--6),

CY <-  A7, A0 <- CY

1

1

RRC A

An  <-  An+1 (n=0--6),

A7 <-  CY, CY  <-  A0

1

1

控制转移类指令

指令名称

指令格式

功能

字节数

周期

无条件转移类指

 <-

LJMP addr16

PC <- PC+3,PC <-  addr16

3

2

AJMP addr11

PC <- PC+3,PC <-  addr11

2

2

SJMP rel

PC <- PC+2+ rel

2

2

JMP @A+DPTR

PC <- (A+DPTR)

1

2

累加器判 0 转发

指令

JZ rel

若 A=0 则 PC <- PC+2+ rel

若 A≠0 则 PC <- PC+2

2

2

JNZ rel

若 A≠0 则 PC <- PC+2+ rel

若 A=0 则 PC <- PC+2

2

2

比较转移指令

CJNE A,direct, rel

若  A  ≠ (direct) 则

PC <- PC+3+ rel

若    A=(direct)   则

PC <- PC+3

若  A  ≥ (direct), 则

CY <- 0

3

2

CJNE A,#data, rel

若 A≠data 则 PC <- PC+3+

rel

3

2

 

 

若 A= data 则 PC <- PC+3

若 A≥data,则 CY <- 0

 

 

CJNE RN,#data, rel

若   RN   ≠ data 则

PC <- PC+3+ rel

若 RN = data 则 PC <- PC+3

若 RN≥data,则 CY <- 0

3

2

CJNE @Ri,#data, rel

若 (Ri)    ≠ data                                            则

PC <- PC+3+ rel

若(Ri)= data 则 PC <- PC+3

若(Ri)≥data,则 CY <- 0

3

2

减 1 不为 0  转移

指令

DJNZ RN,rel

若  RN-1   ≠ 0 , 则

PC <- PC+2+ rel

若 RN-1=0,则 PC <- PC+2

3

2

DJNZ direct,rel

若 (direct)-1 ≠ 0 ,则

PC <- PC+2+ rel

若 (direct)-1=0 , 则

PC <- PC+2

3

2

子程序调用和返

回指令

LCALL addr16

PC <- PC+3,PC  值大压栈,

PC <-  addr16

3

2

ACALL addr11

PC <- PC+1,PC  值大压栈,

PC10--0 <-  addr11

2

2

RET

程序返回

1

2

RETI

中断返回

1

2

布尔操作类指令

指令名称

指令格式

功能

字节数

周期

位数据传送指令

MOV C,bit

CY <-  bit

2

1

MOV bit,c

bit  <-  CY

2

1

位状态控制指令

CLR C

CY <- 0

1

1

CLR bit

bit  <-  0

2

1

SETB C

CY <- 1

1

1

SETB bit

bit  <-  1

2

1

位逻辑操作指令

ANL C,bit

CY <-  CY∧bit

2

2

ANL C,/bit

CY <-  CY∧~bit

2

2

ORL C,bit

CY <-  CY∨bit

2

2

ORL C,/bit

CY <-  CY∨~bit

2

2

CPL C

CY <-  ~CY

1

2

CPL bit

bit  <-  ~ bit

2

2

位条件转移指令

JC rel

若 CY=0,则转移 PC <- PC+2+ rel

否则 PC <- PC+2

2

2

JNC rel

若 CY≠0,则转移 PC <- PC+2+ rel

2

2

 

 

否则 PC <- PC+2

 

 

JB bit, rel

若 bit =1,则转移 PC <- PC+2+ rel

否则 PC <- PC+2

3

2

JNB bit, rel

若 bit≠1,则转移 PC <- PC+2+ rel

否则 PC <- PC+2

3

2

JNC bit, rel

若 bit =1,则转移 PC <- PC+2+ rel,

且 bit <- 0,

否则 PC <- PC+2

3

2

伪指令

指令格式

功能

ORG XXXXH

指定本条指令下面的程序或表格数据的起始地址

END

指示源程序到此结束

EQU

把“项”赋给“字符名称”

DATA

数据地址赋值命 <-

DB XXH,XXH..

定义字节指令

DW XXXXH,XXXXH,..

定义字指令

DS

预留存储空间指令

BIT

位地址符指令

 

猜你喜欢

转载自blog.csdn.net/zhanglifu3601881/article/details/84404859