单片机第三章分析
第三章 MCS-51单片机的寻址方式和指令系统

由此可把数据传送指令分成三部分
(一)内部数据传送(通用传送指令)
1.以A为目的操作数
MOV A,Rn MOV A,@Ri ;A← (Rn) ;A←((Ri))
双字节
11101rrr 1110011i
MOV A,direct ;A←(direct) 11100101 direct
MOV A,#data ;A←#data 例: MOV A,@R1 若(R1)=20H,(20H)=62H 结果:(A)=62H 11100100 data
指令MOVC A,@A+DPTR;执 行示意图
结果:(ACC)=64H
六、相对寻址
以当前PC的内容为基准,加上指令给出的 偏移量(rel)形成新的PC值(转移地址) 的寻址方式。
转移地址=目的地址 =当前(PC)+rel
目的地址=PC当前值十rel 目的地址=转移指令的PC值+2(或3)十rel 目的地址=转移指令地址+转移指令字节数+rel
单周期:64 双周期:45 四周期:2
若fosc=12MHz, 大多指令执行 仅1μs
按照指令的功能分5大类
一、数据传送类指令(29条) 二、算术运算类指令(24条) 三、逻辑操作类指令(24条) 四、控制转移类指令(17条) 五、位操作类指令 (17条)
在描述指令系统的功能时,常用符号介绍:
@——间址符号,如@Ri,@DPTR 13. / ——位操作数的前缀,表示对该位操作 数取反,如/bit。 14. (×)——由×寻址的单元中的内容。 15. ((X))——由X的内容作为地址的存 储单元的内容。 16. ← ——箭头右边的内容取代箭头左边的 内容。
12.
一、数据传送类指令(29条)
单片机 第三章课件

第六讲课题:第三章MCS-51指令系统一教学目的:了解指令系统概述、熟练掌握数据传送指令教学难点、重点:指令的用法作业:实验预习I、课程复习、引入单片机硬件方面的内容告一段落,以下开始学习指令系统II、本课内容第三章MCS-51指令系统3.1概述●计算机能直接识别的只能是由0和1编码组成的指令,这种编码称为机器码或称为机器语言指令●由机器码编制的计算机能识别和执行的程序称为目标程序。
●每一条指令包含两个基本部分:操作码和操作数。
操作码表明指令要执行的操作性质;操作数说明参与操作的数据或数据所存放的地址。
●MCS-51机器语言指令有单字节指令,双字节指令和三字节指令三种格式1.单字节指令单字节指令格式由8位二进制编码表示,有两种形式:(1)8位编码全表示操作码。
例:NOP(2)8位编码中包含操作码和寄存器编码,例如:MOV A ,Rn 11101xxx xxx=0~72.双字节指令MOV A, # DATA 74H DATA 三字节指令三字节指令格式中第一个字节为操作码,其后两个字节为操作数。
例如:MOV direct, #DATA 75H direct DATA一条汇编语言指令中最多包含 4 个区段, 如下所示:[标号:]操作码助记符[操作数][,操作数][;注释]例:START: MOV A, #0F0H ;将F0H赋值给A寄存器4 个区段之间要用分隔符分开:标号与操作码之间用“:”隔开,操作码与操作数之间用空格隔开,操作数与注释之间用“;”隔开, 如果操作数有两个以上,则在操作数之间要用逗号“,”隔开(乘法指令和除法指令除外)。
注意:所有标点、空格都不能是中文标点!::;;,,3.2 寻址方式●有操作数的指令中,操作数可能在指令、寄存器、存储器、I/O接口中●地址:寄存器,存储器和I/O接口进行的编号寄存器一般可以用寄存器名表达I/O接口和程序存储器以及外部数据存储器用16位地址表达内部RAM用8位地址表达●指令中所规定的寻找操作地址的方式称为寻址方式。
第3章 STC15F2K60S2单片机的基本结构

