第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.

Slides:



Advertisements
Similar presentations
主讲人:刘利 交通大学网络控制课程系列 上海交通大学机电控制研究所 交通大学网络控制课程系列 考试课、专业基础课、必修课
Advertisements

第7章 AT89S51单片机的 串行口 1.
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
8051 指令.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第9章 串行扩展技术 (课时:6学时).
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
6.3 定时器/计数器的应用 初始化 初始化的内容如下:
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第七章 MCS-51系统扩展 一、程序存储器扩展
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
逻辑运算类指令 包括与、或、非、异或、清0及移位等共24条;一般不影响PSW中的标志位;助记符有:ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和CPL共9种。 一、逻辑与指令 ANL A,Rn ;A←(A)∧( Rn) ANL A,direct;A←(A)∧(direct)
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第七章 MCS-51并行口的扩展 MCS51单片机内部有4个并行口,当内部并行口不够用时可以外扩并行口芯片。可外扩的并行口芯片很多,分成2类:不可编程的并行口芯片(74LS3734和74LS245)和可编程的并行口芯片(8255)。 7.1 不可编程并行口芯片的扩展 7.2 可编程并行口芯片的扩展.
单片机原理及应用 ——基于Proteus与Keil C 哈工大出版社
4.A/D与D/A转换器 1).DAC0832与MCS-51接口
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第四章 指令系统及汇编语言程序设计.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
单片机系统设计 教师:朱华贵 2016年03月01日
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
2. MCS-51单片机的组成及结构分析 2.1 MCS-51单片机的内部结构及结构特点
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
第1章 微型计算机基础.
Presentation transcript:

第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红

主要内容 MCS-51单片机的寻址方式 MCS-51单片机的指令系统

3.1 指令及其表示方法 指令是完成一种特定操作的命令。具有以下功能: 指明执行什么性质和类型的操作 明确参加操作的数据或数据所在的地址 3.1 指令及其表示方法 指令是完成一种特定操作的命令。具有以下功能: 指明执行什么性质和类型的操作 明确参加操作的数据或数据所在的地址 指定操作结果存放的地址 指定下一条指令的地址

格式:指令由操作码和操作数两部分组成。 MCS-51指令格式有三种: 单字节指令:操作码 双字节指令:操作码 操作数 三字节指令:操作码 第一操作数,第二操作数 指令表示方法:机器码和助记符表示法。

3.2 MCS-51单片机的寻址方式 寻址: 对操作数的来源进行寻址; 对操作数的目的进行寻址; 对下条指令地址进行寻址。 寻址的中心任务是如何在寻址范围内灵活方便地找到所需的操作数或操作数的地址。自然,寻址方式越多,计算机的功能越强,灵活性越大。

MCS-51单片机有七种寻址方式。 寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 立即寻址方式 基址加变址的间接寻址方式 相对寻址方式 位寻址方式

3.2.1 寻址空间和符号注释 一、寻址空间 存储器的存储单元地址和位地址。 程序存储器:片内外统一编址,64K 3.2.1 寻址空间和符号注释 一、寻址空间 存储器的存储单元地址和位地址。 程序存储器:片内外统一编址,64K 片内数据存储器:工作寄存器、特殊功能寄存器 片外数据存储器 :64K 具有地址的位

二、符号注释 Rn : 当前工作寄存器R0~R7 Ri : 可作为地址指针的寄存器R0或R1 #data : 8位二进制立即数(#xxB,#xxH,#xx) #data16 : 16位二进制立即数 direct :8位片内RAM的直接地址 rel : 相对地址偏移量,一字节带符号数

addr11 :11位二进制数的目的地址 addr16 :16位二进制数的目的地址 Bit :可进行位寻址的位地址 (x) :直接寻址方式中,表示直接地址x单元中 的内容; 间接寻址方式中,表示由间接寄存器x所 指地址单元中的内容 :数据传送方向 @ :寄存器间接寻址符号

