单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计

Slides:



Advertisements
Similar presentations
第7章 AT89S51单片机的 串行口 1.
Advertisements

第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单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第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
第五讲:AT89C51单片机存储器结构 一、半导体存储器 二、存储器空间划分方法 三、数据存储器(RAM) 四、程序存储器(ROM)
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
第1章 微型计算机基础.
Presentation transcript:

单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计 2019/7/25

第3章 MCS-51指令系统 及汇编程序设计 目 录 3.1 基本概念 3.2 MCS-51单片机指令系统 3.3 汇编语言程序格式及伪指令 3.1 基本概念 3.2 MCS-51单片机指令系统 3.3 汇编语言程序格式及伪指令 3.4 汇编语言程序设计方法 2019/7/25

3.1 基本概念 主要内容 3.1.1 汇编语言格式 3.1.2 指令中常用符号 3.1.3 寻址方式 2019/7/25

3.1.1 汇编语言格式 一、指令和指令系统 指令:是计算机中CPU根据人的意图来执行某种操作的命令。 2019/7/25

程序:人们编写的、使计算机完成某项工作的指令序列,称为程序。 程序设计语言:编写程序的一整套规则、方法。 二、程序和程序设计语言 程序:人们编写的、使计算机完成某项工作的指令序列,称为程序。 程序设计语言:编写程序的一整套规则、方法。 程序设计语言分类:分为机器语言、汇编语言和高级语言等。 2019/7/25

机器语言:用二进制编码表示每条指令,是计算机能够直接识别和执行的语言。 目标程序:用机器语言编写的程序。 三、机器语言 机器语言:用二进制编码表示每条指令,是计算机能够直接识别和执行的语言。 目标程序:用机器语言编写的程序。 例如“13+25” ,在MCS-51中的机器码为 0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 2019/7/25

四、汇编语言:用助记符、符号、数字等表示指令的程序语言。 例如,上面的“13+25”的例子可写成: 汇编语言程序 机器语言代码 汇编语言程序 机器语言代码 MOV A,#0DH 74H 0DH ADD A,#19H 24H 19H 相对于机器语言来说,汇编语言容易理解和记忆。 汇编语言和机器语言都属于低级语言。 2019/7/25

方括号中的内容可以没有,即可以没有标号、操作数和注释,至少要有操作码。 五、MCS-51汇编语言指令格式 其一般格式如下: [标号:] 操作码 [目的操作数] [,源操作数] [;注释] 方括号中的内容可以没有,即可以没有标号、操作数和注释,至少要有操作码。 2019/7/25

例如: START: MOV A,#23H ;23H → A “START”为标号 “MOV”为操作码 “ A,#23H”为操作数 2019/7/25

Rn: n=0~7。当前选中的工作寄存器R0~R7。 Ri: i=0、1。当前选中的工作寄存器组中可作为地址指针的R0和R1。 3.1.2 指令中常用符号 Rn: n=0~7。当前选中的工作寄存器R0~R7。 Ri: i=0、1。当前选中的工作寄存器组中可作为地址指针的R0和R1。 #data: 8位立即数。 #data16:16位立即数。 direct: 8位片内RAM单元地址,含SFR。 addr16: 程序存储空间的16位地址 2019/7/25

rel:补码形式的8位地址偏移量。地址偏移量,在-128~+127。 bit:片内RAM或SFR中的直接寻址位地址 @:间址寄存器的前缀符号,表示间接寻址。 2019/7/25

((×)): 表示由×中指向的地址单元中的内容 ←、→: 指令操作流程,将内容送到箭头指向的地方 $ —— 当前指令地址 (×): 表示×中的内容 ((×)): 表示由×中指向的地址单元中的内容 ←、→: 指令操作流程,将内容送到箭头指向的地方 $ —— 当前指令地址 MOV A,#23H ;23H → A 2019/7/25

3.1.3 寻址方式 主要内容 1 立即数寻址 2 直接寻址 3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻址 3.1.3 寻址方式 主要内容 1 立即数寻址 2 直接寻址 3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻址 2019/7/25

寻址方式:就是指CPU寻找参与运算的(源)操作数的方式。(寻找操作数所在单元地址的方式。) 7种寻址方式:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。 2019/7/25

1 立即数寻址 立即数寻址也叫立即寻址、常数寻址。其操作数就在指令中,是指令的一部分,紧跟在操作码后面,用“#”符号作前缀,以区别地址。例如: MOV A,#2CH ;2CH → A 表示把2CH这个数送给累加器A 2019/7/25

立即数的低8位送给了DPL,高8位送给了DPH。 立即数也可以是16位的,如: MOV DPTR,#1234H 立即数的低8位送给了DPL,高8位送给了DPH。 2019/7/25

2 直接寻址 直接寻址:是指操作数存放在片内RAM中,指令中给出操作数的地址。例如: MOV A,30H ;(30H)→ A 2 直接寻址 直接寻址:是指操作数存放在片内RAM中,指令中给出操作数的地址。例如: MOV A,30H ;(30H)→ A 说明: (1)直接寻址方式可以访问片内RAM的低128字节和所有的特殊功能寄存器。 FFH 特殊功能 寄存器 80H 7FH 低128B RAM data区 2019/7/25 00H

对于特殊功能寄存器,既可以使用地址,也可以使用SFR名(P21)。例如: MOV A,P1 或 MOV A,90H 2019/7/25

