第7章.MCS-51指令系统
第7章MCS-51单片机的常用外设扩展
(2)数据线
2732的8位数据线直接与单片机的P0口相连。P0口作 为地址/数据线分时复用。
(3)控制线
CPU执行2732中存放的程序指令时,取指阶段就是对 2732进行读操作。注意,CPU对EPROM只能进行读操作, 不能进行写操作。CPU对2732的读操作控制都是通过控制线 实现的。2732控制线的连接有以下几条:
2.硬件电路 单片机与6116的硬件连接如图7-4所示。
3.连线说明
• 地址线:A0~A10连接单片机地址总线P0.0~P0.7、P2.0、P2.1、P2.2 共11根;
• 数据线:I/O0~I/O7连接单片机的数据线,即P0.0~P0.7;
• 控制线:片选端连接单片机的P2.7,即单片机地址总线的最高位A15; 读允许线连接单片机的读数据存储器控制线;
• 对于没有内部ROM的单片机或者程序较长、片内ROM容 量不够时,用户必须在单片机外部扩展程序存储器。 MCS-51单片机片外有16条地址线,即P0口和P2口,因此 最大寻址范围为64K字节(0000H—FFFFH)。
• 这里要注意的是,MCS-51单片机有一个管脚 EA跟程序存 储器的扩展有关。如果接高电平,那么片内存储器地址范 围是0000H—0FFFH(4K字节),片外程序存储器地址范 围是1000H—FFFFH(60K字节)。如果接低电平,不使 用片内程序存储器,片外程序存储器地址范围为0000H— FFFFH(64K字节)。
1. 芯片选择
单片机扩展数据存储器常用的静态RAM芯片有6116(2K×8 位)、6264(8K×8位)、62256(32K×8位)等。
根据题目容量的要求我们选用SRAM6116,采 用单一+5V供电,输入输出电平均于TTL兼容,具有 低功耗操作方式,管脚如图7-3所示。
MCS-51指令系统
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,
MCS51单片机指令系统
第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。
MCS-51的指令系统
1.判断以下指令的正误:(1)MOV 28H,@R2 (2)DEC DPTR (3)INC DPTR (4)CLR R0(5)CPL R5 (6)MOV R0,R1 (7)PHSH DPTR (8)MOV F0,C (9)MOV F0,Acc.3 (10)MOVX A,@R1 (11)MOV C,30H (12)RLC R02.判断下列说法是否正确。
(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。
(B)指令周期是执行一条指令的时间。
(C)指令中直接给出的操作数称为直接寻址。
3.在基址加变址寻址方式中,以()作变址寄存器,以()或()作基址寄存器。
4.MCS-51共有哪几种寻址方式?各有什么特点?5.MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?6.访问SFR,可使用哪些寻址方式?7.指令格式是由()和()所组成,也可能仅由()组成。
8. 假定累加器A中的内容为30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器()单元的内容送入累加器A 中。
9.在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问()存储器提供地址,而DPTR是为访问()存储器提供地址。
10.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的()。
11.下列程序段的功能是什么?PUSH AccPUSH BPOP AccPOP B12. 已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。
下述程序执行后:POP DPHPOP DPLMOV DPTR,#4000HRL AMOV B,AMOVC A,@A+DPTRPUSH AccMOV A,BINC AMOVC A,@A+DPTRPUSH AccRETORG 4000HDB 10H,80H,30H,50H,30H,50H请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。
大学课件MCS51单片机指令系统与汇编语言程序设计
ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
单片机习题答案
《单片机应用技术》习题答案第一章概述1. 什么是总线?总线主要有哪几部分组成?各部分的作用是什么?总线是连接计算机各部件之间的一组公共的信号线。
一般情况下,可分为系统总线和外总线。
系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB)地址总线(AB):CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信息由地址总线输出,然后经地址译码单元处理。
地址总线为16位时,可寻址范围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的范围。
在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。
控制总线(CB):由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。
CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。
数据总线(DB):CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。
在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设2.什么是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线?CPU通过接口电路与外部输入、输出设备交换信息,一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。
CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。
一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。
3. 存储器的作用是什么?只读存储器和随机存储器有什么不同?存储器具有记忆功能,用来存放数据和程序。
计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。
随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。
MCS-51单片机指令系统
6、堆栈操作指令
进栈 【PUSH direct;(SP)+1→SP,(dirsct)→(SP)】 出栈 【POP direct;(SP)→(dirsct),(SP)-1→SP】
MCS-51指令系统中有两条读程序存储器中表格数据的指令。 因为对程序存储器只能读不能写,所以查表指令数据传送都是单向的, 即从程序存储器到累加器中。
SETB C;1→C置一
3、位逻辑运算指令
ANL C,bit;C)∧(bit)→C
ORL C,/bit;(C)∨(~bit)→C
“ / “表示取反
JB bit,re1;若(bit)=1,则(PC)+rel→PC;否则,(PC)+3→PC
4、位条件转移指令
JNB bit,re1;若(bit)=0,则(PC)+rel→PC;否则,(PC)+3→PC
1、逻辑与指令【ANL A,#data;(A)∧data→A 】
2、逻辑或指令【ORL A,#data;(A)∨data→A】
3、逻辑异或指令【XRL A,#data;(A)⊕data→A】
4、累加器A清零指令【CLA A;0→A 】
5、累加器A取反指令【CPL A; ̅A→A】
RL A;左循环移位指令
2、以Rn为目的操作数的指令 【MOV Rn, #data;data→Rn】 (源操作数:累加器A、片内RAM单元、SFR内容,立即数) 传送到当前工作寄存器组R0~R7的某个寄存器
3、以直接地址为目的操作数的指令 【MOV direct, #data;data→direct】 (源操作数:累加器、片内RAM单元、工作寄存器,立即数) 传送到由direct所指的片内存储单元
返回指令
单片机原理及应用(第3版)参考答案
单片机原理及应用(第3版)参考答案《单片机原理及应用(第3版)》习题参考答案姜志海黄玉清刘连鑫编著电子工业出版社目录第1章概述 ............................................................. 2 第2章 MCS,51系列单片机硬件结构 . (5)第3章 MCS,51系列单片机指令系统 .......................................10 第4章 MCS,51系列单片机汇编语言程序设计 ............................... 13 第5章 MCS,51系列单片机硬件资源的应用 ................................. 18 第6章 MCS,51系列单片机并行扩展接口技术 ............................... 23 第7章 MCS,51系列单片机串行总线扩展技术 ............................... 28 第8章单片机应用系统设计 . (30)第1章概述1(简述微型计算机的结构及各部分的作用微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。
运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。
通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。
由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(Central Process Unit)。
2(微处理器、微型计算机、微型计算机系统有什么联系与区别,微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。
MCS-51单片机指令系统教程(2)
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
返回
2.2.5 变址寻址
由操作码和操作数(或操作数地址)构成指令的结构。
举例:MOV A,#0FFH
ADD A,R0
返回
2.1.2 指令的三种表示形式:
指令的表示形式是识别指令的标志。
1,二进制的表示形式:(以“累加器的内容+08H”为例) 00100100B 操作码 OP (加法) 00001000B 操作数DATA(08H)
乘法指令 16位寄存器DPTR加一
从表中可见,指令的字节数与指令周期不是对等的关系 返回
2.1.4 指令的分类
MCS-51单片机的指令如果按功能划分可以分为五类: 1,数据传送类指令:完成数据在单片机内部之间的传送。
分为8位数和16位两种。除了奇偶位外,指令的执行对 PSW无影响。
2,算术运算指令:用于操作数之间的加、减、乘除运算。 【特点】:多数情况下:操作数之一在累加器A中,结果 也保留在A中,运算结果要影响PSW(进位标志、奇偶和 溢出标志等)。
“机器码”后才能为CPU所识别和执行。 3,三种不同的表示方法适用于不同的场合。
返回
本章内容都以汇编的形式介绍指令系统。
2.1.3 指令的字节数
在MCS-51单片机的指令系统中,因指令操作码和操作数 的不同,指令(在存储器中)长度也各不相同。
分为单字节、双字节和三字节。
单片机第7章习题答案
第7章习题答案1.通常8031给用户提供的I/O口有哪几个?为什么?答案:MCS-51系列单片机虽然有4个8位I/O口P0、P1、P2、P3,但4个I/O口实际应用时,并不能全部留给用户作系统的I/O口。
因为当单片机在外部扩展了程序存储器、数据存储器时,就要用P0和P2口作为地址/数据总线,而留给用户使用的I/O口只有P1口和一部分P3口。
(不做系统扩展,都可以用作I/O口)2.在MCS-51单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突,为什么?外部I/O接口地址是否允许与存储器地址重叠?为什么?答案:因为单片机访问外部程序存储器与访问外部数据存储器(包括外部I/O口)时,会分别产生PSEN与RD/WR两类不同的控制信号,因此外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突。
外部扩展I/O口占用数据存储器地址空间,与外部数据存储器统一编址,单片机用访问外部数据存储器的指令来访问外部扩展I/O口。
因此外部I/O接口地址是否允许与程序存储器地址重叠不允许与数据数据存储器地址重叠。
3.在通过MOVX指令访问外部数据存储器时,通过I/O口的哪些位产生哪些控制信号?答案:MCS-51对外部数据存储器的访问指令有以下4条:1)MOVX A, @Ri2)MOVX @Ri, A3)MOVX A, @DPTR4)MOVX @DPTR, A访问外部数据存储器指令在执行前,必须把需要访问的存储单元地址存放在寄存器Ri (R0或R1)或DPTR中。
CPU在执行1)、2)指令时,作为外部地址总线的P2口输出P2锁存器的内容、P0口输出R0或R1的内容;在执行3)、4)指令时,P2口输出DPH内容,P0口输出DPL内容。
写时(/WR P3.6)有效;读时(/RD P3.7)有效。
4.外部存储器的片选方式有几种?各有哪些特点?答案:外部存储器的片选方式有线选法和译码法两种。
线选法的特点是连接简单,不必专门设计逻辑电路,但是各个扩展芯片占有的空间地址不连续,因而地址空间利用率低。
MCS-51系列单片机的指令系统
51系列单片机指令系统包含5种功能类型的指令,7 种寻址方式,共有111条指令。
addr16 16位目标地址,片外数据存储器或程序存储器以及外 部芯片的地址,用于LCALL和LJMP指令中;
addr11 11位目标地址,片内数据存储器或程序存储器的地址, 用于ACALL和AJMP指令中;
rel 相关地址,8位带符号偏移量,一般是程序存储器字节地址, 通常在跳转类指令中使用,其对应的十进制范围为-128~+127;
立即寻址就是直接给出操作数。
取指令时,即可由程序存储器中直接取得操作数据。51单 片机中除了一条指令(MOV DPTR,#data16)是16位长 的立即数外,其余都是8位的立即数。
例如:MOV A,#30H;无论执行之前A中的内容是多少, 则执行后A=30H。
值得注意的一点是:在立即数寻址中立即数前面必须要加 上一个“#”号,“#”表示其后面内容为立即数而不是一个 字节单元地址。
bit 位地址,针对片内数据存储器中的可位寻址的位使用; DPTR 数据指针,可用做16位的地址寄存器; (X) X指寄存器或十六进制数,则(X)为指向以X寄存器中的内
容为目标地址的单元或以十六进制数据为目标地址的单元; ← 数据传送的方向,将左边的内容送入右边; A 累加器; ACC 直接寻址方式的累加器; B 寄存器B; C 进位标志位,是布尔处理机的累加器,也称为位累加器。
任何一种处理器都必须经过设计人员对
MCS-51单片机指令系统-数据传送类指令
• 例 从片外程序存储器2000H单元 开始存放0~9的平方值,以DPTR作 为基址寄存器进行查表得3的平方 值。
1FFDH 1FFEH 1FFFH 2000H 0 1 4 9 16 25 36 49 64 81
• • • • •
如果用以DPTR为基址寄存器 2001H 的查表指令,其程序如下: MOV DPTR, #2000H;置表首地址 MOV A, #03H MOVC A, @A+DPTR 2009H
• 设MOVC指令所在地址(PC)=1FFDH,则 偏移量=2000H-(1FFDH+1)=02H。 • 相应的程序如下: MOV A,#03H ;(A)←03H ADD A,#02H ;用加法指令 进 行地址调整 MOVC A,@A+PC ;(A)←(A+PC+1) 执行结果为:(PC)=1FFEH,(A)=09。
• 前一条指令采用DPTR作基址寄存器,因此可以很方便地把 一个16位地址送到DPTR,实现在整个64 KB程序存储器单 元到累加器A的数据传送。即数据表格可以存放在程序存 储器64 KB地址范围的任何地方。 • 后一条指令以PC作为基址寄存器,CPU取完该指令操作码 时PC会自动加1,指向下一条指令的第一个字节地址,即 此时是用(PC)+1作为基址的。另外,由于累加器A中的内 容为8位无符号数,这就使得本指令查表范围只能在256个 字节范围内(即(PC)+1H~(PC)+100H),使表格地址空间分 配受到限制。同时编程时还需要进行偏移量的计算,即 MOVC A,@A+PC指令所在地址与表格存放首地址间的距离 字节数的计算,并需要一条加法指令进行地址调整。偏移 量计算公式为: • 偏移量 = 表首地址-(MOVC指令所在地址+1)
MCS-51单片机原理和接口技术习题参考答案
MCS-51单片机原理和接口技术习题参考答案第一章绪论1-1解答:第一台计算机的研制目的是为了计算复杂的数学难题。
它的特点是:计算机字长为12位,运算速度为5000次/,使用18800个电子管,1500个继电器,占地面积为150m2,重达30t,其造价为100多万美元。
它的诞生,标志着人类文明进入了一个新的历史阶段。
1-2解答:单片微型计算机简称单片机。
一个完整的单片机芯片至少有中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口等部件。
1-3解答:单片机的发展大致经历了四个阶段:第一阶段(1970—1974年),为4位单片机阶段;第二阶段(1974—1978年),为低中档8位单片机阶段;第三阶段(1978—1983年),为高档8位单片机阶段;第四阶段(1983年至今),为8位单片机巩固发展阶段及16位单片机、32位单片机推出阶段。
1-4解答:Intel公司的MCS-48系列、MCS-51系列、MCS-96系列产品;Motorola公司的6801、6802、6803、6805、68HC11系列产品;Zilog公司的Z8、Super8系列产品;Atmel公司的AT89系列产品;Fairchild公司的F8和3870系列产品;TI公司的TMS7000系列产品;NS公司的NS8070系列产品;NEC公司的μCOM87(μPD7800)系列产品;National公司的MN6800系列产品;Hitachi公司的HD6301、HD63L05、HD6305。
1-5解答:(1)8031/8051/8751三种型号,称为8051子系列。
8031片内没有ROM,使用时需在片外接EPROM。
8051片内含有4KB的掩模ROM,其中的程序是生产厂家制作芯片时烧制的。
8751片内含有4KB的EPROM,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。
(2)8032A/8052A/8752A是8031/8051/8751的增强型,称为8052子系列。
MCS-51单片机的指令集(分类)
子程序返回
1
24
RETI
中断返回
1
24
AJMP addr11
绝对短转移
2
24
LJMP addr16
长转移
3
24
SJMP rel
相对转移
2
24
JMP @A+DPTR
相对于DPTR的间接转移
1
24
JZ rel
累加器为零转移
2
24
JNZ rel
累加器非零转移
2
24
CJNE A,direct,rel
累加器与直接地址单元比较,不等则转移
2
12
MOV direct,Rn
寄存器内容送入直接地址单元
2
24
MOV direct,direct
直接地址单元中的数据送入直接地址单元
3
24
MOV direct,@Ri
间接RAM中的数据送入直接地址单元
2
24
MOV direct,#data8
8位立即数送入直接地址单元
3
24
MOV @Ri,A
累加器内容送入间接RAM单元
DEC @Ri
间接RAM内容减1
1
12
MUL A,B
A乘以B
1
48
DIV A,B
A除以B
1
48
DA A
累加器进行十进制转换
1
12
3、逻辑操作类指令
助记符
功能说明
字节数
振荡周期
ANL A,Rn
累加器与寄存器相“与”
1
12
ANL A,direct
累加器与直接地址单元相“与”
mcs-51指令系统
0000H 0700H …… …… ACALL Addr7-0 …… …… 2KB 2KB
一2KB范围内
ORG 07FFH
PC
07FFH
0801H 0810H 0FFFH 1000H 1100H
ACALL 0700H
ACALL 0810H ORG 1100H ACALL 1700H ACALL 0FFFH
ORL 对某些位置位 ORL P1,#00110010B ;P1口的1,4,5位置为1
A的低3 位送P1口,P1口高5位不变 ANL A,#O7H ANL P1,#0F8H ORL P1,A
XRL 对某些位取反 XRL P1,#00110001B ;P1口的0,4,5位取反
4.5 控制转移指令
00010010 2 addr 8-15 addr 0-7 (SP)=#07H SUBRTN的实际地 (PC)#0123H+#3=#0126H (SP)#07H+#1=#08H ((SP))=(08H)#26H (SP)#08H+#1=#09H ((SP))=(09H)(01H) (PC)#5678H
转移指令通过பைடு நூலகம்写PC的当前值,从而改变CPU执行 程序的顺序,使程序发生跳转。 按转移条件分类:
1)无条件转移:
执行无条件转移指令,程序无条件转移到指定处。 2)条件转移: 指令中给出转移条件,执行指令时,先测试条件,若 满足条件,则程序収生转移,否则,仍顺序执行程序。
4.5.1无条件转移指令
4.3 算术运算指令
例:被乘数3个字节,存在42H,41H,40H单元,乘数存在
R4中,将积存放到53H,52H,51H,50H中。
mcs51单片机指令集
一个单片机所需执行指令的集合即为单片机的指令系统。
单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。
现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。
但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。
所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。
在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。
但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。
所以现在基本上都不会直接使用机器语言来编写单片机的程序。
最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。
每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。
MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
MCS-51单片机指令系统“读-改-写”指令
MCS-51单片机指令系统“读-改-写”指令
单片机首先将欲修改的寄存器的内容读回ALU,对相应位进行修改,然后再整个写回原来的寄存器地址,完成该功能的指令就叫做“读-改-写”指令。
读锁存器和读引脚的区别
在51单片机中“读-修改-写”是单片机内部自己执行的,它发生在写IO口的时候,当写IO口的时候它先把IO的当前状态读回来,根据要写的数据修改读回来的数据,再写到IO口;读引脚是直接读引脚的当前状态,当前引脚是高电平,读回来的就是高电平,低电平时读回来的就是低电平
读的两种方式
在对并行口P0~P3操作时,这类指令从端口的锁存器读出数据而不是引脚处。
而MOV等非“读-改-写”指令,则是从端口的引脚处读数据。
单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。
单片机在进行端口输出时,经常要参考其上一次的输出状态。
例如,需要将连接到端口的LED闪烁。
编程序时往往需要从输出引脚读前一次的输出状态,将其求反后输出。
但如果上次是输出“1”使LED点亮,这时候虽然端口上输出逻辑是“1”,但是由于LED的二极管作用将输出高电平拉至“0”电平(0.7V左右),通过引脚读进来就是“0”而非“1”了。
这样,将“0”求反后输出还是“1”,就起不到使灯闪烁的目的了。
但是,如果这时读的不是端口而是锁存器的输出端Q,则实现闪烁的功能就正常。
上述例子很好地说明了为什么单片机在设置读端口功能后还要设置读锁存器这一功能。
读引脚由传送指令MOV实现
读锁存器用到的“读-改-写”指令用 ANL P0,A等实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例7-3
在中断响应时,(SP)=26H, (DPTR)=0213H。执行下列指令 PUSH DPL PUSH DPH 后RAM地址27H,28H和栈指针SP的内容。 DPL和DPH分别是DPTR的低8位和高8位,并可以单独使用。另外, 本指令系统的堆栈只支持8位操作,因此16位的DPTR需要保存到堆栈 就只能分两次实现。 执行PUSH DPL后:
相对寻址
相对寻址不用于操作数的寻址,只用于控制转移指令, 是程序目标地址的形成方法之一。 目标地址=当前指令地址+指令字节数+rel 例: JZ 30H ;若A=0,(PC)←(PC)+02H+30H ;若A≠0,则程序顺序执行
位寻址(Bit Addressing)
指令中给出可寻址位的位地址,据此进行位操作。 位寻址范围包括: (1)内部RAM中的可位寻址区 字节地址20-2FH,128个位,位地址00-7FH (2)SFR的可寻址位 字节地址能被8整除,位地址80-FFH 例: MOV C,20H 不是直接寻址注意 例: SETB F0
@Ri @Ri @DPTR @Ri
地址范围
00H-FFH 00H-FFH 0000-FFFFH 页地址由P2确定 页内地址00H-FFH
例: MOV A, @R0 例: MOVX @DPTR, A 需先向间址寄存器写入地址码
基址变址寻址(Based
Indexed Addressing)
基址寄存器: DPTR或PC (含16位地址) 变址寄存器: A (含8位地址) 两寄存器内容相加,作为16位存储器地址,在代码空间 访问操作数(常数)或目标地址(转移) 仅有3条这样的指令: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 前两条为查表指令,后一条实现散转。
外部数据传送指令
1 外部RAM的与累加器A之间的数据传送 MOVX A,@DPTR MOVX @DPTR, A MOVX A,@Ri MOVX @Ri,A 前面两条指令可以访问外部RAM的整个64K空 间,地址范围是0000H—FFFFH; 后两条指令可以访问外部RAM任一页中00H— FFH的256个字节,页地址由P2口的锁存器决定。
(SP)+1 → (SP)=27H,(DPL)=13H → (27H) 执行PUSH DPH后:
(SP)+1 → (SP)=28H,(DPH)=02H → (28H) ; 执行结果: 内部RAM(27H)=13H,(28H)=02H,(SP)=28H
正误
PUSH指令的操作数只能是直接寻址,以下 指令是合法的: PUSH ACC POP B PUSH 01H 但下列两条指令是错误的: PUSH A PUSH R1 ACC、B、01H都是直接地址,而A和R1都是寄 存器。
例7-4
设(SP)=62H,内部RAM的60H~62H中的内容分别为20H, 23H,01H,执行下列指令分别有怎样的结果? POP DPH ((SP))=(62H)=01H → (DPH) (SP)-1=62-1=61H → (SP) POP DPL ((SP))=(61H)=23H → DPL (SP)-1=61H-1=60H → SP POP SP (SP)-1=5FH → SP ((SP))=(60H)=20H → SP 结果:(DPTR)=0123H,(SP)=20H 这里第3条指令特殊,其操作为:栈指针(SP)先减1为5FH, 后装入由栈顶弹出的值,最后 (SP)=20H。
(Registor Indirect Addressing) 存储器操作数,地址在寄存器中 寄存器名加前缀 “@”标志
例 MOV A,@R0
R0
片内RAM 00H 3AH
65H
3AH
A
65H
间接寻址空间及范围
存储空间/助记符
内部RAM MOV 扩展RAM MOVX 扩展RAM页 MOVX
间址寄存器
3.RAM,Rn,SFR 之间的数据传送
MOV direct,direct ;(direct) ← (direct)
MOV
MOV MOV MOV
direct,@Ri
;(direct) ← ((Ri)),i取0或1
@Ri, direct ;((Ri)) ← (direct),i取0或1 direct, Rn ;(direct) ← (Rn) Rn, direct ;(Rn) ← (direct),n取0~7
7.1.3 寻址方式(Addressing Mode)
寻找操作数(数据,指令的处理对象)的方式
寄存器寻址 直接寻址 立即寻址 寄存器间接寻址 变址寻址 寻找目标地址(程序流程控制)的方式 相对寻址 绝对寻址 隐含寻址 位寻址
寄存器寻址(Registor Addressing)
寄存器操作数,寻址范围: (1)4组R0 ~ R7共32个工作寄存器 (2)部分特殊Байду номын сангаас能寄存器,例如A、B 以及数 据指针寄存器DPTR等。 例: MOV A,Rn ;(Rn)→A,n = 0~7 MOV B, A
直接寻址(Direct
Addressing)
存储器操作数,其地址直接编码到指令中 寻址范围: (1) 内部RAM的低128个单元(00-7FH) 例 MOV A,40H 超过7FH就到SFR范围 (2) 特殊功能寄存器。 例 MOV A,80H ;地址码形式 MOV A,P0 ;SFR符号形式 两者的机器码完全一致,后者便于记忆。
标号于程序行中,代表指令所在的地址——符号地址; 在指令功能解释阶段不使用标号;
两个操作数的情况比较多,常写成如下:
或
操作码 目的操作数,源操作数 op_code dst,src
寻址方式常用符号说明
Rn------当前组的通用寄存器,n = 0~7 Ri-----0或1,R0或R1作间接寻址寄存器。 direct-----8位内部单元的地址,即直接寻址。 #data,#data16------分别为8位和16位立即数。 addr16-----16位目的地址。 addr11-----11位目的地址。 rel------8位带符号的补码偏移量。 bit----内部RAM可位寻址的位地址。 /——表示取反操作。 (X)---X单元中的内容。 ((X))----以X单元内容为地址的单元的内容。 @---间接寄存器或基址寄存器的前缀。
2.外部ROM向累加器A传送指令 这类指令共有两条.变址寻址,单向传输, 因专用于查表,又称为查表指令,指令的格式为:
MOVC A,@A+PC MOVC A,@A十DPTR
例
把20H~2FH单元中的内容转移到40H~4FH单元中 MOV R0, #20H ;设定源数据块指针 MOV R1, #40H ;设目的数据块指针 MOV R2, #16 ;数据块长度,10进制 LOOP: MOV A, @R0 ;取数 MOV @R1,A ;存数 INC R0 ;指针调整 INC R1 ;指针调整 DJNZ R2,LOOP ;循环控制 LOOP是标号,标记循环的开始地址; DJNZ是循环控制指令,后面才讲到。 思考:如果题目要求变一下,把20H~2FH单元中的内 容转移到28H~37H单元中,应该怎样修改程序?
MOV指令数据传送
5 栈操作指令
进栈指令 PUSH direct ;(SP) ← (SP)+1,((SP)) ← (direct) 功能:堆栈指针SP加1,然后将直接地址direct 单元的内容送到SP所指向的栈顶。 出栈指令 POP direct ; (direct)←((SP)), (SP)← (SP)-1 功能:将SP所指向的堆顶的内容送到直接地址 direct指向的单元中,然后堆栈指针SP减1。
片内RAM 累加器A
88H
3AH
88H
MOV A,3AH
累加器的两种寻址方式
寄存器 A
INC A ;寄存器寻址 特殊功能寄存器Acc(E0H) INC ACC ;直接寻址,名称符号 或 INC 0E0H ;直接寻址,地址码 指令都使累加器中内容加1。但是寻址方式不同, 指令编码字节数也不同。
立即寻址(Immediate
MOV MOV A, direct, #data #data ;(A) ← #data ;(direct) ← #data
MOV
MOV MOV
@Ri,
Rn, DPTR,
#data
#data #datal6
;((Ri)) ← #data
;(Rn) ← #data ;(DPTR) ← #data16
2 累加器A(Rn、RAM、SFR) 之间的数据传送
围绕A设计的指令, 操作数寻址方式有限制
例7-1,7-2
设(R0)=20H,(A)=4EH,(20H)=85H 执行指令:XCH A,@R0, 结果:(A)=85H,(20H)=4EH,实现A与20H单 元内容互换。 设(R0)=30H, (A)=46H,(30H)=85H 执行指令 : XCHD A,@R0 结果:(30H)=86H,(A)=45H,实现了低4位内 容互换,而高4位内容不变。
指令的类别及其要素
数据传送类30条 算术运算类24条 逻辑运算类35条 转移操作类22条 布尔指令类位操作子集
指令的功能 指令的寻址方式 指令对PSW的影响 指令的编码字节数 指令的机器周期
7.1.2 书写格式与缩略语
在程序中行中,指令语句按如下形式书写:
[标号]: 助记符 [操作数1],[操作数2],[操作数3];[注释]
7.2 数据传送类指令
内部数据传送指令(15条) 外部数据传送指令(7条) 堆栈操作指令(2条) 数据交换指令(4条)
使用最频繁的一类指令,通用格式: MOV dst,src 执行后,源操作数保持不变 基本不影响标志位,例外的是 奇偶标志位P 以PSW为dst