3.2.2 寻址方式——立即寻址 (1)立即寻址:指令中操作数就是直接参与操作的数,因此又称“立即数”。 例如: 3.2.2 寻址方式——立即寻址 (1)立即寻址:指令中操作数就是直接参与操作的数,因此又称“立即数”。 例如: MOV DPTR,#3456H;DPH←34H,DPL←56H  MOV   A,#45H ;A←45H 立即寻址主要用来对寄存器赋值。 立即数只能作为源操作数。

3.2.2 寻址方式——直接寻址 (2)直接寻址:指令中操作数的值是存放参与操作的数的字节地址。 3.2.2 寻址方式——直接寻址 (2)直接寻址:指令中操作数的值是存放参与操作的数的字节地址。 这种寻址方式使用的变量是direct,可访问的存储空间有: (只能对片内RAM)  特殊功能寄存器(只能用直接寻址方式) 内部数据存储器的低128字节

例如:指令 MOV A,45H 指令代码:E5 45

1.内部RAM的低128字节; 例如: MOV A,78H ;A←(78H) MOV 30H,40H ;(30H)←(40H) 2.特殊功能寄存器; 例如: MOV  DPH,A ;DPH←A:E5 83 MOV  83H,A ;83H←A :E5 83 可使用SFR的名字或地址

3.2.2 寻址方式——寄存器寻址 (3)寄存器寻址:   操作数存放在某一寄存器中,指令中指出相应的寄存器名。这种寻址方式可以对R0~R7、A、B、C(位)、DPTR进行操作。   寄存器寻址主要是对工作寄存器R0-R7进行操作,用指令操作码的低3位指明所使用的寄存器。   MOV A,R0;E8 (11101000)   MOV A,R1;E9 (11101001)   MOV A,R7;EF  (11101111)

例如:指令 MOV A,R3 指令代码:EB(11101011)

3.2.2 寻址方式——寄存器间接寻址 (4)寄存器间接寻址:寄存器中的内容不是操作数本身,而是操作数的地址。即操作数的地址是以寄存器中的内容间接给出的。  可用于寄存器间接寻址的寄存器:工作寄存器R0和R1、堆栈指针SP、数据指针DPTR 寻址空间: R0和R1寻址片内低128个字节或片外低256个字节; 堆栈指针SP寻址堆栈; 数据指针DPTR寻址片外64K数据存储器

例如:指令 MOV A,@R0 机器代码:1110 0110

适用的存储空间:  1.内部RAM,使用的变量为@R0、@R1、@SP; 例如:MOV @R0,76H ;   (R0)←(76H)      PUSH PSW ; SP←SP+1,(SP)←PSW

2.内部RAM的低半字节,使用的变量是 @R0、@R1;   例如: XCHD   A,@R1;

XCH 字节交换:A与内部RAM单元或SFR交换。例如 XCH A,R2 ;(A)(R2) XCHD 半字节交换:A与内部RAM单元进行低四位交换,只能用寄存器间址@Ri。 例如 XCHD A,@R1;(A)D0- D 3 ((R1))D0- D 3 SWAP A ;(A)D0- D 3 (A)D4- D 7

3.外部RAM(或I/O口),使用的变量是 @R0、@R1、@DPTR; 例如: MOVX @R0,A ;(R0)←A            MOVX A,@DPTR ;A←(DPTR)

3.2.2 寻址方式——变址寻址 (5)变址寻址:以程序计数器PC或数据指针DPTR作为基址寄存器,累加器A作为变址寄存器,操作的数的有效地址为: 有效地址=(基址寄存器)+A 这种寻址方式仅适用于程序存储器空间

例如:指令 MOVC A,@A+DPTR 机器代码:93   设累加器A=47H,DPTR=2000H,(2047H)=5CH,指令执行后,A=5CH

3.2.2 寻址方式——相对寻址 (6)相对寻址:寻找下一条要执行的指令的地址,仅用于相对转移指令中。相对寻址的有效地址为: D=PC+rel 式中:有效地址D称为目的地址 PC为当前执行的程序指令地址,称为源地址 rel是相对地址,它是目的地址与源地址的差值 偏移量:用机器码表示的相对地址