(2)直接寻址不能够访问片内RAM的高128字节(增强型),高128字节只能够间接访问。 FFH FFH 高128B RAM idata区 特殊功能 寄存器 80H 80H 7FH 低128B RAM data区 00H 增强型单片机片内RAM 2019/7/25

3 寄存器寻址 寄存器寻址:就是由指令指出寄存器组R0~R7中某一个或寄存器A、B、DPTR的内容作为操作数。 2019/7/25

R0、R1…R7 7F 30 堆栈和 数据缓存 用户RAM区 2F 20 位地址为 00H~7FH (128位) 位 寻 址 区 1F 18 (第3组) 工 17 10 (第2组) 作 寄 0F 08 (第1组) 存 器 07 00 (第0组) 2019/7/25

对于工作寄存器组的操作,必须要考虑PSW中RS1、RS0的值(P22),确定当前使用的是哪一组寄存器以及它们的实际地址。 例如: MOV A,R7 ;(R7)→ A MOV 36H,A ;(A)→ 36H ADD A,R0 ;(A)+(R0)→ A 对于工作寄存器组的操作,必须要考虑PSW中RS1、RS0的值(P22),确定当前使用的是哪一组寄存器以及它们的实际地址。 2019/7/25

4 寄存器间接寻址 寄存器间接寻址:由指令指出某一寄存器的内容作为操作数地址的寻址方式。 4 寄存器间接寻址 寄存器间接寻址:由指令指出某一寄存器的内容作为操作数地址的寻址方式。 存放地址的寄存器称为间址寄存器,在指令中,在寄存器前面加前缀“@”表示。 MCS-51单片机规定,使用Ri(i=0、1,即指R0、R1)、SP和DPTR作间址寄存器。 寄存器间接寻址有以下几种情况。 2019/7/25

间接访问的范围:256字节(包括低128字节和高128字节),但不包括特殊功能寄存器。例如: 一、使用Ri间接访问片内RAM 间接访问的范围:256字节(包括低128字节和高128字节),但不包括特殊功能寄存器。例如: MOV A,@Ri ;((Ri))→ A MOV @Ri,A ;(A)→(Ri) ((Ri)):表示Ri中内容为地址的数据。 操作过程如图3-3所示。 2019/7/25

R0的内容为地址,将该地址中的内容传送给累加器A。 图3-3 间接寻址(MOV A,@R0)示意图 ② 62H A : → 98H — ① 98H R0 片内RAM R0的内容为地址,将该地址中的内容传送给累加器A。 2019/7/25

间接访问的范围:片外RAM的64KB全空间。其指令也是只有两条: MOVX A,@DPTR ;((DPTR))→ A 二、使用DPTR间接访问片外RAM 间接访问的范围:片外RAM的64KB全空间。其指令也是只有两条: MOVX A,@DPTR ;((DPTR))→ A MOVX @DPTR,A ;(A)→(DPTR) DPTR为16位地址。 2019/7/25

5 变址寻址(访问空间为ROM) 变址寻址:基址加变址的间接寻址。指令中给出存放基址和变址的寄存器。 基地址寄存器:DPTR或PC; 变址寄存器:累加器A。 也在地址寄存器前面加上前缀“@”。例如: MOVC A,@A+DPTR ;((A)+(DPTR))→ A 该指令的操作过程如图3-4所示。 DPTR内容与A中内容相加作为地址,将该地址中的内容传送给A。 2019/7/25

MOVC A,@A+DPTR ;((A)+(DPTR))→ A ROM : DPTR 03E2H + 0414H 38H A 32H 图3-4 变址寻址示意图 2019/7/25

若使用DPTR为基地址寄存器,寻址范围为64KB; 若使用PC为基地址寄存器,寻址空间在PC之后256字节范围内。 变址寻址的空间为程序存储器 寻址范围: 若使用DPTR为基地址寄存器,寻址范围为64KB; 若使用PC为基地址寄存器,寻址空间在PC之后256字节范围内。 2019/7/25

例:已知片外ROM中的0302H单元中有一个常数x,现欲把它取到累加器A中,请写出程序。 MOV DPTR , #0300H MOV A, #02H MOVC A, @A+DPTR 问:MOVC A, @0302H 是否对? 2019/7/25

相对寻址:是以当前程序计数器PC值为基地址,加上指令中给出的偏移量rel,得到目标位置的地址。即: 6 相对寻址(用于跳转指令) 相对寻址:是以当前程序计数器PC值为基地址,加上指令中给出的偏移量rel,得到目标位置的地址。即: 目标地址=PC+rel ∴ rel=目标地址-PC 偏移量rel为8位补码,其值为-128~+127。rel<0程序向回跳转;rel>0,程序向前跳转。 2019/7/25

(1)在实际编程中,不需要计算rel,rel由编译器自动计算; (2)当跳转范围超出了rel范围,编译器会提示,对程序做适当调整即可。 例如: SJMP 54H 说明: (1)在实际编程中,不需要计算rel,rel由编译器自动计算; (2)当跳转范围超出了rel范围,编译器会提示,对程序做适当调整即可。 2019/7/25

