第3讲 MCS-51单片机汇编指令系统
合集下载
第三章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条)
第3章_MCS-51单片机指令系统及汇编语言程序设计2
3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $
3.MCS-51单片机指令系统及汇编语言程序设计
ROM、内部RAM SFR XXH
14
例:MOV A,3AH
程序存储器 内部RAM … …
PC
PC+1
11100101 操作码 00111010 直接地址
3AH
39H
100111111
A 10011111
15
…
3.寄存器寻址
定义:操作数存放在MCS-51内部的某个工作寄存器Rn(R0~R7) 或部分专用寄存器中,这种寻址方式称为寄存器寻址。 特点:由指令指出某一个寄存器的内容作为操作数。存放操作 数的寄存器在指令代码中不占据单独的一个字节,而是嵌入 (隐含)到操作码字节中。寻址范围:四组通用寄存器组Rn (R0~R7)、部分专用寄存器( A, B, DPTR, Cy )。
1000H+30H
PC DPTR
基址寄存器 1000H
变址寄存器 30H 65H
A
20
特点:指令操作码中隐含作为基址寄存器用的DPTR(或 PC )和作为变址用的累加器A。在执行变址寻址指令时, MCS-51单片机先把基地址( DPTR或PC 的内容)和地址偏 移量(A的内容)相加,以形成操作数地址,再由操作数地 址找到操作数,并完成相应的操作。变址寻址方式是单字 节指令。
其中:00H是片内RAM中20H地址单元的第0位。
24
(2)字节地址加位序号的形式。如:
MOV 20H.0, C ; (20H.0)←(Cy) 其中:20H.0是片内RAM中20H地址单元的第0位。
第3章 MCS-51单片机指令系统 与汇编语言程序设计
主要内容: 介绍 MCS-51单片机的寻址方式、指令系统、 基本程序结构及汇编语言的开发和调试。重点在 于寻址方式、各种指令的应用、程序设计的规范、 程序设计的思想及典型程序的理解和掌握。难点 在于控制转移、位操作指令的理解及各种指令的 灵活应用,以及程序设计的基本方法和针对具体 的硬件设计出最合理的软件。
第3章 MCS-51单片机指令系统
(1)内部数据存储器的低128个字节单元 (00H~7FH)。例: MOV A, 40H ,表示把内 部RAM 40H单元的内容传送给A。 假设40H单元中的内容为2BH,结果是将直接地 址40H单元中的数据2BH传送到累加器A中。
第三章 MCS-51单片机指令系统
3.2.2 直接寻址
(2)特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 对于特殊功能寄存器,在助记符指令中可以直接 用符号来代替地址。例: MOV A, P0 ,表示把 P0口(地址为80H)的内容传送给A。
3.3.1 内部数据存储器传送指令
1.立即数传送指令
MOV A,#data ;A←data MOV Rn,#data ;Rn←data,n=0~7 MOV direct,#data ;direct←data MOV @Ri,#data ;(Ri)←data,i=0,1 MOV DPTR,#data16 ;DPTR←data16 前四条指令将8位立即数传送到指定的存储单元中。 最后一条指令将16位立即数传送到数据指针 DPTR中,其中高8位送入DPH,低8位送入DPL。
(3)三字节指令 编码格式为:
例如数据传送指令MOV 20H,#3AH的编码格式为:
3.2 寻址方式
第三章 MCS-51单片机指令系统
所谓寻址,就是寻找操作数的真正地址,寻址方 式,就是指寻找操作数地址的方式。
在用汇编语言编程时,数据的存放、传送、运算 都要通过指令来完成。 编程者必须自始至终都要 十分清楚操作数的位置, 以及如何将它们传送到适 当的寄存器去参与运算。每一种计算机都具有多 种寻址方式。寻址方式的多少是反映指令系统优 劣的主要指标之一。
2. 汇编语言
汇编语言就是用助记符表示的指令,汇编语言与 机器语言一一对应。用汇编语言编写程序,每条 指令的意义一目了然,给程序的编写、阅读和修 改带来很大方便。而且用汇编语言编写的程序占 用内存少,执行速度快,尤其适用于实时应用场 合的程序设计。因此,在单片机应用系统中主要 是用汇编语言来编写程序。 汇编语言的缺点:缺乏通用性,程序不易移植, 是一种面向机器的低级语言。使用汇编语言编写 程序时,必须熟悉机器的指令系统、寻址方式、 寄存器的设置和使用方法。每种计算机系统都有 它自己的汇编语言。不同计算机的汇编语言之间 不能通用。
第3章 MCS-51型单片机指令系统和汇编语言程序设计
它分为加、减、乘、除、加 1、减 1 及十进制调整指令。 3.逻辑运算类指令 24 条 它分为逻辑“与”、“或”、“异或”、“非”及移位指令。
4.位操作类指令 12 条
它分为位传送、置位、清零及位逻辑指令。 5.控制转移类指令 22 条
它分为无条件转移、条件转移、比较转移、循环转移及子程序调用和返回指令。
表 3-1 寻址方式与相应的存储器空间
存储器空间 程序存储器 ROM 片内 RAM 低 128 字节、专用寄存器 SFR 和片内 RAM 可位寻址的单元 20H~2FH 工作寄存器 R0~R7、A、B、Cy、DPTR、A、B 片内 RAM 低 128 字节(@R0、@R1、SP)、片外 RAM(@R0、@R1、@DPTR) 程序存储器(@A+PC、@A+DPTR) 程序存储器 256 字节范围(PC+偏移量) 片内 RAM 20H~2FH 字节地址中的所有位和 SFR 中字节地址能被 8 整除单元的位
MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data
;A←Rn ;A←(direct) ;A←(Ri) ;A←data
【例 3-1】 指出下列各条指令的含义。 (1) MOV A,R0 ;将寄存器 R0 中的数据传送至 A 中,即完成 A←R0。R0 中的 ;内容不变 (2) MOV A,30H ;将直接地址 30H 单元中的数据传送至 A 中,即完成 A←(30H) ;若(30H)=37H,则执行指令 MOV A,30H 后,A=37H (3) MOV A,@R1 ;将 R1 中的数据作为地址,将这个地址中的数据送至累加器 A 中 ;若 R1=30H,(30H)=18H,则执行指令 MOV A,@R1 后,A=18H (4) MOV A,#40H ;将立即数 40H 送至累加器 A 中,即执行该指令后,A=40H (2) 以 Rn 为目的字节的传送指令(3 条)。
4.位操作类指令 12 条
它分为位传送、置位、清零及位逻辑指令。 5.控制转移类指令 22 条
它分为无条件转移、条件转移、比较转移、循环转移及子程序调用和返回指令。
表 3-1 寻址方式与相应的存储器空间
存储器空间 程序存储器 ROM 片内 RAM 低 128 字节、专用寄存器 SFR 和片内 RAM 可位寻址的单元 20H~2FH 工作寄存器 R0~R7、A、B、Cy、DPTR、A、B 片内 RAM 低 128 字节(@R0、@R1、SP)、片外 RAM(@R0、@R1、@DPTR) 程序存储器(@A+PC、@A+DPTR) 程序存储器 256 字节范围(PC+偏移量) 片内 RAM 20H~2FH 字节地址中的所有位和 SFR 中字节地址能被 8 整除单元的位
MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data
;A←Rn ;A←(direct) ;A←(Ri) ;A←data
【例 3-1】 指出下列各条指令的含义。 (1) MOV A,R0 ;将寄存器 R0 中的数据传送至 A 中,即完成 A←R0。R0 中的 ;内容不变 (2) MOV A,30H ;将直接地址 30H 单元中的数据传送至 A 中,即完成 A←(30H) ;若(30H)=37H,则执行指令 MOV A,30H 后,A=37H (3) MOV A,@R1 ;将 R1 中的数据作为地址,将这个地址中的数据送至累加器 A 中 ;若 R1=30H,(30H)=18H,则执行指令 MOV A,@R1 后,A=18H (4) MOV A,#40H ;将立即数 40H 送至累加器 A 中,即执行该指令后,A=40H (2) 以 Rn 为目的字节的传送指令(3 条)。
MCS-51单片机的汇编语言指令系统
3.2.3 寄存器寻址方式 操作数在寄存器中
MOV A,R0
寻址范围: (1)工作寄存器:4组R0~R7 (2)部分特殊功能寄存器:如A、B、DPTR等
3.2.4 寄存器间接寻址方式
寄存器中存放的是操作数的地址, 即操作数是通过寄存器间接得到的 如:MOV A,@R0
寻址范围: (1)内部RAM低128单元 (2)外部RAM 64KB 如 MOVX A,@DPTR (3)外部RAM的低256单元 如:MOV A,@R0 (4)堆栈操作指令(PUSH、POP),以堆栈作间址
如: INC DPTR 1010 0011
MOV A,Rn
无操作数 含有操作数
1110 1rrr
一字节指令49条
2、双字节指令 包括二个字节,其中第一个字节为操作码,
第二个字节为操作数
如:MOV A,#data 指令代码:0111 0100
立即数
双字节指令共45条
3、三字节指令 三字节指令中,操作码占一个字节 操作数占两个字节
目的地址=转移指令地址+转移指令字节数+ rel 偏移量rel是一个带符号的8位二进制补码数,表示的数 的范围是:-128~+127
3.2.7 位寻址方式 位处理功能,可以对数据位进行操作
如:MOV C,3AH 把3AH位的状态送进位位C 寻址范围: (1)内部RAM中的位寻址区
单元地址为20H~2FH,共16个单元128位,位地址 是00H~7FH (2)专用寄存器的可寻址位 可供寻址的专用寄存器共有11个,实有寻址位83位
第3章 MCS-51单片机的汇编语言指令系统
3.1 指令格式及其符号说明
单片机汇编语言:助记符语言 单片机的指令:是CPU用于控制功能部件完成某一
第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地址段。
单片机课件第三章 MCS-51系列单片机的指令系统和汇编语言程序设计.ppt
例: ORG 1000H STORE: DS 08H
从1000H单元开始,保留8个连续单元备用。
7)赋值年伪指令EQU 格式: 名字 EQU 表达式 把表达式表示的值赋给名字。
例:
ABC EQU 8500H DEF EQU ABC+50H
§3-2 寻址方式
指令给出参与运算的数据的方式称为寻址方式。
对!
错!
MOV P1,R0
寻址比较
对!
错!
① 直接将20H这个数送P1口
MOV P1,@R0
② 地址在寄存器R0里面
MOV P1,20H
③ 地址是寄存器R0
MOV P1,#20H
④ 地址是内存20H
错!
错!
错!
错!
寻址比较
MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H
49
48
41
40
39 38
31
30
29
28
21
20
19
18
11
10
09
08
01
00
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
SETB 3DH
28H 27H
21H 20H
0 0 10 0 0 0 0 0
···
···
例: 指令地址 机器码 0100H 7402 0102H 83 0103H 00 0104H 00 0105H 56
①
②
注:找信是寻找信的“地 址”!
你能说出第 二封信的
“地址”吗?
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
从1000H单元开始,保留8个连续单元备用。
7)赋值年伪指令EQU 格式: 名字 EQU 表达式 把表达式表示的值赋给名字。
例:
ABC EQU 8500H DEF EQU ABC+50H
§3-2 寻址方式
指令给出参与运算的数据的方式称为寻址方式。
对!
错!
MOV P1,R0
寻址比较
对!
错!
① 直接将20H这个数送P1口
MOV P1,@R0
② 地址在寄存器R0里面
MOV P1,20H
③ 地址是寄存器R0
MOV P1,#20H
④ 地址是内存20H
错!
错!
错!
错!
寻址比较
MOV P1,R0 MOV P1,@R0 MOV P1,20H MOV P1,#20H
49
48
41
40
39 38
31
30
29
28
21
20
19
18
11
10
09
08
01
00
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
SETB 3DH
28H 27H
21H 20H
0 0 10 0 0 0 0 0
···
···
例: 指令地址 机器码 0100H 7402 0102H 83 0103H 00 0104H 00 0105H 56
①
②
注:找信是寻找信的“地 址”!
你能说出第 二封信的
“地址”吗?
立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
第三章 MCS51单片机指令系统PPT课件
机器语言又称为机器码,由“0”和“1”组成。其因CPU的不同而不同(现已达百 种以上)。一条指令的长度有8位(单字节)到最大的32位(4字节)等多种。如 “累加器A加1”,用机器码表示为“”,占用一个字节。因二进制难以记忆,因 而用十六进制表示为04H。而04H也不好记,因而改为助记符INC A,此即为汇编 语言。汇编语言与机器语言是一一对应的,但在应用时应将汇编语言编译为机 器语言。
MOV C, 37H ;(CY) (3FH)
§3-3 指令系统
符号约定:
Rn (n=0~7),指当前存储器区的8个工作寄存器R0~R7;
Ri (i=0,1) ,指当前寄存器区可作为地址寄存器的两个工作寄存器;
direct , 8位内部RAM的地址及SFR的地址;
#data , 表示8位数字;
#data16 , 表示16位数字;
,表示数据交换。
数据传送类指令
3.3.1 通用传送指令
格式: MOV 目的操作数,源操作数 功能:把第二操作数的字节内容传送到第一操作数指定的单元中,不影响源
操作数内容,不影响别的寄存器,但有时会改变PSW中P的标志位。
根据目的操作数的不同,通用传送指令又分为以下几种: 以累加器A为目的的操作数的传送类指令 以Rn为目的操作数的传送类指令 以直接地址directX为目的的操作数的传送类指令 以寄存器间接地址@Ri为目的的操作数的传送类指令 16位目标地址传送指令
数据传送类指令
3.3.1 通用传送指令
以寄存器间接地址@Ri为目的操作数的传送类
MOV MOV MOV
目的操作数
@Ri , @Ri , @Ri,
源操作数
A direct #data
功能说明
源操作数寻址方式
MOV C, 37H ;(CY) (3FH)
§3-3 指令系统
符号约定:
Rn (n=0~7),指当前存储器区的8个工作寄存器R0~R7;
Ri (i=0,1) ,指当前寄存器区可作为地址寄存器的两个工作寄存器;
direct , 8位内部RAM的地址及SFR的地址;
#data , 表示8位数字;
#data16 , 表示16位数字;
,表示数据交换。
数据传送类指令
3.3.1 通用传送指令
格式: MOV 目的操作数,源操作数 功能:把第二操作数的字节内容传送到第一操作数指定的单元中,不影响源
操作数内容,不影响别的寄存器,但有时会改变PSW中P的标志位。
根据目的操作数的不同,通用传送指令又分为以下几种: 以累加器A为目的的操作数的传送类指令 以Rn为目的操作数的传送类指令 以直接地址directX为目的的操作数的传送类指令 以寄存器间接地址@Ri为目的的操作数的传送类指令 16位目标地址传送指令
数据传送类指令
3.3.1 通用传送指令
以寄存器间接地址@Ri为目的操作数的传送类
MOV MOV MOV
目的操作数
@Ri , @Ri , @Ri,
源操作数
A direct #data
功能说明
源操作数寻址方式
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
第03章 MCS - 51单片机指令系统
这里源操作数不能进行寄存器间接寻址, 也就是MOV Rn , @Rn 这个指令是不能用 的。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。
第3章MCS51系列单片机的指令系统及汇编语言程序设计
30H
Eg:MOV A,30H
A XX A
结果
A 33H 30H 10H
33H
结果
Eg:MOV A,#10H
10H
XX
•
Eg.: MOV A,R2 R2 A 33H XX
A
33H
Eg. : MOV A,@R0
R0
55H
地址
55H
取出
A
78H
78H
注意:在使用Ri进行间址寻址时,只能够使用R0和R1。
当前工作寄存器中的某一个,即R0~R7; R0或者R1 单片机内部RAM低128字节(00h~7fh)中的某 个字节地址, 或者是某个专用寄存器的名字; #data 8位(1字节)立即数 #data16 16位(2字节)的立即数 Addr16 16位目的地址,在LJMP和LCALL的指令中采用 Addr11 11位目的地址,只在AJMP和ACALL指令中采用 Rel 相对转移指令中的偏移量。 DPTR 数据指针(由DPH和DPL构成) Bit 内部RAM(包括专用寄存器)中可寻址位的地址或 名字 Rn Ri Direct
有两个操作数,如MOV 相隔;
有三个操作数,如CJNE 也以逗号相隔。 注释
A, #00H指令,操作数之间以逗号
A, #00H, NEXT指令,操作数之间
注释是对指令的解释说明,用以提高程序的可读 性;注释前必须 以“;”和指令分开,注释在每条 指令后都可以设有。
2.1.2
指令中符号的意义说明
2.以通用寄存器Rn为目的的传送指令:( 3条)
MOV Rn,A ; Rn ← (A) MOV Rn,direct ; Rn←(direct) MOV Rn,#data ; Rn← data
第3章MCS51单片机指令系统1PPT课件
返回目录
43.1 指令系统简介------指令的两种格式
要让计算机工作,就得向计算机发出指令。
指令的格式是机器码指令格式, 如:75905B ,即数字格式。
另一种指令格式,即汇编指令格式, 如:MOV P1, #5BH
2020/9/26
张兴忠制作:
返回目录
5
3.1 指令系统简介
-----MCS-51汇编语言指令格式
地址的存储单元的内容。 →:表示数据传送方向。
2020/9/26
张兴忠制作:
返回目录
15
3.1.4 寻址方式
如何找到参与运算的操作数据或数据所在的 地址称为寻址方式。所以寻址方式是在地址范围 内如何找到所需要的操作数的地址。
MCS-51指令系统的寻址方式主要有立即寻址、 直接寻址、寄存器寻址、寄存器间接寻址、基址 加变址寻址、相对寻址和位寻址等七种。
单片机原理与接口技术
第3章 MCS-51单片机 指令系统
2020/9/26
张兴忠制作:
返回目录
1
本章教学要求
第3章 MCS-51单片机指令系统
熟悉MCS-51单片机指令系统的分类、格式; 熟悉MCS-51指令系统的七种寻址方式; 掌握MCS-51指令系统的数据传送、算术运算、逻
辑运算、转移操作、布尔运算等指令的功能;
1) 指令执行时间短。只需1个机器周期的指令有64 条,2个机器周期的指令有45条,而4个机器周 期的指令仅有2条(既乘法和除法指令)。
2) 指令字节少。单字节指令有49条,双字节指令 有46条,三字节指令有16条。
3) 位操作指令极为丰富,这体现了MCS-51单片机 具有面向控制的特点。
2020/9/26
Rn:表示当前工作寄存器R0~R7中的一个。 @Ri:表示寄存器间接寻址,常作间接寻址的地
单片机原理及应用课件第3章 mcs-51单片机指令系统和汇编语言程序示例
MOV @R1,P1
;((R1))←(P1)
MOV P2,P1
;(P2)←(P1)
MOV 10H,#20H
;(10H)←20H
执行上述指令后的结果为:(R0)=30H,(R1)=(A)=40H, (B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。
第3章 MCS-51单片机指令系统和汇编语言程序示例
3.2.7 位寻址
位寻址是在位操作指令中直接给出位操作数的地址,可以 对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻 址。
例如指令MOV C,24H.0;机器码为A2H 20H,相当于 MOV C,20H。
第3章 MCS-51单片机指令系统和汇编语言程序示例
3.3 数据传送类指令
第3章 MCS-51单片机指令系统和汇编语言程序示例
3.3.1 访问片内数据存储器的一般数据传送指令
该类指令的功能是实现数在片内RAM单元之间、寄存器之间、 寄存器与RAM单元之间的传送。所有指令具有统一的格式,其格 式如下:
MOV <目的操作数>,<源操作数>;目的操作数单元←源操 作数(或单元)
操作码助记符都是"MOV",目的操作数和源操作数不同寻址 方式的组合就派生出该类的全部指令。因此,记忆这类指令的关 键在于掌握两个操作数的各种寻址方式的组合关系。
指令:MOV A,#5AH 机器码:74H 5AH
第3章 MCS-51单片机指令系统和汇编语言程序示例 3.2.2 寄存器寻址
在指令选定的某寄存器中存放或读取操作数,以完成指令规 定的操作,称为寄存器寻址。
例如:MOV A,R7指令中源操作数和目的操作数都是寄存 器寻址。该指令的功能是把工作寄存器R7中的内容传送到累加器A 中,如R7中的内容为30H,则执行该指令后A的内容也为30H。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.3.2 寄存器间接寻址 寄存器间接寻址的特点在于寄存器中包含有将要被寻找的操作数地址。在执行继而从这个地址中找到被操作数。可以作为寄存器 间接寻址的寄存器包括@Ri(R0和R1)以及@DPTR。如下所示指令为寄存器间接寻址。 MOV A,@R0; A←(R0)
第3讲 单片机汇编指令系统
《51单片机原理及程序设计》 王欣飞、谢龙汉、谢锋然编著 清华大学出版社
51单片机原理及程序设计
第3讲 单片机汇编指令系统
3.1 实例模仿—数据运算与转移 3.2 MCS-51单片机汇编指令概述 3.3七种寻址方式 3.4 51单片机指令系统 3.5 实例操作—BCD加减法实现 3.6 实例练习—条件转移指令的使用
51单片机原理及程序设计
3.2.2 51单片机汇编指令
计算机编程语言是计算机指令的表达形式。在计算机中包含有三种形式的计算机语言:机器 语言、汇编语言以及高级语言。下面分别对这三种语言进行简单介绍。 1.机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算 机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快 等特点。但是机器语言具有不便于识别、记忆、理解以及使用的特性,因此现在在编程中一般很少 直接使用机器语言进行编程。 2.汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的 英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是 就产生了汇编语言。汇编语言是一种用助记符表示的仍然面向机器的计算机语言。 汇编语言并不能被计算机直接识别以及执行,必须执行一个中间环节把它翻译成机器语言程 序,这个中间过程称为汇编。利用汇编语言编制程序具有占用内存空间小,执行速度快的特点,但 是相较于高级语言,其使用方法仍然较为繁琐,通用性也较差。 3.高级语言 与机器语言以及汇编语言不同,高级语言是面向用户的编程语言,具有语意确定、规则明确、 自然直观和通用易学的特点。高级语言需要经过编译或者解释之后才能转为二进制代码为计算机所 识别。目前在微型计算机中编程中的多数程序是由高级语言编制而成的,常见的计算机高级语言包 括BASIC,PASCAL,C,VC,VB等。 51单片机原理及程序设计
3.2.2 51单片机汇编指令
在单片机的编程中汇编语言是最为常见的编程语言。通过汇编语言编制的单片机程序具有执 行速度快,效率高,占用资源少的优点。对于不同单片机,其汇编指令系统包含的指令条数并不相 同。51单片机汇编指令系统共有111条指令,其中按照不同的划分方法可以分为不同的类别。
1)按照功能不同 可以将指令系统分为数据传送指令、算数运算指令、逻辑运算指令、移位指令,程序转移指 令、位操作指令等6大类。
3.3.4 直接寻址
3.3.5 变址寻址 变址寻址是在一个基址寄存器加变址寄存器的基础上进行间接寻址的操作。变址寻址具有以下几个 方面的特点:
1)基址寄存器为数据指针DPTR或者程序计数器PC, DPTR 在DPTR或者PC中应该预先存放有操作数的基地址
在51汇编指令格式中,操作数可以分为目的操作数以及源操作数两种,其中源操作数通常指 代指令操作的对象,而目的操作数通常用于存放操作的结果。汇编指令常见编程格式如下:
[标号:] 操作码助记符 [目的操作书],[源操作数];[注释] 在指令的学习中,我们需要借助一些符号来对指令的操作对象以及操作范围进行讲解。下面 将描述指令的一些符号以及约定意义加以说明。
51单片机原理及程序设计
3.1 实例模仿—数据运算与转移
【实例3-1】利用指令将20H以及30H分别送入单片机片内RAM中,存放地址分别为20H以及30H,同 时利用加法指令将两个数相加的结果送至40H地址中。 【思路分析】数据运算以及转移指令是MCS-51单片机汇编语言中最为常见的指令。根据数据在单片 机内部存储区域的不同,我们需要利用不同的寻址方式来读取或者写入数据。题目要求将数据存放到 片内RAM的低128B中,因此我们可以利用直接寻址的方式来完成操作。
50H 50H 60H 60H
在使用Ri作为寄存器时,采用寄存器间接寻址额可以访问片内RAM的256个单元地址以及片外 RAM的低256位地址。采用DPTR作为寄存器时可以采用寄存器间接寻址访问片外RAM的64KB地址。 需要注意的是寄存器间接寻址不能用于寻址特殊功能寄存器SFR,例如采用下面的程序无法访问特 殊功能寄存器SP。 MOV R0,#80H; MOV A,@R0;
在计算机中,指令具有功能,时间以及空间三种属性: 功能属性指的是每条指令都对应一个特定的操作功能 时间属性指的每条指令的执行都需要消耗一定的时间 空间属性指的是每条指令都需要在存储器中占据一定的存储空间。 在指令的使用过程中,最为重要的指令的功能属性,使用者只有熟悉了解指令的功能才能正 确使用指令表达意愿。而指令的时间以及空间属性在一些场合中也需要被使用。例如我们在编制一 段延时程序时需要掌握指令的时间属性,而在编制相对转移程序时需要掌握指令的空间属性。
51单片机原理及程序设计
3.2 MCS-51单片机汇编指令概述
3.2.1 指令与指令系统 3.2.2 51单片机汇编指令 3.2.3 51汇编指令格式及常用符号解释
51单片机原理及程序设计
3.2.1 指令与指令系统
指令是使计算机内部执行相应动作的一种操作,是提供给用户编程使用的一种命令。指令系 统指的是计算机能够执行的全部操作对应指令的集合,包含了该计算机能够执行的所有指令。用户 可以从两个角度去看待计算机指令系统所代表的意义。 从计算机的角度而言,计算机的指令系统反映了计算机能够实现的操作功能,即其能够实现的 操作都需要通过指令系统所包含的指令体现出来。 从使用者的角度而言,计算机的指令系统为计算机使用者提供了软件基础,即使用者可以通过 指令系统命令计算机完成其所能完成的操作。
30H A 50H
50H
采用直接寻址方式可以访问片内RAM的低128单元地址,同时可以访问高128单元中的特殊功 能寄存器SFR地址。由于寄存器间接寻址不能访问SFR,因此采用直接寻址是访问特殊功能寄存器 SFR的唯一方法。但是对于52系列单片机,其内部含有256B的数据存储器,片内RAM的高128单元 地址与SFR地址重叠。采用直接寻址方法不能访问片内RAM的高128单元的地址,只能采用寄存器 间接寻址的方式对此区域进行访问。 在使用直接寻址方式访问特殊功能寄存器SP时有如下两种方式,两种方式都属于直接寻址。 但是在实际使用中推荐使用后一种方式,因为相较于特殊功能寄存器的地址,其代号更易于读写记 忆。 MOV A,81H; A←(81H) MOV A,SP; A←SP 51单片机原理及程序设计
A,R0;
其中第一条指令代表将寄存器A中的内容加去1,例如原来寄存器A中内容为30H,则执行该指 令后A中内容变为31H。第二条指令代表将工作寄存器R0中的内容赋值给寄存器A。例如原来寄存 器中A的内容为30H,R0中的内容为50H,则执行该指令后A中的内容变为50H。
51单片机原理及程序设计
3.3.2 寄存器间接寻址
51单片机原理及程序设计
3.3七种寻址方式
3.3.1 寄存器寻址 3.3.2 寄存器间接寻址 3.3.3 立即寻址
3.3.4 直接寻址
3.3.5 变址寻址 3.3.6 相对寻址 3.3.7 位寻址
51单片机原理及程序设计
3.3.1 寄存器寻址
3.3.1 寄存器寻址 寄存器寻址指的是在特定的寄存器中存放或者读取操作数的操作。这些寄存器包含有累加器A, 寄存器B以及工作寄存器R0~R7。在寄存器寻址指令中直接用寄存器号来替代寄存器中内容,如下 所示两个指令均为寄存器寻址。 INC A; MOV
51单片机原理及程序设计
3.2.3 51汇编指令格式及常用符号解释
一条指令通常由操作码以及操作数两个部分组成。其中操作码部分比较简单,代表了执行该 指令时需要进行何种操作。该指令是进行加法操作或者减法操作,转移操作或者置位操作都由操作 码决定。操作数部分代表了本次指令需要操作的数据本身或者该数据存放的地址。
MOV MOV MOV ADD MOV 20H,#20H 30H,#30H A,20H A,30H 40H,A ;将 20H 的数据送入片内 RAM 地址 20H 中 ;将 30H 的数据送入片内 RAM 地址 30H 中 ;将 20H 中的数送入累加器 A 中 ;将 30H 中的数与累加器 A 中的数相加赋值给 A ;将累加器 A 中的数据送入片内 RAM 地址 40H 中。
00H
如果原来A中的数据为30H,R0中存的数为50H,片内 RAM 50H存的数据为60H,则该指令的作用在于将片内 RAM地址50H中的数据60H取出赋值给A,即A中的内容 变为60H。在寄存器间接寻址中寄存器的@前缀不能丢 失,否则指令变为寄存器寻址,而执行指令后A中的内 容变为50H。
R0 A
51单片机原理及程序设计
3.3.3 立即寻址
3.3.3 立即寻址 立即寻址的特点是操作码后面紧接着需要寻址的操作数。该操作数与操作码一起位于程序存 储器中,不需要经过别的途径去寻找。立即寻址中的操作数称之为立即数,这个数可以是8位2进制 数,用#data表示,也可以是16位立即数,用#data16表示。如下所示两个指令均为立即寻址方式: MOV A,#30H MOV DPTR,#1486H ;A←30H ;DPTR←1486H
2)根据占据的空间不同 可以分为单字节指令(49条)、双字节指令(46条)以及三字节指令(16条)三大类。 3)按照指令执行时间不同 可以分为单机器周期指令(64条)、双机器周期指令(45条)以及四机器周期指令(2条)三 类。
51单片机原理及程序设计
3.2.3 51汇编指令格式及常用符号解释
常用符号如下所示: 1)Rn:代表当前选定的寄存器区中的 8 个工作寄存器R0~R7,即n=0~7。 2)Ri:代表当前选定的寄存器区中的 2 个寄存器R0、 R1,以@Ri的形式出现用于寄存器间接寻 址。 3)Direct:代表8位直接寻址的地址,8 位内部RAM单元的地址,可以是一个内部数据区 RAM单 元(00H~7FH)或特殊功能寄存器地址。 4)#data:指令中的 8位立即数。 5)#data16:指令中的 16 位立即数。 6)Addr16:16 位的目的地址,用于LJMP,LCALL指令,可指向 64 KB程序存储器地址空间。 7)Addr11:11位的目的地址,用于AJMP,ACALL指令。目的地址必须与下一条指令的第一个 字节在同一个 2 KB程序存储器地址空间之内。 8)rel:8 位带符号的偏移量字节,用于SJMP和所有条件转移指令中。 偏移量相对于下一条指令 的第一个字节计算,在-128~+127 范围内取值。 9)bit:内部数据RAM或特殊功能寄存器中的可直接寻址位。 10)(X):X单元中的内容。 11)((X)):代表以X单元的内容为地址的存储器单元内容 12)/ :位操作数的前缀,表示对该位取反。 13)←:箭头左边的内容被箭头右边的内容所代替。
第3讲 单片机汇编指令系统
《51单片机原理及程序设计》 王欣飞、谢龙汉、谢锋然编著 清华大学出版社
51单片机原理及程序设计
第3讲 单片机汇编指令系统
3.1 实例模仿—数据运算与转移 3.2 MCS-51单片机汇编指令概述 3.3七种寻址方式 3.4 51单片机指令系统 3.5 实例操作—BCD加减法实现 3.6 实例练习—条件转移指令的使用
51单片机原理及程序设计
3.2.2 51单片机汇编指令
计算机编程语言是计算机指令的表达形式。在计算机中包含有三种形式的计算机语言:机器 语言、汇编语言以及高级语言。下面分别对这三种语言进行简单介绍。 1.机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算 机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快 等特点。但是机器语言具有不便于识别、记忆、理解以及使用的特性,因此现在在编程中一般很少 直接使用机器语言进行编程。 2.汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的 英文缩写词、字母和数字等符号来取代指令代码(如用ADD表示运算符号“+”的机器代码),于是 就产生了汇编语言。汇编语言是一种用助记符表示的仍然面向机器的计算机语言。 汇编语言并不能被计算机直接识别以及执行,必须执行一个中间环节把它翻译成机器语言程 序,这个中间过程称为汇编。利用汇编语言编制程序具有占用内存空间小,执行速度快的特点,但 是相较于高级语言,其使用方法仍然较为繁琐,通用性也较差。 3.高级语言 与机器语言以及汇编语言不同,高级语言是面向用户的编程语言,具有语意确定、规则明确、 自然直观和通用易学的特点。高级语言需要经过编译或者解释之后才能转为二进制代码为计算机所 识别。目前在微型计算机中编程中的多数程序是由高级语言编制而成的,常见的计算机高级语言包 括BASIC,PASCAL,C,VC,VB等。 51单片机原理及程序设计
3.2.2 51单片机汇编指令
在单片机的编程中汇编语言是最为常见的编程语言。通过汇编语言编制的单片机程序具有执 行速度快,效率高,占用资源少的优点。对于不同单片机,其汇编指令系统包含的指令条数并不相 同。51单片机汇编指令系统共有111条指令,其中按照不同的划分方法可以分为不同的类别。
1)按照功能不同 可以将指令系统分为数据传送指令、算数运算指令、逻辑运算指令、移位指令,程序转移指 令、位操作指令等6大类。
3.3.4 直接寻址
3.3.5 变址寻址 变址寻址是在一个基址寄存器加变址寄存器的基础上进行间接寻址的操作。变址寻址具有以下几个 方面的特点:
1)基址寄存器为数据指针DPTR或者程序计数器PC, DPTR 在DPTR或者PC中应该预先存放有操作数的基地址
在51汇编指令格式中,操作数可以分为目的操作数以及源操作数两种,其中源操作数通常指 代指令操作的对象,而目的操作数通常用于存放操作的结果。汇编指令常见编程格式如下:
[标号:] 操作码助记符 [目的操作书],[源操作数];[注释] 在指令的学习中,我们需要借助一些符号来对指令的操作对象以及操作范围进行讲解。下面 将描述指令的一些符号以及约定意义加以说明。
51单片机原理及程序设计
3.1 实例模仿—数据运算与转移
【实例3-1】利用指令将20H以及30H分别送入单片机片内RAM中,存放地址分别为20H以及30H,同 时利用加法指令将两个数相加的结果送至40H地址中。 【思路分析】数据运算以及转移指令是MCS-51单片机汇编语言中最为常见的指令。根据数据在单片 机内部存储区域的不同,我们需要利用不同的寻址方式来读取或者写入数据。题目要求将数据存放到 片内RAM的低128B中,因此我们可以利用直接寻址的方式来完成操作。
50H 50H 60H 60H
在使用Ri作为寄存器时,采用寄存器间接寻址额可以访问片内RAM的256个单元地址以及片外 RAM的低256位地址。采用DPTR作为寄存器时可以采用寄存器间接寻址访问片外RAM的64KB地址。 需要注意的是寄存器间接寻址不能用于寻址特殊功能寄存器SFR,例如采用下面的程序无法访问特 殊功能寄存器SP。 MOV R0,#80H; MOV A,@R0;
在计算机中,指令具有功能,时间以及空间三种属性: 功能属性指的是每条指令都对应一个特定的操作功能 时间属性指的每条指令的执行都需要消耗一定的时间 空间属性指的是每条指令都需要在存储器中占据一定的存储空间。 在指令的使用过程中,最为重要的指令的功能属性,使用者只有熟悉了解指令的功能才能正 确使用指令表达意愿。而指令的时间以及空间属性在一些场合中也需要被使用。例如我们在编制一 段延时程序时需要掌握指令的时间属性,而在编制相对转移程序时需要掌握指令的空间属性。
51单片机原理及程序设计
3.2 MCS-51单片机汇编指令概述
3.2.1 指令与指令系统 3.2.2 51单片机汇编指令 3.2.3 51汇编指令格式及常用符号解释
51单片机原理及程序设计
3.2.1 指令与指令系统
指令是使计算机内部执行相应动作的一种操作,是提供给用户编程使用的一种命令。指令系 统指的是计算机能够执行的全部操作对应指令的集合,包含了该计算机能够执行的所有指令。用户 可以从两个角度去看待计算机指令系统所代表的意义。 从计算机的角度而言,计算机的指令系统反映了计算机能够实现的操作功能,即其能够实现的 操作都需要通过指令系统所包含的指令体现出来。 从使用者的角度而言,计算机的指令系统为计算机使用者提供了软件基础,即使用者可以通过 指令系统命令计算机完成其所能完成的操作。
30H A 50H
50H
采用直接寻址方式可以访问片内RAM的低128单元地址,同时可以访问高128单元中的特殊功 能寄存器SFR地址。由于寄存器间接寻址不能访问SFR,因此采用直接寻址是访问特殊功能寄存器 SFR的唯一方法。但是对于52系列单片机,其内部含有256B的数据存储器,片内RAM的高128单元 地址与SFR地址重叠。采用直接寻址方法不能访问片内RAM的高128单元的地址,只能采用寄存器 间接寻址的方式对此区域进行访问。 在使用直接寻址方式访问特殊功能寄存器SP时有如下两种方式,两种方式都属于直接寻址。 但是在实际使用中推荐使用后一种方式,因为相较于特殊功能寄存器的地址,其代号更易于读写记 忆。 MOV A,81H; A←(81H) MOV A,SP; A←SP 51单片机原理及程序设计
A,R0;
其中第一条指令代表将寄存器A中的内容加去1,例如原来寄存器A中内容为30H,则执行该指 令后A中内容变为31H。第二条指令代表将工作寄存器R0中的内容赋值给寄存器A。例如原来寄存 器中A的内容为30H,R0中的内容为50H,则执行该指令后A中的内容变为50H。
51单片机原理及程序设计
3.3.2 寄存器间接寻址
51单片机原理及程序设计
3.3七种寻址方式
3.3.1 寄存器寻址 3.3.2 寄存器间接寻址 3.3.3 立即寻址
3.3.4 直接寻址
3.3.5 变址寻址 3.3.6 相对寻址 3.3.7 位寻址
51单片机原理及程序设计
3.3.1 寄存器寻址
3.3.1 寄存器寻址 寄存器寻址指的是在特定的寄存器中存放或者读取操作数的操作。这些寄存器包含有累加器A, 寄存器B以及工作寄存器R0~R7。在寄存器寻址指令中直接用寄存器号来替代寄存器中内容,如下 所示两个指令均为寄存器寻址。 INC A; MOV
51单片机原理及程序设计
3.2.3 51汇编指令格式及常用符号解释
一条指令通常由操作码以及操作数两个部分组成。其中操作码部分比较简单,代表了执行该 指令时需要进行何种操作。该指令是进行加法操作或者减法操作,转移操作或者置位操作都由操作 码决定。操作数部分代表了本次指令需要操作的数据本身或者该数据存放的地址。
MOV MOV MOV ADD MOV 20H,#20H 30H,#30H A,20H A,30H 40H,A ;将 20H 的数据送入片内 RAM 地址 20H 中 ;将 30H 的数据送入片内 RAM 地址 30H 中 ;将 20H 中的数送入累加器 A 中 ;将 30H 中的数与累加器 A 中的数相加赋值给 A ;将累加器 A 中的数据送入片内 RAM 地址 40H 中。
00H
如果原来A中的数据为30H,R0中存的数为50H,片内 RAM 50H存的数据为60H,则该指令的作用在于将片内 RAM地址50H中的数据60H取出赋值给A,即A中的内容 变为60H。在寄存器间接寻址中寄存器的@前缀不能丢 失,否则指令变为寄存器寻址,而执行指令后A中的内 容变为50H。
R0 A
51单片机原理及程序设计
3.3.3 立即寻址
3.3.3 立即寻址 立即寻址的特点是操作码后面紧接着需要寻址的操作数。该操作数与操作码一起位于程序存 储器中,不需要经过别的途径去寻找。立即寻址中的操作数称之为立即数,这个数可以是8位2进制 数,用#data表示,也可以是16位立即数,用#data16表示。如下所示两个指令均为立即寻址方式: MOV A,#30H MOV DPTR,#1486H ;A←30H ;DPTR←1486H
2)根据占据的空间不同 可以分为单字节指令(49条)、双字节指令(46条)以及三字节指令(16条)三大类。 3)按照指令执行时间不同 可以分为单机器周期指令(64条)、双机器周期指令(45条)以及四机器周期指令(2条)三 类。
51单片机原理及程序设计
3.2.3 51汇编指令格式及常用符号解释
常用符号如下所示: 1)Rn:代表当前选定的寄存器区中的 8 个工作寄存器R0~R7,即n=0~7。 2)Ri:代表当前选定的寄存器区中的 2 个寄存器R0、 R1,以@Ri的形式出现用于寄存器间接寻 址。 3)Direct:代表8位直接寻址的地址,8 位内部RAM单元的地址,可以是一个内部数据区 RAM单 元(00H~7FH)或特殊功能寄存器地址。 4)#data:指令中的 8位立即数。 5)#data16:指令中的 16 位立即数。 6)Addr16:16 位的目的地址,用于LJMP,LCALL指令,可指向 64 KB程序存储器地址空间。 7)Addr11:11位的目的地址,用于AJMP,ACALL指令。目的地址必须与下一条指令的第一个 字节在同一个 2 KB程序存储器地址空间之内。 8)rel:8 位带符号的偏移量字节,用于SJMP和所有条件转移指令中。 偏移量相对于下一条指令 的第一个字节计算,在-128~+127 范围内取值。 9)bit:内部数据RAM或特殊功能寄存器中的可直接寻址位。 10)(X):X单元中的内容。 11)((X)):代表以X单元的内容为地址的存储器单元内容 12)/ :位操作数的前缀,表示对该位取反。 13)←:箭头左边的内容被箭头右边的内容所代替。