例如:指令 JC 18H 机器代码:40 16

3.2.2 寻址方式——位寻址 (7)位寻址:操作对象是位,指令中直接给出位地址。这种寻址方式也可以归并于直接寻址方式,但它提供的是直接的位地址。   例如:指令 SETB 3AH 机器代码:D2 3A 位地址3AH是片内RAM中27H单元的第2位,指令执行后,3AH这一位被置为1。若(27H)=00000000B,则指令执行后(27H)=00000100B

MCS-51指令系统的七种寻址方式

3.3 MCS-51单片机的指令系统 111条指令按功能分为五大类: 数据传送类指令 28条 算术运算类指令 24条 逻辑运算类指令 25条 数据传送类指令 28条 算术运算类指令 24条 逻辑运算类指令 25条 控制转移类指令 17条 位操作类指令 17条

111条指令中 单字节 49条 单周期 64条 双字节 45条 双周期 45条 三字节 17条 四周期 2条

3.3.1 数据传送类指令 功能:实现数据存储器之间的数据传送 操作对象:工作寄存器组、片内RAM、片外RAM、I/O口 寄存器 片内RAM 3.3.1 数据传送类指令 功能:实现数据存储器之间的数据传送 操作对象:工作寄存器组、片内RAM、片外RAM、I/O口 寄存器 片内RAM 立即数 累加器 片外数据 存储器 程序

一、片内RAM数据传送 (1)片内RAM之间 MOV direct1,direct2 ;(direct1)←(direct2) MOV @Ri,direct ;(Ri)←(direct) MOV direct,@Ri ;(direct)←(Ri) 例:20H:0FFH;R0:40H。 MOV 30H,40H ;(30H) ←(40H) MOV @R0,20H ;(R0)←(20H)=(40H)←(20H) MOV 30H,@R0 ;(30H)←(R0)=(30H)←(40H)

PUSH direct ;SP←SP+1,(SP)←(direct) POP direct ;(direct)←(SP),SP←SP-1 堆栈操作指令属于寄存器间接寻址方式,所用的指针是SP。 例:SP=30H,(50H)=80H PUSH 50H; SP ← SP+1,(31H) ← (50H) POP 40H; (40H) ←(31H),SP ←SP-1

(2)片内RAM与寄存器  MOV direct, Rn ;(direct)←Rn  MOV Rn,direct ;Rn←(direct)  例: R1← R0  MOV 4EH, R0 ;(4EH)←R0  MOV R1,4EH ;R1←(4EH)

(3)片内RAM与A  MOV A,direct ;A←(direct)  MOV A,@Ri ;A←(Ri)  MOV direct , A ; (direct) ← A  MOV @Ri , A ; (Ri) ← A

(4)立即数送片内RAM  MOV @Ri,#data ;((Ri))← data  MOV direct,#data ;(direct)← data  例:R1:30H  MOV @R1,#0FFH;(R1)← 0FFH(11111111B)  MOV 30H,#255; (30H)← 255

二、寄存器数据传送 (1)寄存器之间  同片内RAM与寄存器方式 MOV direct, Rn ;(direct)←Rn MOV Rn,direct ;Rn←(direct)

(2)寄存器与A  MOV A,Rn ;A←Rn  MOV Rn,A ;Rn←A

(3)立即数送寄存器  MOV Rn,#data ;Rn←data  MOV A,#data ;A← data  MOV DPTR,#data16 ;DPTR← data16   例: MOV DPTR,#2000H   数据指针DPTR由DPL和DPH组成,该指令将立即数高8位20H传送到DPH,将立即数低8位00H传送到DPL

目的操作数为A:  MOV A,Rn ;A←Rn  MOV A, direct; A←( direct )  MOV A,@Ri ;A←(Ri)  MOV A,#data ;A← data

目的操作数为寄存器Rn:  MOV Rn ,A ; Rn ←A  MOV Rn , direct; Rn ←( direct )  MOV Rn ,#data ; Rn ← data

