MCS-51单片机指令关键系统
合集下载
MCS-51指令系统

❖ 目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址
除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响
标志位。2022/2/15
16
3.3.1 十六位数的传递指令(1条)
MOV DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。
2022/2/15
2
常用符号 Rn:工作寄存器中的寄存器R0、R1…R7之一,
Ri:工作寄存器中的寄存器R0或R1
#data:8位立即数
#data16:16位立即数 direct:片内RAM或SFR的地址(8位)
@间接寻址寄存器
Bit:片内RAM或SFR的位地址 addr11:11位目的地址
addr16:16位目的地址
者内容相加,结果作为操作数的地址。
常用于查表操作。 ❖ MCS-51
操作数在程 序存储器中
MOVC A, @A+DPTR ;(A+DPTR) →A
MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
2022/2/15
10
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.
2022/2/15
12
如:JC 23
程序存储区
1000H 40 1001H 23 1002H 30
当前PC …
…
1024H 47 1025H 45
指令代码
23H
MCS-51指令系统

18
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
MCS-51单片机的指令系统

整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。
第三章 MCS-51系列单片机指令系统

二. 机器语言指令格式
操作码 [操作数1] [操作数2]
单片机有单字节、双字节和三字节指令。
汇编语言指令中操作码和操作数是指令主体,称为
指令可执行部分,指令表中可查出对应指令代码。 举例:
汇编语言: MOV MOV MOV A,R0 R6,#32H 40H,#100H 机器语言: E8H 7E 32H 75 40 64H 11101000 01110101 01111110 01000000 00110010 01100100
MOV A,40H ;A(40H)
例:设存储器两个单元的内容如图所示, 执行指令 MOV A,40H后 A = 56H? 直接寻址方式对数据操作时,地址是 固定值,而地址所指定的单元内容为 变量形式。
bit @
:特殊目的寄存器或内部数据RAM中可直接寻址的位。 :间接寻址方式中,表示间址寄存器的符号
/ :位操作指令中,表示对该位先取反再参与操作,但不影 响该位原值。 X :片内RAM的直接地址或寄存器 (X) :在间接寻址方式中,表示直接地址X中的内容;在间接 寻址方式中, 表示由间址寄存器X指出的地址单元中的内容。 → ←
直接寻址
例:MOV A,3AH(操作码:E5)
可以直接寻址的存储器主要有特殊功能寄存器SFR、 内部数据存储器及位地址空间。
1000H是假设的该指
令存放的起始地址。
程序存储区 PC:1000H 1001H E5H 3AH 3AH
片内RAM区
ACC 10H 10H
返回
指令操作数是存储器单元地址,数据在存储器单元中。
操作码 PC:1000H 1001H 1002H 90H 3FH A6H 立即数低位 DPH DPH 3FH 3F DPL DPL A6H A6 DPTR
第三章(MCS-51单片机指令系统)

电气工程学院
位操作指令 1.位传送指令 MOV C,bit MOV bit,C 2.位置位和清零指令 CLR C
CLR
SETB
bit
C
电气工程学院
SETB bit
3.位运算指令
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit CPL C CPL bit
电气工程学院
movcaapcmovcaadptr变址寻址中只有两条指令第一个操作数必须是a变址部分必须是a和pc或a和dptr的组电气工程学院324位寻址位寻址是把8位二进制数中的某一位作为操作数看待称之为位寻址movc7fhmovc2fh7mova7fh可位寻址的空间1片内ram区20h2fh共16个单元其中每一位都可单独作为操作数2某些特殊功能寄存器sfr其特征是他们的物理地址应能被8整除共16个分布在80hffh的字节地址电气工程学院324位寻址电气工程学院3333数据传送指令数据传送指令数据传送指令1内部数据传送指令mova30hmovdptr1234h2外部ram数据传送指令movxadptr3外部rom数据传送指令movcaadptrmovcaapc电气工程学院3333数据传送指令数据传送指令direct直接寻址rn工作寄ri间接寻址累加器amovcadptrapcmovxdptr电气工程学院3434堆栈操作指令堆栈操作指令pushdirect
ADD
MOV JMP
A,R1
DPTR,#PMTB @A+DPTR
;A*3
LJMP LJMP
电气工程学院
2.条件转移指令
(1)累加器A判零转移指令
(2)比较条件转移指令(实际上进行减法操作,若A中结果不为零发生跳转) CJNE CJNE A,#data,rel A,direct,rel
位操作指令 1.位传送指令 MOV C,bit MOV bit,C 2.位置位和清零指令 CLR C
CLR
SETB
bit
C
电气工程学院
SETB bit
3.位运算指令
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit CPL C CPL bit
电气工程学院
movcaapcmovcaadptr变址寻址中只有两条指令第一个操作数必须是a变址部分必须是a和pc或a和dptr的组电气工程学院324位寻址位寻址是把8位二进制数中的某一位作为操作数看待称之为位寻址movc7fhmovc2fh7mova7fh可位寻址的空间1片内ram区20h2fh共16个单元其中每一位都可单独作为操作数2某些特殊功能寄存器sfr其特征是他们的物理地址应能被8整除共16个分布在80hffh的字节地址电气工程学院324位寻址电气工程学院3333数据传送指令数据传送指令数据传送指令1内部数据传送指令mova30hmovdptr1234h2外部ram数据传送指令movxadptr3外部rom数据传送指令movcaadptrmovcaapc电气工程学院3333数据传送指令数据传送指令direct直接寻址rn工作寄ri间接寻址累加器amovcadptrapcmovxdptr电气工程学院3434堆栈操作指令堆栈操作指令pushdirect
ADD
MOV JMP
A,R1
DPTR,#PMTB @A+DPTR
;A*3
LJMP LJMP
电气工程学院
2.条件转移指令
(1)累加器A判零转移指令
(2)比较条件转移指令(实际上进行减法操作,若A中结果不为零发生跳转) CJNE CJNE A,#data,rel A,direct,rel
第三章MCS51系列单片机指令系统及汇编语言程序设计

AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
MCS51指令系统的介绍

(3)增量指令INC
INC INC INC INC A Rn direct @Ri ;A(A)+1 ;Rn (Rn)+1 ;direct (direct)+1 ;(Ri)((Ri))+1
INC
DPTR
;DPTR (DPTR)+1
【例】(A)=12H,(R3)=0FH,(35H)=4AH, (R0)=56H,(56H)=00H 执行如下指令: INC A ;执行后(A)=13H INC R3 ;执行后(R3)=10H INC 35H ;执行后(35H)=4BH INC @R0 ;执行后(56H)=01H
POP DPH POP DPL POP ACC POP PSW 指令执行之后,SP内容修改为60H,而64H、63H、 62、61H单元的内容依次弹出到DPH、DPL、A、PSW中。
5、字节交换指令XCH XCHD SWAP
数据交换主要是在内部RAM单元与累加器A之间进 行,有整字节和半字节两种交换。 (1)整字节交换指令
图3.3 寄存器间接寻址方式示意图
3.2.5 位寻址
位操作指令能对内部RAM中的位寻址区(20H~2FH) 和某些有位地址的特殊功能寄存器进行位操作。
SETB TR0 CLR 00H MOV C,57H ;TR01 ;(00H)0 ;将57H位地址的内容传送到 位累加器C中 ;将5FH位状态与进位位C相与, 结果在C中
(2)带进位加法指令ADDC
ADDC ADDC ADDC A,Rn A,direct A,@Ri ;A(A)+(Rn)+(Cy) ;A(A)+(direct)+(Cy) ;A(A)+((Ri))+(Cy)
第3章 MCS-51指令系统