7 位寻址 位寻址:是指操作数是二进制位、位地址 位操作数地址范围:片内RAM中20H~2FH,SFR中可以按位寻址的位。 例如: 30 堆栈和 数据缓存 通 用 数 据 区 2F 20 位地址为 00H~7FH (128位) 位 寻 址 1F 18 R0、R1…R7 (第3组) 工 17 10 (第2组) 作 寄 0F 08 (第1组) 存 器 07 00 (第0组) 7 位寻址 位寻址:是指操作数是二进制位、位地址 位操作数地址范围:片内RAM中20H~2FH,SFR中可以按位寻址的位。 例如: SETB 3DH 2019/7/25

2)字节地址带位号。如20H.1,表示20H单元的第1位。 3)特殊功能寄存器名带位号。如P1.7,表示P1口的第7位。 位地址的3种表示方式: 1)直接位地址(00H~7FH)。如32H 2)字节地址带位号。如20H.1,表示20H单元的第1位。 3)特殊功能寄存器名带位号。如P1.7,表示P1口的第7位。 2019/7/25

寻址方式、寻址空间及范围 寻址方式 操作数及寻址空间范围 立即数寻址 随指令读入 直接寻址 片内RAM中,低128字节和SFR 寄存器寻址 使用的寄存器:R0~R7、A、B、DPTR 寄存器 间接寻址 片内RAM:用@Ri;范围256B,不含SFR 片外RAM:用@Ri、@DPTR;范围为64KB 变址寻址 用@A+PC、@A+DPTR;在ROM中; 范围分别为PC之后256B之内和64KB全空间 位寻址 在位寻址区域;RAM的20~2FH和SFR 相对寻址 操作数是相对地址;在ROM中;范围-128~127 2019/7/25

3.2 MCS-51单片机指令系统 主要内容 3.2.1 数据传送与交换指令 3.2.2 算术操作类指令 3.2.3 逻辑运算指令 3.2.1 数据传送与交换指令 3.2.2 算术操作类指令 3.2.3 逻辑运算指令 3.2.4 控制转移类指令 3.2.5 位操作指令 2019/7/25

指令概述(P266 附录C) MCS-51单片机指令系统有111条指令,分类如下。 1、按字节分类 单字节指令:49条; 双字节指令:45条 单字节指令:49条; 双字节指令:45条 三字节指令:17条 2、按执行时间分类 单周期指令:64条; 双周期指令:45条 四周期指令:2条(乘、除指令) 2019/7/25

MCS-51指令没有复杂的寻址方式,并且助记符只有42种。 3、按功能分类(分为5大类) 数据传送指令:29条 算术运算指令:24条 逻辑运算指令:24条 控制程序转移指令:17条 位操作指令:17条 MCS-51指令没有复杂的寻址方式,并且助记符只有42种。 2019/7/25

3.2.1 数据传送指令 数据传送是使用最频繁的一类指令。 所谓传送,就是把源地址单元的内容传送到目的地址单元中去,而源地址单元中的内容不变。 数据传送指令可以分为三组:普通传送指令、数据交换指令、堆栈操作指令。 2019/7/25

普通传送指令以助记符MOV为基础,分为: 片内数据存储器传送指令,用MOV 片外数据传送指令,用MOVX 程序存储器传送指令,用MOVC 一、普通传送指令 普通传送指令以助记符MOV为基础,分为: 片内数据存储器传送指令,用MOV 片外数据传送指令,用MOVX 程序存储器传送指令,用MOVC 2019/7/25

源操作数:可以是A、Rn、@Ri、 direct、#data 目的操作数:可以是A、Rn、@Ri、direct、DPTR 1、片内数据存储器传送指令MOV 格式: MOV 目的操作数,源操作数 源操作数:可以是A、Rn、@Ri、 direct、#data 目的操作数:可以是A、Rn、@Ri、direct、DPTR 以目的操作数的不同可以分为五个小组,共16条指令。 2019/7/25

MOV A,direct ;(direct)→A MOV A,@Ri ;((Ri))→A MOV A,#data ;data →A MOV A,Rn ;(Rn)→A MOV A,direct ;(direct)→A MOV A,@Ri ;((Ri))→A MOV A,#data ;data →A 工作寄存器Rn:R0~R7 Ri间接寻址寄存器:R0或R1 本组4条指令都影响PSW中的P标志位 指令字节数:1、2、1、2 2019/7/25

MOV Rn,direct ;(direct)→ Rn MOV Rn,#data ;data → Rn MOV Rn,A ;(A) → Rn MOV Rn,direct ;(direct)→ Rn MOV Rn,#data ;data → Rn 注意: MOV Rn, Rn(错误)( P32(2) ① ) 本组指令都不影响PSW中的标志位。 指令字节数:1、2、2 2019/7/25

MOV direct,A ;(A)→ direct MOV direct,Rn ;(Rn)→ direct MOV direct2,direct1 ;(direct1)→direct2 MOV direct,@Ri ;((Ri))→ direct MOV direct,#data ;data → direct 本组指令都不影响PSW中的标志位 指令字节数:2、2、3、2、3 2019/7/25

(4)以间接地址@Ri为目的操作数 MOV @Ri,A ;(A) → (Ri) MOV @Ri,direct ;(direct) →(Ri) MOV @Ri,#data ;data → (Ri) 本组指令都不影响PSW中的标志位。 2019/7/25

(5)以DPTR为目的操作数 MOV DPTR,#data16 ;dataH→DPH,dataL→DPL 2019/7/25