目的操作数为直接地址:  MOV direct ,A; (direct )← A  MOV direct ,Rn ; (direct) ←Rn  MOV direct , direct; (direct) ←( direct )  MOV direct ,@Ri ; (direct )←(Ri)  MOV direct ,#data ; (direct) ← data

目的操作数为间接地址:  MOV @Ri ,A ; (Ri) ←A  MOV @Ri , direct; (Ri) ←( direct )  MOV @Ri ,#data ; (Ri) ← data

三 、片外数据存储器数据传送 只能用寄存器间接寻址方式; 只能与A之间进行数据传送; 地址指针可以是@R0、@R1,@DPTR  MOVX A,@Ri ;A←(Ri)  MOVX @Ri,A ;(Ri)←A  MOVX A,@DPTR ;A←(DPTR)  MOVX @DPTR,A ;(DPTR)←A  片外256字节范围 共有6条指令 片外64K字节范围

例1:把片内RAM 40H单元中的内容送到片外RAM 2000H单元中: MOV A , 40H ;A ←(40H) MOV DPTR,#2000H ;DPTR ←2000H MOVX @DPTR,A ;(2000H) ←A 例2:把2100H单元中的内容传送到2120H单元中: MOV DPTR,#2100H MOVX A,@DPTR MOV DPTR,#2120H MOVX @DPTR,A

四、程序存储器数据传送   从程序存储器中取数据应用于查取预置的数据表格,有两条查表指令:   MOVC A,@A+PC ;PC←PC+1,A← (A+PC)   所查的表格在以当前程序指针PC为基址寄存器的256个字节的程序存储器范围内。   MOVC A,@A+DPTR ;A← (A+DPTR)   所查的表格在以DPTR为基址寄存器的64K程序存储器范围内。

例:程序存储器中的数据表格 2000H:01H 2001H:23H 2002H:45H 2003H:67H 执行程序: 1000H: MOV A,#03H 1002H: MOV DPTR,#2000H 1005H: MOVC A,@A+DPTR

五、并行I/O数据传送 MCS-51 I/O口:可视为片内存储器单元 外部扩充I/O口:可视为片外数据存储器 例:  MOV A,P1 ;A ←P1  MOV P2,P1 ;P2 ←P1

六、交换指令 (1)XCH :源操作数与A的字节交换 XCH A,Rn ; A Rn XCH A,direct ; A (direct) XCH A,@Ri ; A (Ri)

(2)XCHD :源操作数与A的低半字节交换 XCHD A,@Ri ; (3) SWAP A:累加器A的高4位与低4位内容互换指令 SWAP A ; A.3~A.0←→ A.7~A.4 A

3.3.2 算术运算类指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令

一、加法指令 1.加法指令:ADD

2.带进位加法指令: ADDC

3.加1指令:INC

4.十进制数加法调整 DA A:   当要进行十进制数加法运算时,该指令用在加法指令(ADD、ADDC)之后,会对相加结果进行调整,确保结果也是BCD码。

二、减法指令 1.带借位的减法指令:SUBB 进行减法运算前必须对Cy清0。

2.减1指令:DEC

三、乘法指令 MUL AB A、B中为两个单字节无符号数,乘积为双字节数,高字节在B中,低字节在A中。当乘积大于255(OFFH)时,OV=1;任何情况下,Cy总是“0”。

四、除法指令 DIV AB 两个单字节无符号数除法,被除数送A,除数送B,执行后商在A中,余数在B中。 若除数为0,则指令执行后A、B的内容不定,且OV=1,任何情况下,Cy总是清“0”。

3.3.3 逻辑运算类指令 一、逻辑与指令 ANL 二、逻辑或指令 ORL 三、逻辑异或指令 XRL 四、累加器A清零指令 CLR A 3.3.3 逻辑运算类指令 一、逻辑与指令 ANL 二、逻辑或指令 ORL 三、逻辑异或指令 XRL 四、累加器A清零指令 CLR A 五、累加器A取反指令 CPL A 六、累加器A循环移位指令 RL A RR A RLC A RRC A

