2022年单片机技术与实践教案chap2_第1页
2022年单片机技术与实践教案chap2_第2页
2022年单片机技术与实践教案chap2_第3页
2022年单片机技术与实践教案chap2_第4页
2022年单片机技术与实践教案chap2_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章:单片机的指令系统本章重点:时序分析;

延时分析;寻址方式;

MCS-51指令集;伪指令;

51系列单片机指令集含有111条指令每条指令在执行时要花去一定的时间,以机器周期为单位。按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)按指令的功能分类,可分为5大类:数据传送类(28条);算术运算类(24条)逻辑运算及移位类(25条);控制转移类(17条)位操作类(17条)每条指令在程序存储器ROM中占据一定的空间,以字节为单位。按指令所占字节数分类:单字节(49条);双字节(45条);3字节(17条)MCS-51单片机指令系统有如下特点:(1)指令执行时间快。(2)指令短,约有一半的指令为单字节指令。(3)用一条指令即可实现2个一字节的相乘或相除。(4)具有丰富的位操作指令。(5)可直接用传送指令实现端口的输入输出操作。1、时序分析计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作。计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?

要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。51系列单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。XTAL1XTAL2通常外接一个晶振两个电容1MCS-51系列

方式一:利用内部的振荡器,在引脚Xtal1和Xtal2两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30pf左右;这两个电容对频率有微调的作用,晶振的频率范围可在之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。1MCS-51系列XTAL1XTAL2外部时钟信号方式二:是利用外部振荡脉冲接入XTAL1或XTAL2。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。8051外时钟源接法图1MCS-51系列XTAL1XTAL2外部时钟信号方式二:对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。如下图本脚悬空80C51外时钟源接法图目前各大厂商推出的各类单片机产品都采用了CHMOS工艺。80C51系列单片机采用两种半导体工艺生产。一种是HMOS工艺,即高密度短沟道MOS工艺。另外一种是CHMOS工艺,即互补金属氧化物的HMOS工艺。CHMOS是CMOS和HMOS的结合,除保持了HMOS的高速度和高密度的特点之外,还具有CMOS低功耗的特点。例如8051的功耗为630mw,而80C51的功耗只有120mw。在便携式、手提式或野外作业仪器设备上低功耗是非常有意义的。因此,在这些产品中必须使用CHMOS的单片机芯片。回顾内容振荡(时钟)周期

=晶振频率fosc的倒数;1个机器周期

=6个状态周期;=12个振荡周期(时钟周期);1个指令周期

=1、2、4个机器周期P1P2S1振荡(时钟)周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2状态周期

通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:·单字节指令单机器周期;单字节指令双机器周期;

·双字节指令单机器周期;双字节指令双机器周期;

·三字节指令双机器周期;

·单字节指令四机器周期(如单字节的乘除法指令)图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效。1个机器周期ALE单字节单周期指令例:INCAALE1个机器周期单字节单周期指令:

单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。双字节单周期指令例:ADDA,DATA双字节单周期指令:

这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。ALE单字节双周期指令:

两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。

ALE单字节双周期指令例:INCDPTR若MCS-51单片机外接晶振为fosc=12MHz时,则单片机的四个周期的具体值为:Tosc=振荡周期=1/12MHz=1/12μs=Tcy=机器周期=振荡周期*12=1μs指令周期=1~4μs在MCS-51指令系统中,单字节、双字节指令占绝大多数,三字节指令很少(13条)。单字节或双字节指令可能是单周期或双周期的,三字节指令是双周期的,乘除指令是四周期的,因此,振荡频率为12MHz时,指令执行时间分别为1μs、2μs、4μs。在MCS-51指令中,一般指令主要由操作码、操作数组成。指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地址。(3)指定操作结果存放的地址。2、指令格式单字节指令操作码和操作数在同一个字节中。双字节指令前一个字节为操作码,后一个字节为操作数。三字节指令前一个字节为操作码,后两个字节为操作数。指令描述符号介绍

Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。