例 设片内RAM中(30H)=40H,(40H)=10H,分析以下程序执行后各单元及寄存器中的内容。 MOV R0,#30H ;30H → R0 MOV A,@R0 ;((R0)) → A MOV R1,A ;(A) → R1 MOV B,@R1 ;((R1)) → B MOV 10H,#20H ;20H → 10H 执行上述指令后的结果为: (R0)=30H, (R1)=(A)=40H, (B)=10H, (10H)=20H 2019/7/25

MOVX A,@DPTR ;((DPTR))→ A MOVX @DPTR,A ;A →(DPTR) 2、片外数据存储器传送指令MOVX(P31) MOVX A,@Ri ;((Ri))→ A MOVX @Ri,A ;A →(Ri) MOVX A,@DPTR ;((DPTR))→ A MOVX @DPTR,A ;A →(DPTR) 第1和第2条指令用于访问外部RAM的低地址区,地址范围:0000H-00FFH。 第3和第4条指令用于访问外部RAM的64K字节区,地址范围:0000H-FFFFH。 2019/7/25

(2)四条指令都是通过累加器A进行数据传输的 (P32 11 ②④⑧) 注:(1)四条指令都为寄存器间接寻址 (2)四条指令都是通过累加器A进行数据传输的 (P32 11 ②④⑧) 2019/7/25

例 设片外RAM空间(0203H)=6FH,分析执行下面指令后的结果。 MOV DPTR,#0203H MOVX A,@DPTR MOV 30H,A MOV A,#0FH MOVX @DPTR,A 执行结果为:(DPTR)=0203H, (30H)=6FH,(0203H)=(A)=0FH 2019/7/25

3、程序存储器传送指令MOVC(属于变址寻址)(P31) 该类指令又称为查表指令,经常用于查表。这类指令只有以下2条单字节指令。 MOVC A,@A+DPTR ;((A)+(DPTR))→ A MOVC A,@A+PC ;((A)+(PC))→ A 前者叫远程查表指令(64KB全空间),后者叫近程查表指令(PC处256B)。 (P32 11 ③) 2019/7/25

数据交换指令要求第一个操作数必须为累加器A。 共5条指令,分为字节交换和半字节交换两个类型。 二、数据交换指令 数据交换指令要求第一个操作数必须为累加器A。 共5条指令,分为字节交换和半字节交换两个类型。 2019/7/25

XCH A,direct ;(A)←→(direct) XCH A,@Ri ;(A)←→((Ri)) 1、字节交换指令(P31底) XCH A,Rn ;(A)←→(Rn) XCH A,direct ;(A)←→(direct) XCH A,@Ri ;(A)←→((Ri)) (P32 11 ⑥) XCH R1, R2 2、低半字节交换指令(低四位交换)(P32) XCHD A,@Ri ;(A0~3)←→((Ri)0~3) 3、A自身半字节交换指令(P36) SWAP A ;(A 0~3)←→(A4~7) 2019/7/25

例 设(R0)=30H,(30H)=4AH,(A)=28H,则分别执行“XCH A,R0”、 “XCH A,@R0” “XCHD A,@R0”、“SWAP A”后各单元的内容。 ;后(A)=30H,(R0)=28H 执行:XCH A,@R0 ;后(A)=4AH,(30H)=28H 执行:XCHD A,@R0 ;后(A)=2AH,(30H)=48H 执行:SWAP A ;后(A)=82H 2019/7/25

堆栈操作有进栈和出栈两条指令,常用于保存和恢复现场。 PUSH direct ;先(SP) +1 → SP, ;后(direct)→(SP) 设(30H)=x, 将x保存起来 MOV SP #70H PUSH 30H POP 30H 三、堆栈操作指令(P30 6,属于直接寻址) 堆栈操作有进栈和出栈两条指令,常用于保存和恢复现场。 PUSH direct ;先(SP) +1 → SP, ;后(direct)→(SP) POP direct ;先((SP))→ direct, ;后(SP) -1 → SP PUSH为进栈操作, POP为出栈操作。 2019/7/25

注意:(1)进栈与出栈必须成对使用;(2)先进栈的必须后出栈,后进栈的必须先出栈,否则会出现DPL与DPH内容互换。 PUSH DPH PUSH DPL POP DPL POP DPH 2019/7/25

习题( P32 11.(1) ) 下列指令是否错误 1.MOV A,#1000H ;A←1000H 2.MOVX A,1000H ;A←(1000H)片外RAM 3.MOVC A,1000H ;A←(1000H)片外ROM 4.MOVX 60H,A ;片外RAM(60H)←A 5.MOV R0,60H ;片内RAM:(61H)←(60H) MOV 61H,@R0 6. XCH R1,R2 ;R1←→R2 7. MOVX DPTR,#2000H ;DPTR←2000H 8. MOVX 60H,@DPTR ;片内RAM←片外RAM 2019/7/25

2019/7/25

3.2.2 算术运算指令 指令内容:包括加、减、乘、除、BCD码调整等指令,共有24条。 3.2.2 算术运算指令 指令内容:包括加、减、乘、除、BCD码调整等指令,共有24条。 对标志位的影响:结果会影响进位标志CY、半进位标志AC、溢出标志OV、奇偶标志位P,但加1和减1指令不影响这些标志位。 2019/7/25

PSW寄存器 Cy:进位标志位(位7有进位) AC:辅助进位标志位(位3有进位) F0: 供用户使用的标志位 OV:溢出标志位(位6有进位,位7没进位;或位7有进位,位6没进位) P:奇偶标志位 A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。 2019/7/25