direct;direct ← ( direct )∧( direct ) #data;direct ← ( direct )∧data 一、逻辑与指令 ANL A , Rn ; A← A∧Rn direct; A← A∧( direct ) @Ri; A← A∧ (Ri) #data; A← A∧data ANL direct , direct;direct ← ( direct )∧( direct ) #data;direct ← ( direct )∧data 逻辑与指令常用于屏蔽某些位

direct;direct ← ( direct )∨(direct ) ORL direct , 二、逻辑或指令 ORL A , Rn ; A← A∨Rn direct; A← A∨ ( direct ) @Ri; A← A∨ (Ri) #data; A← A∨ data direct;direct ← ( direct )∨(direct ) ORL direct , #data;direct ← ( direct )∨ data 逻辑或指令常用于某些位的置位

direct;direct ← ( direct )∨( direct ) 三、逻辑异或指令 XRL A , Rn ; A← A∨Rn direct; A← A∨( direct ) @Ri; A← A∨ (Ri) #data; A← A∨ data XRL direct , direct;direct ← ( direct )∨( direct ) #data;direct ← ( direct )∨ data 逻辑异或指令常用于某些位的取反

以上指令可直接对接口进行操作: ANL P1,#01111100B ORL P1,#00110010B XRL P1,#31H

四、对A的逻辑运算指令 累加器A清零 CLR A ;A←0 累加器A 取反 CPL A ; A ← A

累加器A循环移位 A RL A ; RLC A ; RR A ; RRC A ; C A A C A

3.3.4 程序控制类指令 作用:通过改变程序计数器PC,改变程序执行的方向,或调用子程序,或从子程序返回 一、转移类指令 3.3.4 程序控制类指令 作用:通过改变程序计数器PC,改变程序执行的方向,或调用子程序,或从子程序返回 一、转移类指令 二、调用子程序及返回指令 三、空操作指令 NOP

无条件转移类指令 (1)短转移指令SJMP (Short Jump) SJMP rel ; (PC)←(PC)+rel  ;  -126<rel< +129  例:    0100H     80 rel        SJMP AAA          0102H     00             NOP                                …             0123H     00      AAA:NOP 跳转起始位置: (PC)+2 跳转范围:起始位置的-128~+127之间

无条件转移类指令 (2)绝对跳转指令AJMP (Absolute Jump) AJMP addr11 ;(PC)←(PC)+2, PC=PC15~11a10a9a8a7a6a5a4a3a2a1a0 跳转起始位置: (PC)+2 跳转范围:2K (3)长跳转LJMP (Long Jump) LJMP addr16 ;(PC)←addr15~0    跳转范围:64K

无条件转移类指令 (4)间接转移指令JMP (Jump to Address) JMP @A+DPTR ;(PC)←(A)+(DPTR) (A)是无符号数,指令执行后,不影响累加器和DPTR中的内容,也不影响任何标志。 本指令根据A中的内容可实现多个分支,故亦称散转指令。

无条件转移类指令 例:在某键盘处理程序中,假定命令键的读数(0AH、0BH、0CH、0DH中之一)在A中,利用散转指令便可根据A中的内容实现正确的转向。 KEYB: MOV DPTR,#JMPTBL CLR C SUBB A,#0AH RL A JMP @A+DPTR JMPTBL:AJMP AAA; AJMP BBB AJMP CCC AJMP DDD

无条件转移类指令 -128 JMP PC AJMP SJMP PC LJMP 64K PC+2 PC+2 DPTR PC+2 2K +127 JMP @A+DPTR PC PC+2 DPTR 256 AJMP PC+2 2K SJMP PC+2 -128 +127

无条件转移类指令 (5)子程序调用与返回(ACALL、LCALL、RET) 1.ACALL addr11 ; (PC)←(PC)+2, (SP)←(SP)+1, ((SP))←(PC7~0) (SP)←(SP)+1, ((SP))←(PC15~8) PC=PC15~11a10a9…a0  2.LCALL addr16 ; (PC)←(PC)+3 (SP)←(SP)+1, ((SP))←(PC7~0) (SP)←(SP)+1, ((SP))←(PC15~8) (PC)←addr16  