Ri——当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。

direct——8位的内部数据存储器单元中的地址。

#——表明其后跟的是立即数(就是数字量本身),有8位、16位常数。addr16——16位目的地址。

addr11——11位目的地址。rel——8位带符号的偏移字节,简称偏移量。DPTR——

数据指针,可用作16位地址寄存器。bit——内部RAM或专用寄存器中的直接寻址位。A——

累加器。B——

专用寄存器,用于乘法和除法指令中。C——

进位标志或进位位,或布尔处理机中的累加器。@——寄存器间接寻址或基址寄存器的前缀,如@Ri,@DPTR。

/——

位操作数的前缀,表示对该位数操作取反,如/bit。

(×)——

片内RAM的直接地址或寄存器。((×))——

由×寻址的单元中的内容。

——箭头左边的内容被箭头右边的内容所代替。

——箭头右边的内容被箭头左边的内所代替。、延时分析观察仿真教学练习1\单灯亮灭概念1下的仿真实验例题LJ20080304。结果有两个问题:第一,计算机执行指令的时间很快,执行完后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完后,跳转再去执行指令,结果闪烁不定(又称余辉或鬼影)。(实物与仿真效果差别)、解决方案为了解决这两个问题,我们可以做如下设想,第一,在执行完后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为“循环”,这样就可以完成任务了。

、程序分析;主程序:LOOP:SETBP1.0引脚灯灭

LCALLDELAY

;延时

CLRP1.0引脚灯亮

LCALLDELAY

;延时

AJMPLOOP

;跳转;以下是延时子程序DELAY:MOVR7,#250

;工作寄存器R7赋值D1:MOVR6,#250

;工作寄存器R6赋值D2:DJNZR6,D2;R6如果不等于0,就转移至D2

DJNZR7,D1;R7如果不等于0,就转移至D1

RET

;子程序返回指令

END

;程序结束指令LED亮灭有定之观察实例:仿真教学练习1\单灯亮灭概念DELAY:MOVR7,#250;将250传送至R7

D1:MOVR6,#250;将250传送至R7

D2:DJNZR6,D2;原地转圈250次

DJNZR7,D1;

RET

指令分析:MOV:意思是传递数据。从指令MOVRi,#250中来分析,Ri是一个接受者,250是被传递的数。(i=6、7)DJNZ:指令的执行过程,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移至第二个参数所指位置。最终DJNZR6,D2指令将被执行250*250=62500次我们来计算刚才的延时,首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。要点分析:1、一个单元中的数是否可以超过255;2、如何分配两个数。、延时估算在单片机的控制应用中,常有延时的需要,CPU过一段时间再去作某件事情,称之为延时。延时有两种方法,即软件延时和硬件延时.硬件延时是通过定时/计数器来实现的,这种方法不占用CPU的工作时间。软件延时一般采用循环程序,通过CPU执行一个具有固定延迟时间的循环体来实现的。、延时精确计算过程延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后,则主要是如何设计与计算需给定的延时循环次数。设单片机的晶振频率为6MHz,则一机器周期为2us;设单片机的晶振频率为12MHz,则一机器周期为1us;汇编语言常用延时程序所用到的指令指令占用的机器周期数MOVRn,#Data

1DJNZRn,Rel

2RET2NOP1ACALLAddr112LCALLAddr162ADDA,Ri1INCDPTR2用得最多的延时指令基本延时程序模式及延时时间的计算分以下几种情况:1、单循环延时程序DEL2:

MOVR0,#X

;1周期DEL1:

DJNZR0,DEL1;2周期

RET;2周期延时时间=2*X*T+1*T+2*T=(2X+3)T整个程序的延时时间范围为:5us<=t<=1030us;以晶振频率6MHz为例延时时间的范围的计算设X是装入寄存器R0的时间常数,R0是8位寄存器(以下的R1、R2、Ri均为8位),因为0<=R0<=255,R0=0,延时时间最长,R0=1,延时时间最短。当Ri=0时,由汇编语言的特征知其将从零开始判断,共256次,所以应在公式中代入256,因此这个程序的最长定时时间为1030us。2、双重循环延时程序:DEL3:

MOVR1,#Y;1周期DEL2:

MOVR0,#X;1周期DEL1:

DJNZR0,DEL1;2周期

DJNZR1,DEL2;2周期

RET;2周期延时时间=(2*X+1+2)*Y*T+1*T+2*T=(2XY+3)T整个程序的延时范围为:12us<=t<=263668us;3、三重循环延时程序DEL4:

MOVR2,#Z;1周期DEL3:

MOVR1,#Y;1周期DEL2:

MOVR0,#X;1周期DEL1:

DJNZR0,DEL1;2周期

DJNZR1,DEL2;2周期

DJNZR2,DEL3;2周期

RET;2周期延时时间=[(2*X+1+2)*Y+1+2]*Z*T+1*T+2*T=(2XYZ+3YZ+3Z+3)T整个程序的延时时间范围为:练习1:设计一个延时100微秒的程序设单片机的晶振频率为12MHz,则一机器周期为1us,打算延时100us,只要用下面的代码,就可以满足一般的需要:

MOVR0,#049;1周期Loop:DJNZR0,loop;2周期

RET;2周期一个周期=1us。上述程序延时时间=2*49*1+1*1+2*1=101us若将立即数的值改为048,则延时时间为=99us简单:MOVR0,#048;1周期

NOP;1周期Loop:DJNZR0,Loop;2周期

RET;2周期说明:延时精确调整可用NOP空操作指令进行调控,该指令机器周期为1.如何精确到100us呢???????????搞定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!练习1:设计一个延时100毫秒的程序练习2:设计一个延时1秒的程序立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址(基址寄存器+变址寄存器间接寻址)相对寻址位寻址寻址方式:指令按地址获得操作数的方式七种寻址方式,一条指令可能含多种寻址方式。4、单片机指令的寻址方式1、立即寻址指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。例如:MOV

A,#60H ;A←#60HMOV

DPTR,#3400H;DPTR←#3400HMOV

30H,#40H;30H单元←#40H上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。注意:符号“#”表明其后跟的是立即数,

立即数——就是数字量本身。2、直接寻址 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。例如:MOVR1,1FH;(R1)←(1FH)

MOV30H,4AH;(30H)←(4AH)在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。例如:MOVA,SP;(A)←(SP)MOVA,81H;(A)←(SP)MOVP1,#5AH;(P1)←(#5AH)MOV90H,#5AH;(P1)←(#5AH)MOVB,30H;(B)←(30H)相同相同3、寄存器寻址 以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及R0~R7

。从寄存器中读取操作数或存放操作数进寄存器例如:CLR A ;A←0INC DPTR ;(DPTR)←(DPTR+1)ADD R5,#20H ;(R5)←(R5+#20H)MOVA,B;(A)←(B)

MOV30H,R0;(30H)←(R0)

MOVA,R1;(A)←(R1)4、寄存器间接寻址寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,

DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。注意:1)“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。2)符号“@”表示“在…”,其含义与读音皆同“at”。例如:MOV@R0,A;内部RAM(R0)←A

其指令操作过程示意图如图3-1所示。

片内RAM30HR034HA30H34H图3-1MOV@R0,A间接寻址示意图R0指定存贮地址又如:MOVXA,@R1;A←外部RAM(P2R1)

其指令操作过程示意图如图3-2所示。片外RAM34HP245HA3410H45H10HR1图3-2MOVXA,@R1间接寻址示意图

生成地址再如:MOVX@DPTR,A;外部RAM(DPTR)←A