ADD A,direct ;(A)+(direct)→A ADD A,@Ri ;(A)+((Ri))→A 一、加法指令 分为不带进位加法、带进位加法和加1指令 1、不带进位加法指令ADD ADD A,Rn ;(A)+(Rn)→A ADD A,direct ;(A)+(direct)→A ADD A,@Ri ;(A)+((Ri))→A ADD A,#data ;(A)+ data→A 这组指令影响标志位CY、AC、OV和P,溢出标志OV只对有符号运算有意义。 2019/7/25

例(A)=53H,(R0)=FCH,执行ADD A, R0 2019/7/25

溢出标志OV只影响有符号数的加法运算,若OV=0,则A中结果正确;若OV=1,则A中结果不正确,只能看成无符号数。 注意: 溢出标志OV只影响有符号数的加法运算,若OV=0,则A中结果正确;若OV=1,则A中结果不正确,只能看成无符号数。 2019/7/25

ADDC A,Rn ;(A)+(Rn)+ CY→A ADDC A,direct ;(A)+(direct)+CY→A ADDC A,@Ri ;(A)+((Ri))+CY→A ADDC A,#data ;(A)+data+CY→A 这组指令影响标志位CY、AC、OV和P,溢出标志OV只对有符号运算有意义。 注:Cy伪指令执行前的Cy值,不是指令执行过程中形成的Cy值。 2019/7/25

INC direct;(direct)+ 1 → direct INC @Ri ;((Ri))+ 1 →(Ri) INC A ;(A)+ 1 → A INC Rn ;(Rn)+ 1 → Rn INC direct;(direct)+ 1 → direct INC @Ri ;((Ri))+ 1 →(Ri) INC DPTR ;(DPTR)+ 1 → DPTR 这组指令除了第一条影响标志位P之外,其它指令不影响标志位。 (A)=FFH,(Cy)=0,执行INC A 后,Cy=? 2019/7/25

1、带借位减法指令SUBB(自带Cy减法指令) SUBB A,Rn ;(A)-(Rn)-CY→A 二、减法指令 减法指令分为带借位减法指令和减1指令。 1、带借位减法指令SUBB(自带Cy减法指令) SUBB A,Rn ;(A)-(Rn)-CY→A SUBB A,direct;(A)-(direct)- CY→A SUBB A,@Ri ;(A)-((Ri))-CY→A SUBB A,#data ;(A)-data-CY→A 2019/7/25

DEC direct;(direct) - 1 → direct DEC @Ri ;((Ri)) - 1 →(Ri) DEC A ;(A) - 1 → A DEC Rn ;(Rn) - 1 → Rn DEC direct;(direct) - 1 → direct DEC @Ri ;((Ri)) - 1 →(Ri) 这组指令除了第一条影响标志位P之外,其它指令不影响标志位。 2019/7/25

;(A)×(B)→ B(高8位)、A(低8位) (1)A,B均为无符号整数 三、乘法指令MUL 在MCS-51单片机中,乘法指令只有一条。 MUL AB ;(A)×(B)→ B(高8位)、A(低8位) (1)A,B均为无符号整数 (2)对标志位的影响:若乘积大于0FFH,OV置1,否则OV清0;影响P标志位;对CY总是清0。 2019/7/25

DIV AB ;(A)/(B),商→A、余→B (1)A,B均为无符号整数 (2)对标志位的影响:如果除数(B)=0,则标志位OV置1,否则清0;影响P标志位;CY总是被清0。 2019/7/25

3.2.3 逻辑操作指令 逻辑操作指令包括与、或、异或、清0、求反、移位等操作指令,共有24条。 指令中的操作数: 3.2.3 逻辑操作指令 逻辑操作指令包括与、或、异或、清0、求反、移位等操作指令,共有24条。 指令中的操作数: A、Rn、direct、@Ri、#data 为了便于讨论,将其分为5组进行讨论。 2019/7/25

前一条指令是对A清0,该指令影响奇偶标志位P。 后一条指令是对A求反,不影响任何标志位。 CLR A ;0 → A CPL A ;(A) → A 前一条指令是对A清0,该指令影响奇偶标志位P。 后一条指令是对A求反,不影响任何标志位。 2019/7/25

说明:(1)这4条指令,每执行一次只 移动1位;(2)左移一次相当于乘以2,右移一次相当于除以2。 2、循环移位指令 A循环左移: RL A ; A循环右移: RR A ; A带进位循环左移 :RLC A ; A带进位循环右移 :RRC A ; 说明:(1)这4条指令,每执行一次只 移动1位;(2)左移一次相当于乘以2,右移一次相当于除以2。 对标志位影响:仅后两条指令影响CY和P a7 ← a0 a7 → a0 a7 ← a0 CY a7 → a0 CY 2019/7/25

ANL A,direct ;(A)∧(direct)→ A ANL A,@Ri ;(A)∧((Ri))→ A ANL A,Rn ;(A)∧(Rn)→ A ANL A,direct ;(A)∧(direct)→ A ANL A,@Ri ;(A)∧((Ri))→ A ANL A,#data ;(A)∧ data → A ANL direct,A ;(direct)∧(A)→ direct ANL direct,#data ;(direct)∧data→direct 作用:用于使某些位清0。 2019/7/25