D5 F0
D4 D3 D2 RS1 RS0 OV
D1 F1
D0 P
AC(PSW.6):辅助进位标志位 当执行加/减法指令时,如果低四位数向高 四位数产生进/借位,则AC置“1”,否则清 零。
10:15:52
11/109
位号 D7 D6 符号 CY AC
D5 F0
D4 D3 D2 RS1 RS0 OV
10:15:52
12/109
位号 D7 D6 符号 CY AC
D5 F0
D4 D3 D2 RS1 RS0 OV
D1 F1
D0 P
ቤተ መጻሕፍቲ ባይዱ
RS1,RS0(PSW.4~PSW.3):工作寄存 器组选择控制位,其详细介绍见后续内容。 OV(PSW.2):溢出标志位。指示运算过 程中是否发生了溢出,在执行指令过程中 自动形成。
10:15:52
3/109
以目前市场上常见的8051内核单片机STC15F2K60S2为例, 说明单片机的内部结构。STC12C5A60S2单片机主要集成 了以下资源:
增强型8051内核,单时钟机器周期,速度比传统8051内核单片机 快8~12倍 60KB Flash程序存储器;1KB数据Flash;2048字节的SRAM 3个16位可自动重装载的定时/计数器(T0、T1、T2) 可编程时钟输出功能 至多42根I/O口线 2个全双工异步串行口(UART) 1个高速同步通信端口(SPI) 8通道10位ADC 3通道PWM/可编程计数器阵列/捕获/比较单元 内部高可靠上电复位电路和硬件看门狗 内部集成高精度R/C时钟,常温工作时,可以省去外部晶振电路。
10:15:52
15/109
(2)控制器 控制器是CPU的大脑中枢,包括定时控 制逻辑、指令寄存器、译码器、地址指针 DPTR 及 程 序 计 数 器 PC 、 堆 栈 指 针 SP 、 RAM地址寄存器、16位地址缓冲器等。
第三章MCS51系列单片机指令系统及汇编语言程序设计

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章 51单片机指令系统

