第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。

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及其接口.
第二部分 微机原理 第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系列单片机的指令系统
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
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转换接口技术
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
第1章 微型计算机基础.
Presentation transcript:

第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。 教学难点:1.数据传送类指令中对不同的存储空 间 应采用的传送指令及寻址方式。 2 .间接寻址方式

4.1 指令系统简介 1. 汇编指令格式 助记符 目的操作数,源操作数;(注释) 例如:MOV A, #40H ;把40H送累加器A 4.1 指令系统简介 1. 汇编指令格式 助记符 目的操作数,源操作数;(注释) 例如:MOV A, #40H ;把40H送累加器A 2.指令代码格式 指令代码在程序存储器中存放的数据形式。 例如上条指令的指令代码为:74H.40H,其中74H为操作码,表达了指令的操作功能,40H为操作数。 根据代码长度,80C51单片机的指令有单字节、双字节和三字节指令。 按照指令执行速度又可分为单周期、双周期和四周期指令。 80C51在基本时钟为12MHz时,单周期指令执行速度为1MIPS。

4. 2 寻址方式 指令系统的寻址方式 规定了操作数的访问方式。80C51指令系统有寄存器寻址、直接寻址、间接寻址、立即寻址、基址变址寻址和相对寻址等七种寻址方式。 4. 2. 1 汇编指令中的符号约定 Rn (n=0~7)--当前选中的8个工作寄存器R0~R7 ,它在片内数据存储器中的地址由PSW中RSl、RS0确定; Ri (i=0或1) --当前选中的用于间接寻址的工作寄存器R0、R1 ,它在片内数据存储器中的地址由RS0、RS1 确定 ; direct -- 8位直接地址,可以是片内RAM单元地址或SFR地 址; #data8 -- 8位常数 ; #datal6 -- 16位常数 ;

addrl6 -- 16位目的地址 ,寻址空间 64K字节程序存储器; rel -- 补码形式的8位地址偏移量,用于相对转移指令中 bit -- 位地址,片内RAM或SFR的可寻址位的位地址; @ -- 间接寻址寄存器的前缀; / -- 位操作数的取反操作前缀。 以下符号仅出现在指令注释或功能说明中。 X --片内RAM的直接地址(包含位地址)或寄存器。 (X) --在直接寻址方式中,表示直接地址X中的内容;在间接寻址方式中,表示由间址寄存器X指出的地址单元。 ((X)) --在间接寻址方式中,表示由间址寄存器X指出的地址单元中的内容。  --指令操作流程,将箭头左边内容送入箭头右边的单元内。

1. 立即数寻址方式 立即数(指令中的常数)直接参与指令操作。立即数前必须加“#”标记。指令中的立即数有8位立即数#data8和16位立即数#data16。 例1 MOV A, #3AH ;立即数3AH送累加器A 图4-1 MOV A,#3AH执行示意图

2. 直接寻址方式 在这种寻址方式中,操作数项给出的是参加运算的操作数的地址。可寻址空间有特殊功能寄存器、内部数据存储器以及位地址。其中特殊功能寄存器和位地址空间只能用直接寻址方式来访问。 例1 MOV A, 3AH ;把A的内容送3AH单元。 例2 MOV P1,#10H ;将立即数10H送P1口。 注意:例2 中的目的操作数P1是直接寻址方式,这里用符号P1代替了直接地址90H。

图4-2 MOV A, 3AH执行示意图