ORL A,direct ;(A)∨(direct)→ A ORL A,@Ri ;(A)∨((Ri))→ A 目标地址 4、逻辑或指令ORL ORL A,Rn ;(A) ∨(Rn)→ A ORL A,direct ;(A)∨(direct)→ A ORL A,@Ri ;(A)∨((Ri))→ A ORL A,#data ;(A)∨data → A ORL direct,A ;(direct)∨(A)→ direct ORL direct,#data ;(direct)∨data→direct 作用:用于使某些位置1。 2019/7/25

XRL A,direct ;(A)  (direct)→ A XRL A,@Ri ;(A)  ((Ri))→ A XRL A,Rn ;(A)  (Rn)→ A XRL A,direct ;(A)  (direct)→ A XRL A,@Ri ;(A)  ((Ri))→ A XRL A,#data ;(A)  data → A XRL direct,A ;(direct)  (A)→ direct XRL direct,#data ;(direct)  data→direct 作用:用于使某些位取反,其余位不变。 用1异或使对应位取反,用0异或使对应位保留(不变);自身异或,实现清零。 2019/7/25

4)使(A)=AAH的高四位不变,低四位取反。 对应指令如下: ANL A,#11010101B ORL A,#01010100B 例 写出完成以下各功能的指令: 1)只对累加器A中的1、3、5位清0; 2)只对A中的2、4、6位置1; 3)只对A中的0、1、6、7位取反。 4)使(A)=AAH的高四位不变,低四位取反。 对应指令如下: ANL A,#11010101B ORL A,#01010100B XRL A,#11000011B XRL A, #00001111B 2019/7/25

3.2.4 控制转移类指令 MCS-51单片机有17条转移类指令,包括无条件转移指令、条件转移指令、子程序调用及返回指令等。 3.2.4 控制转移类指令 MCS-51单片机有17条转移类指令,包括无条件转移指令、条件转移指令、子程序调用及返回指令等。 对标志位影响:只有比较转移指令影响进位标志CY,其它指令不影响标志位。 2019/7/25

无条件转移指令:当程序执行该指令后,程序无条件地转移到指定的地址去执行。 包括短转移、长转移和间接转移3条指令 一、无条件转移指令 无条件转移指令:当程序执行该指令后,程序无条件地转移到指定的地址去执行。 包括短转移、长转移和间接转移3条指令 1、短转移指令SJMP(相对转移指令,2字节) SJMP rel ;(PC)+ rel→PC rel=(Ad-As-Bn):相对转移偏移量,有符号数,﹣128~127,负数表示向回跳转,正数表示向前跳转。 指令实际写为:“SJMP 目标地址标号” P47 2019/7/25

SJMP $:停机指令。 (HERE:SJMP HERE) P39 2019/7/25

程序可以跳转到64KB程序存储器空间的任何地方。 指令的实际编写形式为:“LJMP 目标地址标号”。 LJMP addr16 ;addr16 → PC 程序可以跳转到64KB程序存储器空间的任何地方。 指令的实际编写形式为:“LJMP 目标地址标号”。 2019/7/25

JMP @A+DPTR ;(A)+(DPTR)→PC DPTR为基址,A为相对偏移,在64KB范围内无条件转移。 也叫散转指令、多分支转移指令。 JMP @A+DPTR ;(A)+(DPTR)→PC DPTR为基址,A为相对偏移,在64KB范围内无条件转移。 说明:(1)DPTR一般为确定的值,累加器A为变值,根据A的值转移到不同的地方,因此该指令也叫散转指令。 (2)在使用中,往往与一个转移指令表一起实现多分支转移。 2019/7/25

MOV DPTR,#TABLE ;表首地址送DPTR JMP @A+DPTR ;根据A值转移 TABLE: 例3-13 分析下面多分支转移程序段。 MOV B,#3 MUL AB ;开始时(A)=0、1、2 MOV DPTR,#TABLE ;表首地址送DPTR JMP @A+DPTR ;根据A值转移 TABLE: LJMP TAB0 ;(A)=0时转到TAB0执行 LJMP TAB1 ;(A)=3时转到TAB1执行 LJMP TAB2 ;(A)=6时转到TAB2执行 ...... 程序中,根据累加器A的开始值(0、1、2)转移到相应的TAB0~TAB2分支去执行。 2019/7/25

当指令中条件满足时,程序转到指定位置执行,条件不满足时,程序顺序执行。 二、条件转移指令 当指令中条件满足时,程序转到指定位置执行,条件不满足时,程序顺序执行。 条件转移指令有三种:判断累加器A转移指令、比较转移指令、循环转移指令,共8条。 2019/7/25

JZ rel ;(A)=0, (PC)+ rel→PC ;(A)≠0, 顺序执行 判断A非0转移: JNZ rel ;(A)≠0, (PC)+ rel→PC ;(A)=0, 顺序执行 指令的实际编写形式分别为:“JZ 目标地址标号”和“JNZ 目标地址标号”。 2019/7/25

例 试编写程序,把片外RAM地址从2000H开始的数据,传送到片内RAM地址从30H开始的单元,直到出现00H为止。 程序段如下: MOV DPTR,#2000H MOV R0,#30H LOOP: MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR JNZ LOOP ;(A)≠0跳转 SJMP $ ;程序停留到此 2019/7/25

比较转移指令功能较强,共有4条指令 ,一般格式为: CJNE 操作数1,操作数2,rel (目标标号) 指令功能:两个操作数做比较,若不等则转移,否则顺序执行。 2019/7/25