3.1.3 堆栈操作指令
(1)入栈指令:
PUSH direct; SP ← SP+1, (SP) ← (direct)
入栈操作:栈指针SP+1指向栈顶的上 一个空单元,将直接地址direct寻址的单元 内容压入当前SP所指示的堆栈单元中。 (本操作不影响标志位)
例3-3 在中断响应时,SP=09H,数据 指针DPTR的内容为0123H。执行下列指令 后:
MOV @Ri , A ; (Ri)←A MOV @Ri , direct ; (Ri)←(direct) MOV @Ri , data ; (Ri)←#data 上述指令将累加器A,直接地址单元内 容或立即数送到Ri间接寻址单元中。由于内 容较多,下面需要说明:
累加器A是个使用最多的寄存器,MCS-51单 片机以A为中心体系结构。绝大部分指令均需通 过A送到ALU进行运算,结果存于A中,有些指令 仅在A中进行。 直接地址direct ,8位直接地址可寻址0~255个 单元。对于8051则直接寻址内部RAM0~127地址 空间的单元及128~255地址空间的特殊功能寄存 器。这里需注意128~255地址空间很多单元开始 时无定义,对无定义单元进行读/写,则读数不定, 欲写入的数将丢失。 间接寻址@Ri,@间接寻址的符号,是以Ri 的内容作为地址进行寻址,亦即Ri的内容不是操 作数,而是地址。此地址所对应的单元内容才是 所要找的操作数。间接寻址的寻址范围与直接寻 址相同(0~255)。直接寻址单元在编程时就已 明确,而间接寻址单元是在程序运行中明确。
[物理]单片机3第三章寻址方式
![[物理]单片机3第三章寻址方式](https://img.taocdn.com/s3/m/b2ca773355270722192ef7f1.png)
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR
第3章MCS-51单片机的内部资源及应用

MOV P0, A ANL P0, #data ORL P0, A
(2)读端口数据方式: CPU读入的这个数据并非端口引脚线 上的数据。读端口数据可以直接读端口。例如,下面的指 令均可以从P1口输入数据,这是锁存器上的数据。
2.P2口
P2口常用做外部存储器的高8位地址 口。当不用做地址口时,P2口也可作为 通用I/O口,这时它也是一个准双向I/O 口。不必外接上拉电阻就可以驱动任何 MOS驱动电路,且只能驱动4个TTL输 入。P2口的位结构如右图所示。
3.P1口
P1口常用做通用I/O口,它也是一 个标准的准双向I/O口,不必外接上拉 电阻就可以驱动任何MOS驱动电路, 且只能驱动4个TTL输入。P1口的位结 构如右图所示。
制。
(3)中断允许控制寄存器IE (0A8H)
EA
ES ET1 EX1 ET0 EX0
(3)中断允许控制寄存器IE (0A8H)
中断与子程序的最主要区别:子程序是预先安排好的,中断 是随机发生的。
中断涉及的几个环节:中断源、 中断申请、开放中断、保护 现场、中断服务、恢复现场、中断返回。
2. 中断源
中断源是指引起中断的设备或事件,或发出中断请求的源头。
3. 中断的分类
中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。 可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。 非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。 软件中断则是指通过相应的中断指令使CPU响应中断。
1.I/O口直接用于输入/输出
在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看 做状态口,这是由用户决定的。
第三章 单片机的指令系统

MOV @Rj, #data MOV direct, #data MOV DPTR, #data
(EX2)
数据传送指令(四) 第四类——片外数据存储器访问指令
可访问片外RAM的0~FFH地址共256个单元:
MOVX
MOVX
A,
@Ri,
@Ri
A
; i = 0, 1
; i = 0, 1
可访问片外RAM的整个空间0~FFFFH地址的单元: MOVX MOVX A, @DPTR A
@DPTR,
(EX3)
数据传送指令(五)
第五类——程序存储器访问指令(查表指令)
MOVC
MOVC
A, @A+DPTR
A, @A+PC
(INDXADDRESS.ASM)
数据传送指令(六)
第六类——数据交换指令
XCH
XCH XCH
A,
A, A,
Ri
@Rj direct
;i =0~7
; j = 0 ,1
第三章 指令系统(一)
一、单片机的编程语言
⑴机器语言 以二进制代码形式表示指令、程序
⑵汇编语言 用助记符表示操作码,字符表示操作数的指令。
⑶高级语言 面向过程的语言,与硬件无关,如BASIC、C等。
⑷汇编语言和高级语言的结合 (5)学习汇编语言的意义 ①开发实时性强的系统时,直接应用汇编语言或在C中嵌入 汇编语言进行开发; ②通过汇编语言学习,更好掌握单片机的硬件结构,为应用 C语言编制高效率的单片机程序打好基础。
51单片机的最小系统
AT89C51
30pF
+5V
12M 30pF 2.2K
R1
17 16
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1900H。程序最后转到1900H继
单片续机第执三章行分析。
二.条件转移指令 本小类共有8条。它们都在满足条件的情形下
…
…
K
间。
B
0000 1111 1111 1111B
单片机第三章分析
2.长转移(64KB地址内)指令 LJMP addr16
三字节指令。机器码的第一字节02H;第二字 节为地址的高8位;第三字节为地址的低8位。 指令的操作表达式为:
(PC)(PC)+3 (PC) addr16
单片机第三章分析
3.相对短转移(-128~+127B地址内)指令
(页面地址),低8位是页内地址。 • 同一页的各单元页数相同,页内地址从0排到255。
单片机第三章分析
1.绝对转移(2KB地址内)指令
AJMP addr11
双字节指令。 机器码第一字 节的高半字节
a10 a9 a8 0 a7 a6 a5 a4
0 001 a3 a2 a1 a0
是页数乘以2,低半字节是1,第二字节是页 内地址。
单片机第三章分析
例如,已知累加器A的内容为0、2、4、6、8五个偶数 中的一个,又标号TAB的真实地址为1800H,试剖 析下列程序段的执行结果。
MOV DPTR,#TAB JMP @A+DPTR
当(A)=0时,程序转 到1800H处,执行 AJMP 100H
…
1800
TAB:
AJMP AJMP
100H 200H
表3-5给出地址高3位、页数、机器码第一字 节的高半字节的对应关系。
Байду номын сангаас
单片机第三章分析
MCS-51系列单片机可寻址64KB地址空间,而寻址 64KB地址空间需要16位地址码, 一个16位地址码如 果低11位不变,高5位可有25=32种变化。只给出地 址码低11位,实际对应了64KB地址空间中32个单元 的地址。也就是说转移到这32个地址中任意一个地 址的指令机器码是完全一样的。
在执行该指令后,程序将仍转回此该指令继续 执行,于是将不断地执行这一指令,计算机不 做其他工作,进入单等片机待第三状章分析态。
4.相对长转移(64KB地址内)指令 JMP @A+DPTR
单字节指令。机器码为73H。 指令的操作表达式为:
(PC) (A)+(DPTR)
指令的执行结果不会改变DPTR及A中原来的内 容。
别注意的“特殊 0000 0000 0000 0000B
2
情形”的图示。
…
…
K
AJMP指令与目 的地址不在同一
0000 0111 1111 1111B
E1
B
个2KB地址空间, 0000 1000 0000 0000B FF
AJMP指令转向下 0000 1000 0000 0001B
2
一个2KB地址空
第六节 程序转移指令
归入本类的操作指令有17条。程序转移类指令共 有16条,可进一步细分为无条件转移、条件转移、 调子等3小类。
位条件转移指令,留在本章第七节位操作类指令 中介绍。 另有一条NOP指令,机器码是00H,执行该指令时 机器不完成任何有意义的操作,故称为空操作指 令。 除NOP指令执行时间为1个机器周期外,所有程序 转移类指令的执行时单间片机第都三章是分析2个机器周期。
SJMP rel 双字节指令。机器码的第一字节为80H;第二
字节为相对地址值,也称相对偏移量。
指令的操作表达式为: (PC)(PC)+2 (PC) (PC)+相对地址
在用汇编语言编程时,指令中的相对地址rel 往往用要转移目的地址的标号(符号地址) 表示。在机器汇编时,可自动算出相对地址 值,而手工汇编时单片,机第则三章需分析要自己计算。
一.无条件转移指令
本小类共有4条。前2条是绝对转移指令,后2 条是相对转移指令。本小类指令执行的结果, 一定改变程序的顺序执行,发生转移。
页的概念:
• 将2KB的地址空间分成大小相等的8块,每块称之为 一页。
• 每一页包含256个地址连续的内存单元。 • 表示2K的地址空间要11位地址码,高3位是页数
AJMP 100H指明转移地址的低 11位同为理0,01当0(0A0)0分0别00=02B、; 而这4、时6的、P8C,值程是序18最02后H,以二进
AJMP 300H 制写转出到的1A高005H位、为1B00000H1、1B,合在
AJMP 400H 一起1C为00H、1D00H继续执
AJMP 500H 000行1 。1001 0000 0000B,即
单片机第三章分析
在编程手工汇编时,我们首先判断目的地址 与本指令下面一条指令是否在同一个2KB地 址空间,在同一个2KB地址空间,就可以使 用AJMP指令,将16位目的地址码的低11位作 为AJMP指令的操作数;若不在同一个2KB地 址空间,就要改用其他的转移指令。
单片机第三章分析
对教材中要求特
单片机第三章分析
MCS-51系列单片机可寻址64KB地址空间,因此可分 成32个2KB。这里在每个地址连续的2KB地址空间中, 所有单元地址码的高5位都是一样的,地址码低11位 从0排到2047。
指令的操作为:(PC)(PC)+2
(PC10~0) addr11 第一个操作表达式表示PC当前值为排在这条无条件 转移指令的下一条指令的地址,第二个操作表达式 表示PC值高5位不变,低11位按指令给出的11位地址 变更。所以转移的目的地址与本指令下面一条指令 在同一个2KB地址空间,而不是其他31个2KB地址空 间。
如指令 AJMP 11111111111B 的机器码是E1 FF。
转移的地址随16位地址中高5位的变化,可以是 07FFH(当高5位为00000B时)、 0FFFH(当高5位为 00001B时)、 17FFH(当高5位为00010B时) 、 1FFFH(当高5位为00011B时)……。然而指令在具 体执行时,只能是转移到这32个地址其中之一。究 竟是哪个地址,和这条指令所在的地址有关。
在用汇编语言编程时,用字符 $ 表示本条指令 的地址,这样当前PC值就等于 $+2。
∵ ($+2) + rel=目的地址
∴ rel =目的地址-$-2
注:当指令机器码为三字节时,当前PC值就等 于 $+3,计算rel就要减3。
例如,写出指令SJMP $的机器码,并剖析执行 该指令的结果。
rel=$-$-2=-2=FEH,机器码为80H、FEH。