3.寄存器寻址方式 寄存器寻址是对选定的工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR和进位CY中的数进行操作。 例1. MOV A,R2 ;将当前工作寄存器的内容 送累加器A。(指令代码为1字节EA〕 注意R2在片内RAM的位置,它由RS0、RS1决定。如PSW中RS1、RS0的值分别为1、0,则现在的R2属于第二组工作寄存器,那么它的地址为12H。现已知12H中存放着数值4AH,则执行该指令后,4AH就被送到A累加器中。

图4-2 MOV A,R2执行示意图

4. 寄存器间接寻址方式 在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数本身,而是操作数的地址。这种寻址方式用于访问片内数据存储器或片外数据存储器。 间接寻址寄存器:Ri(8位地址指针)和DPTR(16位地址指针),间接寻址寄存器前加@表示间址操作。 例1 MOV R0,#50H MOV A,@R0 例2 MOV DPTR,#2760H MOVX @DPTR, A

图4-3 MOV A,@R0执行示意图

5.变址寻址(基址寄存器+变址寄存器的间接寻址) 变址寻址方式中使用DPTR或PC作基址寄存器,累加器A作变址寄存器 。 采用变址寻址的指令只有三条: MOVC A, @A+DPTR MOVC A, @A+PC JMP @A+DPTR 前两条用于程序存储器的查表操作,后一条用于程序的分支散转。

例 1 现假设MOVC A,@A+DPTR指令存放在70H单元,ACC中原存放值为E0H,DPTR中值为2000H,则A+DPTR形成的地址为20E0H。20E0H单元中内容为47H,则执行该指令后,ACC中原E0H被47H代替。该指令执行过程示于图4-4。

图4-4 MOVC A,@A+DPTR执行示意图

6. 相对寻址方式 相对寻址是将程序转移到相对地址的转移指令。 是将程序计数器PC中的当前内容(转移指令的下一条指令地址)与转移指令第二字节所给出的偏移量相加,其结果作为跳转指令的转移地址。偏移量为带符号的数,其范围为+127~-128 。程序设计中,相对地址可以用指令标号或直接地址偏移量数值,但要注意,相对转移地址的偏移量不得超过+127~-128 。 例1 JC 03H ;若进位C=0,则程序顺序执行, 即不跳转,PC= PC+2 ;若进位C= 1,则以PC 中的当前内容为基地址, 加上偏移量03H 后所得到的结果为该 转移指令的目的地址 。

图4-5 JC 03H指令执行示意图

7. 位寻址方式 位寻址空间:片内RAM的位寻址区(20H~ 2FH单元的128位)和SFR中的可位寻址的位单元。 位累加器:在进行位操作时,借助于进位位C作为操作累加器 。 位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时需予以注意。 例1 SETB 3DH ;将片内RAM位地址3DH即27H 单元的第5位置“1”。 例2 ANL C, 3DH ;将3DH的位状态与进位位C 相与, 结果保留在C中。

操作数寻址方式与寻址空间 寻址方式 寻 址 空 间 寄存器寻址 工作寄存器R0R7、A、B、CY、DPTR 直接寻址 寻 址 空 间 寄存器寻址 工作寄存器R0R7、A、B、CY、DPTR 直接寻址 片内RAM和特殊功能寄存器SFR 间接寻址 片内RAM , 片外RAM 位寻址 片内RAM的位寻址区和SFR中的可位寻址的位单元 立即数寻址 程序存储器 基址变址寻址 程序存储器(@A+PC, @A+DPTR) 相对寻址 在程序存储器256字节范围内转移

4.3 指令系统分类介绍 4. 3. 1 数据传送类指令(共24条) 1 .传送类指令分类 程序存储器查表指令MOVC(共2条) 4.3 指令系统分类介绍 4. 3. 1 数据传送类指令(共24条) 1 .传送类指令分类 程序存储器查表指令MOVC(共2条) MOVC A, @A+DPTR MOVC A, @A+PC 片外数据存储器数据传送指令MOVX(共4条) MOVX @DPTR, A MOVX A, @DPTR MOVX @Ri, A MOVX A, @Ri 由于在80C51指令系统中,没有专门对外设的输入/输出指令, 因此80C51单片机只能用这四条指令与外部设备交换数据。后2条指令使用不方便,很少使用.

片内数据RAM与存储器间的传送指令(共18条) MOV A, Rn MOV Rn,A MOV direct1,direct2 MOV A,#data8 MOV DPTR,#data16 PUSH direct POP direct

片内存储器可以以直接寻址的方式将数据从一个单元送到另一个单元;片内存储器的任一单元可以与工作寄存器或间址寄存器指定的地址单元间相互传送数据,但是,工作寄存器之间不能直接传送数据,也不能通过间址寄存器与片内存储器传送数据;立即数可以送到以寄存器间接寻址、直接寻址的方式的片内存储器的任一单元或工作寄存器;堆栈操作只能采用直接寻址方式。

传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。另外,传送目的操作数为ACC的指令将影响奇偶标志P 。 数据交换类指令(共5条) 全交换:XCH A, Rn ;8位物理空间的数据彼此交换 XCH A, @Ri XCH A,direct 半交换:XCHD A, @Ri ; 8位物理空间中的低4位数据 ; 彼此交换 自交换: SWAP A ;自身高4位与低4位数据彼此交换 传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。另外,传送目的操作数为ACC的指令将影响奇偶标志P 。

2. 传送指令应用举例 例1 A=5BH,R1=10H,R2=20H,R3=30H,(30H〕=4FH,执行指令: 2. 传送指令应用举例 例1 A=5BH,R1=10H,R2=20H,R3=30H,(30H〕=4FH,执行指令: MOV R1,A ;A送R1 MOV R2,30H ;(30H)送R2 MOV R3,#83H;83H送R3 执行后,R1=5BH,R2=4FH,R3=83H

例2 已知片内RAM50H单元中存放数值为AAH,设堆栈指针为30H,把此数值压入堆栈,然后再弹出到40H单元中。 MOV SP,#30H ;30H  SP PUSH 50H ;(SP)+1  SP, (50H)  31H POP 40H ;(31H)  40H, (SP)-1  SP

例3 已知当前PC值为2010H,请用两种方法将程序存储器20F0H中的常数送入累加器A中。 解:方法一、使用查表指令 MOVC A, @A+PC MOV A, #0DDH MOVC A, @A+PC 方法二、使用查表指令 MOVC A, @A+DPTR MOV DPTR,#20F0H CLR A MOVC A, @A+DPTR

4. 3. 2 算术运算类指令(共23条) 1..算术运算类指令分类 算术运算类指令主要是对8位无符号数据进行算术操作,其中包括加(ADD)、带进位加(ADDC)、带借位减法(SUBB)、乘(MUL)、除(DIV)、加1(INC)、减1(DEC) 指令;借助溢出标志,可对有符号数进行补码运算;借助进位标志,可进行多精度加、减运算;也可以对压缩BCD数进行加法运算。

ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data8 MUL AB DIV AB INC A INC @Ri INC direct INC DPTR DA A

算术运算操作对PSW中标志位的影响 指令 PSW中的标志位 C OV AC ADD ∨ ADDC SUBB MUL - DIV

2.算术运算指令应用举例 例1 已知A=DBH,R4=73H,CY=1,执行指令“SUBB A,R4”则结果如下: A=67H,CY=0,OV=1

4. 3. 3 逻辑运算类指令(共25条) 这些指令执行时一般不影响程序状态字寄存器PSW,仅当目的操作数为ACC时对奇偶标志位有影响。 4. 3. 3 逻辑运算类指令(共25条) 逻辑运算类指令主要用于对两个操作数按位进行逻辑操作,操作结果送到A 累加器或直接寻址单元,若直接地址为I/O端口,则为“读-改-写”操作。这类指令执行的操作主要有“与”(ANL)、“或”(ORL)、“异或”(XRL)以及累加器自身的循环移位、取反(CPL)、清除(CLR) 等。 这些指令执行时一般不影响程序状态字寄存器PSW,仅当目的操作数为ACC时对奇偶标志位有影响。

1.逻辑“与”指令 ANL A, Rn ANL A, #data ANL A, direct ANL A, @Ri ANL direct, A ANL direct, #data

CLR A CPL A RLC A ;带进位位的循环左移 RL A ;循环左移

2.逻辑运算指令举例 例1 已知A=1AH, R0=45H,(45H)=39H,执行指令ORL A,@R0,则操作如下: +) 0 0 l l 1 0 0 1 (39H) 0 0 1 1 1 0 1 1 (3BH) 结果:A=3BH, R0=45H,(45H)=39H,P=1

4. 3. 4 转移操作类指令(共17条) 跳转: LJMP addr16 ; addrl6 PC 调用和返回: 4. 3. 4 转移操作类指令(共17条) 这类指令的功能主要是控制程序从原顺序执行地址转移到其它指令地址上。 包括跳转、调用、散转、返回及空操作等操作。 1. 转移操作类指令分类 跳转: LJMP addr16 ; addrl6 PC AJMP addr11 ;PC+2 PC,addr11 PC.10  PC.0 SJMP rel ;PC+2+rel PC , rel是带符号的8位偏 移量 调用和返回: LCALL addr16 ;PC+3 PC,SP+1 SP, PC.7~PC.0 (SP),SP+1 SP, PC.15~PC.8 (SP),addr16 PC

ACALL addr11 ;PC+2 PC,SP+1 SP, PC.7~PC.0 (SP),SP+1 SP, PC.15~PC.8 (SP), addr11 PC.10~PC.0 RET ;(SP)PC.15~PC.8,SP -1 SP, (SP)PC.7~PC.0,SP - 1 SP RETI ;除具有RET指令的功能外,还能将优 先级状态触发器清除。 散转: JMP @A+DPTR ;A+DPTRPC ,根据A中数值的不同, 程序实现不同的分支转移 空操作:NOP

条件转移 JZ rel ;A=0:PC+2+rel PC A≠0:PC+2 PC JNZ rel ;A≠0:PC+2+rel PC A=0:PC+2 PC DJNZ Rn,re1 ;Rn-1Rn,Rn ≠0:PC+2+rel PC Rn=0:PC+2 PC DJNZ direct,rel ;(direct)-1 (direct), (direct)≠0 :PC+3+rel PC (direct)=0 : PC+3 PC

CJNE A,direct,rel ;A =(direct):PC+3 PC,0 C A>(direct):PC+3+relPC,0 C A<(direct):PC+3+re1 PC,1 C CJNE A,#data,rel ;A=data:PC+3 PC,0 C A>data:PC+3+rel PC,0 C A<data: PC+3+rel PC,1 C CJNE Rn,#data,rel ;Rn=data :PC+3 PC,0 C Rn>data :PC+3+rel PC,0 C Rn<data :PC+3+rel PC,1 C CJNE @Ri,#data,rel ;(Ri)=data:PC+3 PC,0 C (Ri)>data :PC+3+rel PC,0 C (Ri)<data:PC+3+rel PC,1 C

2.转移指令应用举例 例1、根据R7的内容,转向各个操作程序。 R7=0, 转入OPR0 R7=1, 转入OPR1 … … … … R7=n, 转入OPRn

解:JUMP1: MOV DPTR,#JPTAB1 ;跳转表首地址送数据指针 MOV A,R7 ;R72 A(修正变址值) ADD A,R7 JNC NOAD ;判有否进位 INC DPH ;有进位则加到高字节地址 NOAD: JMP @A+DPTR ;转向形成的散转地址入口 JPTAB1:AJMP OPR0 ;直接转移地址表 AJMP OPR1 … AJMP OPRn

例2 某子程序SUB1入口地址是340BH,调用指令LCALL SUB1 地址为2042H,该段程序调用过程中PC及SP的变化如下: 地址 指令 注释 2040H MOV SP,#20H ;设置堆栈指针 ,20HSP 2042H LCALL SUB1 ;调用子程序,2045HPC,21HSP, 45H(21H), 22HSP,20H(22H), 340BHPC 340BH SUB1: MOV A,R0 3412H RET ;(22H)PCH,(21H)PCL,此时PC=2045H, SP=20H

例3、根据A中数值,置相应的标志位。 当 #dataL ≤ A≤#dataH,标志位F0清零;否则F0置1。 解: ORG 2000H ST: CLR F0 CJNE A, #dataH, HCNT RET HCNT:JC LC SF0: SETB F0 LC: CJNE A, #dataL, LCNT LCNT:JC SF0

4. 3. 5 位操作类指令(共17条) 包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器C为进位标志CY。 4. 3. 5 位操作类指令(共17条) 包括位变量传送、逻辑运算、控制程序转移等指令。在进行位操作时,位累加器C为进位标志CY。 在汇编语言中位地址的表达方式有如下几种: (l)直接(位)地址方式:如D4H; (2)点操作符号方式:如PSW.4,(D0H).4; (3)位名称方式:如RS1; (4)用户定义名方式:如用伪指令bit 定义下式: SUB.REG bit RS1 经定义后,指令中可以用SUB.REG代替RS1。 上面4种方式都可表达PSW(D0H)中第4位,它的位地址是D4H,名称为RS1,用户定义为SUB.REG。

1. 位操作指令分类 位数据传送指令: MOV C,bit ;bit C MOV bit,C ;C bit,对端口操作时,是“读-改-写”指令。 位逻辑运算指令 ANL C,bit ;C  bit C ANL C,/bit ;C  /bit C ORL C,bit ;C  bit C ORL C,/bit ;C  /bit C 位修正指令 CLR C ;0 C CLR bit ;0 bit CPL C ;/C C CPL bit ;/bit bit SETB C ;1 C SETB bit ;1 bit 当直接位地址为端口中某一位时,具有“读-改-写”功能 。

判位转移指令 JC rel ; C=1:PC+2+rel PC C=0:PC+2 PC JNC rel ; C=0:PC+2+re1 PC C=1:PC+2 PC JB bit,rel ; bit=1:PC+3+rel PC bit=0:PC+3 PC JNB bit rel ; bit=0 :PC+3+rel PC bit=1 :PC+3 PC JBC bit,rel ; bit=1:PC+3+rel PC,0 bit bit=0:PC+3 PC

2. 位操作指令举例 例1 把Pl.3状态传送到Pl.7。按题意编写指令如下: MOV C,P1.3 ;P1.3 C MOV P1.7,C ;C P1.7 例2 已知位0AH=1,CY=1。 执行指令ANL C,0AH ; C • 0AH C,C为1 执行指令ORL C,/0AH ; C + C, C为1

例3 比较片内RAM 40H、50H中的两个无符号数大小,若40H中的数小则把片内 RAM中的40H位置1,若50H中的数小则把50H位置1;若相等则把20H位置1,然后返 回。

地址 机器码 源程序 2000 E5 40 MOV A,40H 2002 B5 50 03 CJNE A,50H,L1 ;两数不等则转Ll 2005 D2 20 SETB 20H ;两数相等,置20H 2007 22 RET 2008 40 03 L1: JC L2 ;若C为“1”,则(40H) 中数小,转L2 200A D2 50 SETB 50H ;(50H)数小则50H位置1 200C 22 RET 200D D2 40 L2: SETB 40H ;(40H)数小,则40H位置1 200F 22 RET

例3、根据A中数值,置相应的标志位。 当 #dataL ≤ A≤#dataH,标志位F0清零;否则F0置1。 解: ORG 2000H ST: CLR F0 CJNE A, #dataH, HCNT RET HCNT:JC LC SF0: SETB F0 LC: CJNE A, #dataL, LCNT LCNT:JC SF0