具体形式如下, 第一条: CJNE A,direct,rel 第二条: CJNE A,#data,rel 第三条: CJNE Rn,#data,rel 第四条: CJNE @Ri,#data,rel 2019/7/25

(2)指令执行过程中的比较操作实际上为减法操作,不保留两数之差,但要形成Cy标志。 注: (1)编程时rel用目标地址标号表示, CJNE A, #21,LOOP1 (2)指令执行过程中的比较操作实际上为减法操作,不保留两数之差,但要形成Cy标志。 2019/7/25

DJNZ direct,rel ; 3字节指令。 指令的实际编写形式为: DJNZ Rn,目标地址标号 DJNZ direct,目标地址标号 循环转移指令共有两条指: DJNZ Rn,rel ; 2字节指令。 DJNZ direct,rel ; 3字节指令。 指令的实际编写形式为: DJNZ Rn,目标地址标号 DJNZ direct,目标地址标号 2019/7/25

例3-15 试编写程序,统计片内RAM中从40H单元开始的20个单元中00H的个数,结果存于R2中。 程序段一(用JNZ判断数据是否为0): MOV R0,#40H ;R0指向40H MOV R7,#20 ;R7控制循环 MOV R2,#0 ;R2存放结果 LOOP: MOV A,@R0 JNZ NEXT ;(A)≠0转 INC R2 NEXT: INC R0 DJNZ R7,LOOP SJMP $ 2019/7/25

程序段二 (用CJNE判断数据是否为0): MOV R0,#40H ;R0指向40H MOV R7,#20 ;R7控制循环 LOOP: CJNE @R0,#00H,NEXT INC R2 NEXT: INC R0 DJNZ R7,LOOP 2019/7/25

三、子程序调用和返回指令 这类指令有3条,一条调用,两条返回。 1、子程序调用指令 ACALL addr16 ( 2字节指令) LCALL addr16 (3字节指令) 2019/7/25

2、子程序返回指令(只能用在子程序末尾) RET ; 2019/7/25

3、中断服务程序返回指令 RETI ; “RETI”只能用在中断服务程序末尾。 四、空操作指令 NOP ;延时一个机器周期 常用于延时 2019/7/25

还有两条指令:这两条指令是“AJMP”和“ACALL”,称为绝对转移(短转移)指令和绝对子程序调用(短调用)指令。 初识这两条指令:这两条指令的转移范围是绝对划定的2KB,用不好会出现错误,并且其编码也不好理解(见附录B),所以没有必要使用这两条指令。 2019/7/25

3.2.5 位操作指令 说明:在进行位操作时,位累加器C即为进位标志CY。 位地址区域: 3.2.5 位操作指令 说明:在进行位操作时,位累加器C即为进位标志CY。 位地址区域: 1)片内RAM字节地址20H~2FH单元中连续的128个位(位地址为00H~7FH); 2)部分SFR中的位。 2019/7/25

2)字节地址带位号,如20H.0,表示20H单元的第0位。 3)特殊功能寄存器名带位号,如P2.3,表示P2口的第3位。 4)位符号地址。 位地址的表示方式: 1)直接位地址(00H~FFH),如18H。 2)字节地址带位号,如20H.0,表示20H单元的第0位。 3)特殊功能寄存器名带位号,如P2.3,表示P2口的第3位。 4)位符号地址。 例如,用上述4种方式都可以表示PSW(D0H)中的第2位,分别为:D2H、D0H.2、PSW.2、OV。 2019/7/25

位操作指令共有17条,可以将其分成:位数据传送指令、位逻辑操作指令、位控制转移指令三组进行讨论。 2019/7/25

例 编写程序,把片内RAM中07H位的数值,传送到ACC.0位。 程序段如下: MOV C,07H MOV ACC.0,C 一、位传送指令 MOV C,bit ;(bit)→ C MOV bit,C ;(C)→ bit 例 编写程序,把片内RAM中07H位的数值,传送到ACC.0位。 程序段如下: MOV C,07H MOV ACC.0,C 注意:位之间不能够直接传送,必须借助于C。 2019/7/25

位逻辑操作指令包括位清0、位置1、位取反、位与、位或,共10条指令。 1、位清0指令 CLR C ;0 → C 二、位逻辑操作指令 位逻辑操作指令包括位清0、位置1、位取反、位与、位或,共10条指令。 1、位清0指令 CLR C ;0 → C CLR bit ;0 → bit 2、位置1指令 SETB C ;1 → C SETB bit ;1 → bit 2019/7/25

ANL C,bit ; (C) ∧(bit)→ C ANL C,bit ; (C)∧(bit) → C 5、位或指令 3、位取反指令 CPL C ;(C) → C CPL bit ;(bit) → bit 4、位与指令 ANL C,bit ; (C) ∧(bit)→ C ANL C,bit ; (C)∧(bit) → C 5、位或指令 ORL C,bit ; (C)∨(bit) → C ORL C,bit ; (C)∨(bit) → C 注:在MCS-5指令系统中没有位异或指令,必须用位操作指令来实现。(P41 5) 2019/7/25

位转移指令是判断C或bit为条件的转移指令,共5条指令。 1、以C为条件的转移指令(2字节指令) 三、位条件转移指令(P41 4) 位转移指令是判断C或bit为条件的转移指令,共5条指令。 1、以C为条件的转移指令(2字节指令) JC rel ;若(C)=1, 则(PC)+rel→PC; ;否则顺序向下执行 JNC rel ;若(C)=0, 则(PC)+rel→PC; ;否则顺序向下执行 2019/7/25