其指令操作过程示意图如图3-3所示。片外RAM2000HDPTR30HA2000H30H图3-3MOVX@DPTR,A间接寻址示意图5、变址寻址 变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图3-4所示)。例如:MOVCA,@A+DPTR;A←(A+DPTR)[设:A中已存有#10H,DPTR中已存有#2000H]操作:将10H+2000H=2010H单元中的数放进累加器A又如,MOVCA,@A+PC;A←(A+PC)这条指令与上条指令不同的是,基址寄存器是PC。相对寻址

以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。

SJMPrel

操作:跳转到的目的地址=当前16位PC值+rel

注意:1)“当前PC值”指程序中下一条指令所在的首地址,是一个16位数;2)符号“rel”表示“偏移量”,是一个带符号的单字节数,范围是:-128—+127(80H—7FH),程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H例如,SJMP08H;PC←PC+2+08H

图3-5相对寻址示意图位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。指令中直接给出了操作数所在的位地址。例如:SETB10H;将10H位置1若22H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H。又如:MOV32H,C;32H←进位位CORLC,32H;C←C∨32H分类指令

数据传送类指令算术运算类指令逻辑运算与循环类指令程序转移类指令调用子程序及返回指令位操作指令空操作指令数据传送类指令数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内数据传送途径如图3-6所示。直接地址direct累加器A直接地址direct间接地址@Ri寄存器Rn立即数#data寄存器DPTR图3-6MCS-51单片机片内数据传送图1.以A为目的操作数MOVA,Rn ;A←RnMOVA,direct;A←(direct)MOVA,@Ri ;A←(Ri)MOVA,#data;A←#data例:MOVA,R1 MOVA,10HMOVA,@R1 MOVA,#30H2.以Rn为目的操作数MOVRn,A ;Rn←AMOVRn,direct;Rn←(direct)MOVRn,#data ;Rn←#data例:MOVR1,A MOVR1,10HMOVR1,#10H3.以直接地址为目的操作数MOVdirect,A;(direct)←AMOVdirect,Rn;(direct)←(Rn)MOVdirect1,direct2;(direct1)←(direct2)MOVdirect,@Ri;(direct)←(Ri)MOVdirect,#data;(direct)←#data4.以间接地址为目的操作数MOV@Ri,A ;(Ri)←AMOV@Ri,direct ;(Ri)←(direct)MOV@Ri,#data ;(Ri)←#data例如:设(30H)=6FH,R1=40H,执行MOV@R1,30H后,30H单元中数据取出6FH送入R1间接寻址的40H单元,(40H)=6FH。5.以DPTR为目的操作数MOVDPTR,#data16;DPTR←#data16例如执行MOVDPTR,#2000H后,(DPTR)=2000H。6.访问外部数据RAM

MOVXA,@DPTR ;A←(DPTR)MOVX@DPTR,A ;(DPTR)←AMOVXA,@Ri ;A←(P2Ri)MOVX@Ri,A ;(P2Ri)←A8.数据交换l

字节交换XCHA,Rn ;A<=>RnXCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri)l

半字节交换XCHDA,@Ri ;A0~3<=>(Ri)0~3SWAPA ;A0~3<=>A4~79.堆栈操作所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令:

PUSHdirect;SP←(SP+1),(SP)←(direct)

POP direct;(direct)←(SP),SP←SP-1PUSH是进栈(或称为压入操作)指令。指令执行过程如图3-7所示。片内RAM30H11H10HSP××片内RAM50H40H11H10HSP××40H30H片内RAM50H40H11H10H50H××SP30H片内RAM40H11H10H34H××SP30H34H34H××××执行前执行前执行前PUSH指令后执行POP指令后图3-7指令PUSH操作示意图图3-8指令POP操作示意图【例3.1】将片内RAM30H单元与40H单元中的内容互换。方法1(直接地址传送法):

MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2(间接地址传送法):

MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $方法3(字节交换传送法):

MOV A,30HXCH A,40HMOV 30H,A

方法4(堆栈传送法):

PUSH 30HPUSH 40HPOP 30HPOP 40H