16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17
数据传送和交换类指令主要有以下几种:
1. 2. 3.
30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A
30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX
55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SJMP LOOP
;转移到LOOP
TIME: MOV R6,#200
;延时子程序TIME
TIME1:MOV R7,#200
TIME2:NOP
NOP
NOP
DJNZ R7,TIME2
DJNZ R6,TIME1
RET
END
2.1 汇编语言与指令系统简介
一、汇编语言程序设计的意义
什么是程序? 完成某项特定任务的指令的集合。 计算机按程序一条一条地依次执行指令,从而完成指定任务。 要让计算机完成各项任务,就应设计各种程序。 程序设计语言:
MCS-51单片机指令关键 系统
内 部 RAM
A
88H
88H
3A H
图2.2 直接寻址示意图
采用直接寻址的指令如下:
MOV P1,20H
;将20H单元的内容传送到P1口
1. 寄存器寻址 寄存器寻址是指将操作数存放于寄存器中,寄存器包括 工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器 DPTR等。例如,指令MOV R1,A的操作是把累加器A中的 数据传送到寄存器R1中,其操作数存放在累加器A中,所以 寻址方式为寄存器寻址。 如果程序状态寄存器PSW的RS1:RS0=01(选中1组工作 寄存器,对应地址为08H~0FH),设累加器A的内容为20H, 则执行MOV R1,A指令后,内部RAM 09H单元的值就变为 20H,如图2.1所示。
0 9H
A 20H
01 RS1 RS0
图2.1 寄存器寻址示意图
MCS-51单片机指令关键 系统
2. 直接寻址 直接寻址是指把存放操作数的内存单元的地址直接写在 指令中。在MCS-51单片机中,可以直接寻址的存储器主要 有内部RAM区和特殊功能寄存器SFR区。 例如,指令MOV A,3AH执行的操作是将内部RAM 中 地址为3AH的单元内容传送到累加器A中,其操作数3AH就 是存放数据的单元地址,因此该指令是直接寻址。 设内部RAM 3AH单元的内容是88H,那么指令MOV A, 3AH的执行过程如图2.2所示。
rel —— 8位带符号的偏移地址 DPTR —— 16位外部数据指针寄存器
bit —— 可直接位寻址的位
A —— 累加器 B —— 寄存器B C —— 进、借位标志位,或位累加器 @ —— 间接寄存器或基址寄存器的前缀 / —— 指定位求反 (x)—— x地址单元中的内容 ((x)) —— x地址单元中的内容为地址的单元中的内容 $ —— 当前指令的地址
机器语言: 汇编语言: 高级语言:
用二进制代码表示指令和数据。 用助记符表示指令操作功能,用标号表示操作对象。
独立于机器,面向过程,接近自然语言和数学表达式.
汇编语言程序的每一条语句都与计算机的某一条指令对应, 所以必需熟悉指令系统。
指令 = 操作码 + 操作数 操作码——表示了该指令所能执行的操作功能。 操作数——表示参加操作的数的本身或操作数所在的地址。 MCS-51指令格式:
注释是对指令的解释说明,用以提高程序的可读性; 注释前必须加分号。
MCS-51单片机指令关键 系统
二、MCS-51系列单片机的指令系统
111条指令,共分五大类: 数据传送类;(29条) 算术运算类;(24条) 逻辑运算类;(24条) 控制转移类;(17条) 位操作类。(17条)
MCS-51单片机指令关键 系统
[标号:标] 号操是作程码序助员记根符据编[第程一需操要作数给]指令[,设第定二的操作符数号]地址[;,注释可]有 可无;标号由1~8个字符组成,第一个字符必须是英文字,不 能是数字或其它符号;标号后必须用冒号。
操作码表示指令的操作种类,如MOV表示数据传送操作, ADD表示加法操作等。
操作数或操作数地址表示参加运算的数据或数据的有 效地址。操作数一般有以下几种形式:没有操作数项,操 作数隐含在操作码中,如RET指令;只有一个操作数,如 CPL A指令;有两个操作数,如MOV A,#00H指令,操作数 之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指 令,操作数之间也以逗号相隔。
指令中操作数的描述符号: Rn —— 工作寄存器R0 ~ R7
@Ri —— 间接寻址寄存器R0、R1 Direct —— 直接地址,包括内部128B RAM单元地址、
26个SFR地址。 #data —— 8位常数 #data 16 —— 16位常数 addr 16 —— 16位目的地址 addr 11 —— 11位目的地址
MCS-51单片机指令关键 系统
采用寄存器寻址的指令如下:
MOV P1,A
;将累加器A的内容送 到P1口
MOV P1,R4
;将寄存器R4的内容送到P1口
CLR A
;将累加器A清0
CPL A
;将累加器A中的内容取反
RL A
;将累加器A的内容循环左移
MCS-51单片机指令关键 系统
内 部RAM
R1
ห้องสมุดไป่ตู้
2 0H
第二章 MCS-51单片机指令系统
内容提要:
§2-1 汇编语言与指令系统简介 §2-2 数据传送类指令 §2-3 算术运算类指令 §2-4 逻辑运算类指令 §2-5 控制转移类指令 §2-6 位操作类指令 §2-7 伪指令
项目引入
1.项目描述 利用P1口外接的8只LED发光二 极管模拟彩灯 。 2.硬件电路与工作原理 让学生根据任务分析硬件要求, 画出具体电路,并在实验开发板 上接线 3.程序设计(给出控制程序)
8051
开始 55H送P1口 延时0.3秒 AAH送P1口 延时0.3秒
流水式彩灯控制程序框图
控制程序
ORG 0000H
LOOP: MOV P1,#55H ;将立即数55H送P1端口
LCALL TIME
;调延时子程序TIME
MOV P1,#0AAH
;将立即数AAH送P1端口
LCALL TIME
;调延时子程序TIME
MCS-51单片机指令关键 系统
三、 寻 址 方 式
操作数是指令的重要组成部分,指出了参与操作的数据 或数据的地址。寻找操作数地址的方式称为寻址方式。一条 指令采用什么样的寻址方式,是由指令的功能决定的。寻址 方式越多,指令功能就越强。
MCS-51指令系统共使用了7种寻址方式,包括寄存器寻 址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、 相对寻址和位寻址。