JB bit,rel ;若(bit)=1,则(PC)+rel → PC;否则顺序向下执行 JNB bit,rel ;若(bit)=0,则(PC)+rel JBC bit,rel ;若(bit)=1,则(PC)+rel → PC,且0 → bit; 否则顺序向下执行 2019/7/25

例 编写程序,利用位操作指令,实现下图所示的硬件逻辑电路功能。 例 编写程序,利用位操作指令,实现下图所示的硬件逻辑电路功能。 程序段如下: MOV C,P1.1 ORL C,P1.2 CPL C ANL C,P1.0 + & P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 D E F G 2019/7/25

MOV F0H,C ;(C)→ F0H位 MOV C,P1.3 ;(P1.3)→ C ANL C,P1.4 ;(C)∧ P1.4 →C CPL C ; ORL C,F0H ;(C)∨(0F0H)→ C MOV P1.5,C ;(C)→ P1.5 + & P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 D E F G 2019/7/25

3.3 汇编语言程序格式及伪指令 2019/7/25

SJMP $ ;相当于 LOOP1: SJMP LOOP1 END ; 结束标记 标号 源程序 注释 ORG 0000H ; 整个程序起始地址 LJMP MAIN ; 跳向主程序 ORG 0030H ; 主程序起始地址 MAIN: CLR C ; MAIN为程序标号 LOOP: MOV A , @R0 ADDC A, @R1 INC R0 DJNZ R1, LOOP ;相对转移 SJMP NEXT MOV R1, #03H NEXT: DEC R0 SJMP $ ;相当于 LOOP1: SJMP LOOP1 END ; 结束标记 2019/7/25

伪指令的功能:在汇编程序中,用于指示汇编程序如何对源程序进行汇编。 对伪指令的处理:不同于指令,在汇编时并不翻译成机器代码,只是在汇编过程进行相应的控制和说明。 伪指令的具体作用:通常在汇编程序中用于定义数据、分配存储空间、控制程序的输入/输出等。 在MCS-51系统中,常用的伪指令有以下7条。 2019/7/25

ORG伪指令称为起始汇编伪指令,常用于汇编语言某程序段的开始或某个数据块的开始。一般格式为: 其标号为可选项。例如: ORG 0040H MAIN: MOV SP,#0DFH MOV 30H,#00H 2019/7/25

END伪指令称为结束汇编伪指令。一般格式为:END 注:一个源程序只能有一个END命令。 三、EQU伪指令 无冒号 2019/7/25

注:EQU伪指令中的标号必须先赋值后使用。此值可以使8进制数或地址也可以使16进制数或地址。 A EQU 20H A10 EQU 10H DELAY EQU 07E6H 2019/7/25

四、BIT伪指令 BIT伪指令称为位地址符号伪指令。其格式为: 标号 BIT 位地址 FLAGRUN BIT 00H FLAGMUS BIT 01H FLAGALAR BIT P1.7 2019/7/25

五、DB伪指令 BD伪指令称为定义字节伪指令。其格式为: [标号:] DB 项(字节数据、字节数表或字符、字符串) 它的功能是从指定单元开始定义(存储)若干个字节的数据或字符、字符串。字符用ASCII码表示。 注:用DB伪指令定义的数据只占一个字节 2019/7/25

例: ORG 0900H TAB: DB 45H, 73,’A’ 上述程序汇编后: (0090H)=45H (0091H)=49H 2019/7/25

六、DW伪指令 DW伪指令称为定义字伪指令。其格式为: [标号:] DW 字数据或字数据表 注意:高字节存放在前,低字节存放在后 2019/7/25

例如: ORG 1000H TABLE2:BW 1234H,24H 上述程序汇编后: (1000H)=12H (1001H)=34H 2019/7/25

本章小结 本章首先认识了汇编语言的概念及其构成。 然后介绍了MCS-51单片机的寻址方式、指令系统,以及常用的汇编伪指令。 本章是单片机汇编语言程序设计的基础,为了成为单片机程序设计的高手,必须要掌握好本章的内容。 2019/7/25

习题 1、指出下列每条指令的寻址方式和功能。 (1)MOV A , #40H (2)MOV A, 40H (3)MOV A, @R1 (5)MOVC A, @A+PC (6)SJMP LOOP 2019/7/25

2、指出下列程序执行后的操作结果。(1)MOV A,#60H MOV R0,#40H MOV @R0 ,A MOV 41H, R0 XCH A, R0 2019/7/25

(2) MOV DPTR,#2003H MOV A,#18H MOV 20H ,#38H MOV R0, #20H XCH A, @R0 2019/7/25

3、已知(20H)=X,(21H)=Y和(22H)=Z,请用图示说明下列程序执行后堆栈中内容是什么? (1)MOV SP,#70H PUSH 20H PUSH 21H PUSH 22H 2019/7/25

(2)MOV SP,#60H PUSH 22H PUSH 21H PUSH 20H 2019/7/25

4、已知(SP)=73H,(71H)=X,(72H)=Y和(73H)=Z,试问执行下列程序后,20H、21H、22H单元中内容是什么?并用图示说明堆栈指针SP的指向和堆栈中数据的变化。 POP 20H POP 21H POP 22H 2019/7/25