无条件转移类指令 3.RET ; ;(PC15~8)←((SP)),(SP)←(SP)-1 ;(PC7~0)←((SP)),(SP)←(SP)-1 4.RETI ;(PC15~8)←((SP)),(SP)←(SP)-1 ;(PC7~0)←((SP)),(SP)←(SP)-1 ;清除中断状态寄存器中相应中断标志位 

条件转移类指令 条件转移指令是指当满足某种条件时程序才转移,而条件不满足时程序继续执行下一条指令。条件主要指PSW中的标志。 8051单片机指令对标志的影响如下表

指令 标志 C OV AC ADD × CLR C ADDC CPL C SUBB ANL C,bit MUL ANL C,/bit DIV ORL C,bit DA ORL C,/bit RRC MOV C,bit RLC CJNE SETB C 1

条件转移类指令 一、根据进位标志: (1)JC rel ;当C=1时转移,(PC)←(PC)+2,(PC)←(PC)+rel (2)JNC rel ;当C=0时转移,(PC)←(PC)+2,(PC)←(PC)+rel 二、根据零标志: (1)JZ rel ;当(A)=0时转移,(PC)←(PC)+2,(PC)←(PC)+rel (2)JNZ rel ;当(A)≠0时转移,(PC)←(PC)+2,(PC)←(PC)+rel

条件转移类指令 三、比较不相等,则转移: CJNE A,#data,rel; CJNE A,direct,rel; CJNE @Ri,#data,rel; CJNE Rn,#data,rel; 3字节指令,当第一操作数=第二操作数时不转,(PC)←(PC)+3,否则转移,(PC)←(PC)+3+rel,本指令还影响Cy,当第一操作数≥第二操作数时,Cy=0,因此可实现程序的三分支。

A = B吗? 出口 Y N A > B吗? 入口 1 2 3

条件转移类指令 例:   CJNE A,30H,NEQ ;(A)≠(30H),转NEQ EQ: ;(A)=(30H) NEQ: JC LITTER ;(A)<(30H),转LITTER LITTER: ┋ ┋ ┋

条件转移类指令 四、减1不为0则转移: DJNZ Rn,rel ;(PC)←(PC)+2,(Rn)←(Rn)-1 当(Rn)=0时,不转移, 当(Rn)≠0时转移,(PC)←(PC)+rel DJNZ direct,rel (PC)←(PC)+3,(direct)←(direct)-1 当(direct)=0时,不转移, 当(direct)≠0时转移,(PC)←(PC)+rel

条件转移类指令 (2)根据对某一位测试确定是否转移 JB bit,rel ; (bit)=1 转移 ;即(PC)←(PC)+3,(PC)←(PC)+rel JNB bit,rel ; (bit)=0 转移 JBC bit,rel ;(bit)=1 转移,且(bit)←0

3.3.5 位操作类指令 MCS-51单片机中有一个位处理器,以进位位Cy作为位累加器,可完成以下操作: 1.位数据传送 2.位状态控制 3.3.5 位操作类指令 MCS-51单片机中有一个位处理器,以进位位Cy作为位累加器,可完成以下操作: 1.位数据传送 2.位状态控制 3.位逻辑操作 4.位条件转移指令 寻址空间: 1.片内RAM的20H~2FH共16个字节单元的每一位,位地址为00H~7FH 2.SFR中字节地址可以被8整除的专用寄存器中的位,位地址从80H~F7H,其中有少数位未被定义。

位地址的表达方式: 1.直接用位地址表示;20H 2.用点操作符号表示;(20H).1,PSW.4 3.寄存器的位定义名称;RS1,OV 4.用户定义;L1 BIT PSW.4

一、位数据传送指令 位数据传送必须经过位累加器Cy,而不能在可寻址位之间传送。  MOV C,bit ;(Cy)←(bit)  MOV bit,C ;(bit)←(Cy)