算术运算类指令

1.加法指令ADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data;A←A+#data2.带进位加指令ADDCA,Rn ;A←A+Rn+CADDCA,direct;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data;A←A+#data+CC为来自PSW状态寄存器中的进位位C。例如,设A=20H,R0=21H,C=1,执行指令ADDC

A,R0后,A=42H。3.带借位减指令SUBBA,Rn ;A←A-Rn-CSUBBA,direct;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data;A←A-#data–C例如,设A=39H,R0=20H,(20H)=32H,C=1,执行指令SUBBA,@R0后,A=06H。4.乘法指令MULA,B ;BA←A×BA和B中各存放一个8位无符号数,指令执行后,16位乘积的高8位在B中,低8位存A中。例如,A=30H,B=60H,执行MULAB后,A=00H,B=12H。

5.除法指令

DIVA,B;A÷B→商在A中,余数在B中

A和B中各存放一个8位无符号数,A放被除数,B放除数。指令执行后,A中存放商,B中存入余数。若B=00H,则指令执行后OV=1,A与B不变。例如,A=30H,B=07H,执行DIVAB后,

A=06H,B=06H。6.加1指令INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect;(direct)←(direct)+1INC@Ri ;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1例如,(30H)=22H,执行INC30H后,(30H)=23H。7.减1指令DECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-1例如,R0=30H,(30H)=22H,执行DEC@R0后,(30H)=21H。8.十进制调整指令DAA

;把A中按二进制相加的结果调整成按BCD码相加的结果。例如,A=65BCD,B=78BCD,C=0,执行下列语句ADD A,BDA A后,A=43BCD,C=1。【例3.2】试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。解:参考程序如下:

MOV A,R2;取第一个数的低8位

ADD A,R4;两数的低8位相加

MOV R6,A;保存和的低8位

MOV A,R1 ;取第一个数的高8位

ADDC A,R3 ;两数的高8位相加,并把低8位相加时的进位位加进来

MOV R5,A ;把相加的高8位存入

R5寄存器中

SJMP$1.“与”操作指令2.“或”操作指令3.“异或”操作指令4.求反与清除指令5.移位指令逻辑运算类指令逻辑与(ANL),逻辑或(ORL),逻辑异或(XRL):累加器清零/取反操作(CLR,CPL——2条)CLRA——对累加器清零1Byte1个TmCPLA——对累加器按位取非1Byte1个Tm指令形式ByteTmANL(ORL,XRL)direct,A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21ANL(ORL,XRL)A,direct21ANL(ORL,XRL)A,@Ri11ANL(ORL,XRL)A,Rn11逻辑运算指令的常见用法逻辑与ANL用于清0或者保留某些位:例:ANLA,#0FH;则(A)=0AH(已知累加器A中已存有数:9AH)逻辑或ORL用于置1或者保留某些位:例:ORLA,#0FH;则(A)=9FH逻辑异或XRL用于取反或者保留某些位:例:XRLA,#0FH;则(A)=95H(A)

10011010#0FH

0000111195H

10010101逻辑运算及移位类指令累加器移位操作:(RL,RLC,RR,RRC——4条)RLA左环移累加器A累加器ACy累加器ACy累加器ARRCA带进位位右环移RRA右环移RLCA带进位位左环移控制转移类指令无条件转移:LJMP,AJMP,SJMP,JMP——4条LJMPaddr16长跳转指令

——可在64K范围内跳转AJMPaddr11绝对跳转指令

——可在指令所在的2K范围内跳转SJMPrel相对跳转指令

——可在当前PC-128与+127范围内跳转JMP@A+DPTR间接长跳转指令

——可在以DPTR为基址+A为偏移量之和所指向的64K程序范围内跳转控制转移类指令条件转移:JZ,JNZ,CJNE,DJNZ——8条JZrelJNZrel——根据Acc的内容是否为0决定是否跳转DJNZ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论