二、位状态控制指令 位状态控制有置1和清零两种,每种有两条指令,如下:  SETB C ;(Cy)←1  SETB bit ;(bit)←1  CLR C ;(Cy)←0  CLR bit ;(bit)←0

三、位逻辑操作指令 位逻辑操作有与、或、取反三种。与、或操作时,以位累加器Cy作为第一操作数,第二操作数为位地址,操作结果在Cy中。取反可以对每个位地址内容直接进行。 ANL C,bit ;(Cy)←(Cy)∧(bit) ANL C,/bit ;(Cy)←(Cy)∧(/bit) ORL C,bit ;(Cy)←(Cy)∨(bit) ORL C,/bit ;(Cy)←(Cy)∨(/bit) CPL C ;(Cy)←(/Cy) CPL bit ;(bit)←(/bit)

指令练习 1.20H:50H; MOV A,#10; A:10,(0AH) MOV R0,#20H; R0:20H MOV 30H,@R0; 30H:50H ADD A,30H; A:5AH;30H:50H MOV DPTR,#2000H; DPTR:2000H MOVX @DPTR,A; 2000H:5AH

指令练习 MOV SP,#30H; SP:30H PUSH ACC; SP=31H;31H:5AH PUSH DPL; SP=32H;32H:00H PUSH DPH; SP=33H;33H:20H 2.MCS-51单片机是通过哪些方法将程序存储器和数据存储器严格分开的?

指令练习 3.若要完成以下的数据传送,应如何用MCS-51指令来实现? 1)R7内容传送到R4 2)外部RAM 20H单元内容送R0 3)ROM 2000H单元内容送R2 4)外部RAM 0456H的内容送外部RAM 0078H单元。

指令练习 4.设R0的内容为32H,A的内容为48H,内部RAM 32H内容的80H,40H内容为08H,请指出在执行下列程序段后各单元内容的变化。 MOV A,@R0 MOV @ R0,40H MOV 40H,A MOV R0,#40H MOV @ R0,A

指令练习 5.试编一程序将内部RAM 30H~3FH单元数据传送到外部RAM首址为0F00H的单元中去。 MOV R0,#30H; MOV DPTR,#0F00H MOV R1,#10H LOOP:MOV A,@R0; MOVX @DPTR,A; INC R0; INC DPTR; DJNZ R1,LOOP;

指令练习 6.有两块数据分别在内部RAM 20H~29H、30H~39H,现将两块数据对换,试编程。 MOV R0,#20H; MOV R1,#30H; MOV R2,#10; LOOP: MOV A,@R0; XCH A,@R1; XCH A,@R0; INC R0; INC R1; DJNZ R2,LOOP

指令练习 7.阅读程序写出结果 MOV 21H,#5AH ; 21H:5AH MOV R0,#21H; R0:21H MOV R1,#2FH ; R1:2FH MOV A,@R0 ; A:5AH(01011010B) CPL A ; A:0A5H(10100101B) MOV @R1,A; 2FH:0A5H INC R0 ; R0:22H RL A; A:4BH(01001011B) MOV @R0,A; 22H:4BH SETB ACC.2 ; A: 4FH(01001111B )

指令练习 8.下述程序执行后,SP、A、B内容? ORG 2000H MOV SP,#40H MOV A,#30H LCALL SUBR ADD A,#10H MOV B,A L1: SJMP L1 SUBR: MOV DPTR,#200AH PUSH DPL PUSH DPH RET

Question! (1)片内RAM与寄存器 MOV direct, Rn ;(direct)←Rn MOV Rn,direct ;Rn←(direct) 例: R1← R0 MOV 4EH, R0 ;(4EH)←R0 MOV R1,4EH ;R1←(4EH) (4)立即数送片内RAM MOV @Ri,#data ;((Ri))← data MOV direct,#data ;(direct)← data 例:R1:30H MOV @R1,#0FFH;(R1)← 0FFH(11111111B) MOV 30H,#255; (30H)← 255