




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用技术单片机原理及MCS–51程序设计交通信号灯模拟系统设计任务一MCS-51指令系统入门任务二
指令系统任务三
汇编语言程序设计基础任务四
典型应用——交通信号灯模拟
系统设计ProjectMCS–51程序设计交通信号灯模拟系统设计任务一MCS-任务1MCS-51指令系统入门任务1MCS-51指令系统入门指令系统概述one由于单片机的硬件只能识别二进制数,因此最初的指令采用二进制表示,后来用八进制和十六进制表示,这些都称为机器语言。机器语言不易理解,不易记忆,编制程序容易出错。为了便于阅读和书写,一些厂商根据指令功能和操作对象的不同,给出不同指令的英文缩写符号,称为助记符。用助记符表示的指令称为汇编语言指令。我们将要学习的就是这种指令,需要注意的是,汇编语言指令不能直接运行,它要翻译为机器语言指令后才能运行。指令是单片机能够识别和执行的命令,一个单片机能够执行的全部指令的集合称为这个单片机的指令系统。提示单片机的指令系统由其生产厂商定义,因此,不同的单片机具有不同的指令系统。指令系统概述one由于单片机的硬件只能识别二进制数,因此最初指令格式two一条指令通常由操作码和操作数两部分组成。操作码表示本条指令所要执行的操作,操作数则表示本条指令的操作对象。指令格式如下:操作码[操作数1],[操作数2],[操作数3]操作码和操作数之间必须空一个格,操作数之间用逗号“,”隔开。操作码一般使用2~5个英文字母的助记符表示,如JC,MOV,SUBB等。在不同的指令中,操作数的数量从0~3个不同。它可以是一个数据,也可以是一个地址或寄存器符号。指令格式two一条指令通常由操作码和操作数两部分组成。操作码指令格式two在MCS-51系统中采用变长指令,对于不同类型的指令,或者相同指令的操作数类型不同,其长度是可变的,因此,MCS-51指令为变长指令。大部分指令的长度为1~3个字节。提示对于双操作数指令来说,一般操作数1是目的操作数,操作数2是源操作数。采用RISC的单片机,每条指令的长度相同,如ARM芯片全部指令都是32位的。指令格式two在MCS-51系统中采用变长指令,对于不同类型指令中常用符号three符号含义A累加器ACCB寄存器BRi寄存器间接寻址的寄存器(i=0或1)Rn当前工作寄存器R0~R7的一个bit具有位寻址功能的位地址rel用补码形式表示的偏移量,范围为-128~+127#data指令中的8位立即数,即00H~FFH#data16指令中的16位立即数,即0000H~FFFFHaddr1111位的目的地址,只限于ACALL和AJMP中使用addr1616位的目的地址,只限于LCALL和LJMP中使用direct8位片内RAM的00H~7FH地址范围和SFRMCS-51系列单片机指令中常用助记符及含义指令中常用符号three符号含义A累加器ACCB寄存器BRi符号含义(X)X的内容((X))以X的内容为地址的内容/加在位地址之前,表示对该位取反#立即数前缀@间址寄存器前缀$程序计数器PC的当前值←箭头右面的数据传送到箭头左面∧逻辑与运算∨逻辑或运算⊕逻辑异或运算@DPTR16位片外数据指针,范围为0000H~FFFFH续上表符号含义(X)X的内容((X))以X的内容为地址的内容/加在指令分类fourMCS-51系列单片机指令系统共有111条指令,可分为以下5大类。数据传送类指令(29条)算数运算类指令(24条)逻辑运算类指令与位移指令(24条)控制转移类指令(17条)位操作指令(17条)指令分类fourMCS-51系列单片机指令系统共有111条指寻址方式five大部分指令都需要使用操作数,在执行指令过程中,去何处取得操作数是需要解决的问题,寻找操作数地址的方式就称为寻址方式。源操作数和目的操作数都存在寻址问题。在MCS-51系列单片机中设有7种寻址方式,即立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。寻址方式越丰富,CPU功能越强,灵活性就越大,处理数据的效率也就越高。寻址方式five大部分指令都需要使用操作数,在执行指令过程中寻址方式相应寻址空间立即寻址程序存储器ROM直接寻址片内RAM寄存器寻址R0~R7、A、B、DPTR等寄存器间接寻址片内RAM中00H~7FH区间及片外RAM变址寻址程序存储器ROM相对寻址以当前PC值为基址,偏移范围-128~+127字节的ROM位寻址片内RAM位寻址区20~2FH及部分SFR寻址方式的设定与单片机的存储空间有关,MCS-51单片机不同寻址方式对应不同的寻址空间,如表所示。MCS-51系列单片机寻址方式所对应寻址空间寻址方式相应寻址空间立即寻址程序存储器ROM直接寻址片内RA1)立即寻址立即寻址是指在指令中直接给出参加运算的操作数的寻址方式。这种形式的操作数称为立即数。为了与直接寻址指令中的直接地址相区别,立即数前面要加“#”标志。【例3-1】编号汇编语言指令机器语言指令功能aMOVA,#40H7440H(A)←40HbMOVDPTR,#4000H904000H(DPTR)←4000H立即寻址方式如表所示:提示MCS-51指令表中可以查到指令a的机器码为74Hdata,指令b的机器码为90Hdata。1)立即寻址立即寻址是指在指令中直接给出参加运算的操作数的寻项目三寻址方式的例子中均假设PC初值为40H,立即寻址方式具体操作如图所示:A…4074ROMPC40H…DPTR0040ROM90DPHDPLPC40H提示立即数是指令的一部分,存放在程序存储器ROM中。在8051单片机的指令系统中,仅有一条指令MOVDPTR,#X的操作数是16位的立即数。(a)MOVA,#40H(b)MOVDPTR,#4000H项目三寻址方式的例子中均假设PC初值为40H,立即寻址方式具2直接寻址直接寻址是指在指令中直接给出操作数地址的寻址方式。指令中出现的是操作数的地址(指令表中以“direct”标识),此单元地址中的内容才是实际参与运算或操作的操作数。在8051系列单片机中,CPU通过直接寻址方式可以访问片内RAM区间00H~FFH共128单元(包括位寻址区20H~2FH)以及特殊功能寄存器SFR。【例3-2】编号汇编语言指令机器语言指令功能aMOVA,60HE560H(A)←(60H)bMOVA,88HE588H(A)←(88H)cMOVA,TCONE588H(A)←(88H)编号汇编语言指令机器语言指令功能直接寻址方式如表所示:2直接寻址直接寻址是指在指令中直接给出操作数地址的寻址方在项目二中,我们知道定时器控制字TCON的地址是88H单元。所以编号b和编号c两条指令的表述是等价的,翻译为机器指令后是相同的。自然,其执行结果也相同,即将88H单元的内容送累加器A。…XX片内RAM60H41HAPC40HROM…60E588HTCONSFR41HPC40HROM…88E5A…(a)MOVA,60H(b)MOVA,88H/MOVA,CON直接寻址方式具体操作如图所示:提示对于SFR,可以采用16进制的地址形式表示,也可以用它们各自的名称符号来表示,以增强程序的可读性。在项目二中,我们知道定时器控制字TCON的地址是88H单元。3寄存器寻址寄存器寻址是指以指令中寄存器的内容作为操作数的寻址方式。指令中用寄存器的名字来表示实际参与运算或操作的操作数的地址。这些寄存器有工作寄存器R0~R7、累加器A、通用寄存器B、数据指针DPTR、进位Cy等。【例3-3】寄存器寻址方式如表所示:编号汇编语言指令机器语言指令功能aMOVA,R011101000(E8H)(A)←(R0)bINCR300001011(0BH)(R3)←(R3)+13寄存器寻址寄存器寻址是指以指令中寄存器的内容作为操作数指令a(MOVA,R0)中,目的操作数与源操作数均采用寄存器寻址方式,该指令二进制形式的低三位000是Rn寄存器编码;指令b(INCR3)只有一个操作数,指令执行加1操作。指令a的具体操作如图所示,指令b的原理相同:XXPC40HROM11101000AR1001R0000…R7111…寄存器寻址示意图指令a(MOVA,R0)中,目的操作数与源操作数均采用寄存4寄存器间寻址寄存器间接寻址是指以指令中寄存器的内容作为操作数地址的寻址方式。寄存器中存放的不是操作数本身,而是操作数的地址。寄存器Ri(i=0或1)和DPTR用于寄存器间接寻址。采用寄存器间址寻址方式时,在寄存器前加“@”符号,以便区分于寄存器寻址方式。对片内RAM的低128个字节(00~7FH)进行访问时,通常使用Ri作为间址寄存器。通过项目一的学习我们知道,R0和R1均为8位寄存器,寻址范围可以达到28字节即256字节。对片外RAM的64K存储空间进行访问时,应该使用DPTR作为间址寄存器。DPTR是一个16位寄存器,寻址范围可以达到64K。4寄存器间寻址寄存器间接寻址是指以指令中寄存器的内容作为【例3-4】编号汇编语言指令机器语言指令功能aMOVA,@R111100111(E7H)(A)←((R1))bMOVXA,@DPTR11100000(E0H)(A)←((DPTR))寄存器间址寻址方式如表所示:两条指令寻址过程类似,这里只以其中一条为例。假设R1中内容为60H,指令a的具体操作如图所示:寄存器间接寻址示意图PC40H…ROM1110011160…R1…A60H…片内RAMXX提示不能通过寄存器间接寻址方式访问特殊功能寄存器SFR。【例3-4】编号汇编语言指令机器语言指令功能aMOVA,5变址寻址变址寻址方式是指以某个寄存器的内容为基本地址,在基本地址的基础上加上地址偏移量后,才能得到真正的操作数地址的寻址方式。在MCS-51系列单片机中,数据指针DPTR和程序计数器PC作为基址寄存器,累加器A用来存放地址偏移量。【例3-5】变址寻址方式如表所示:编号汇编语言指令机器语言指令功能aMOVCA,@A+PC83H(A)←((A)+(PC))bMOVXCA,@A+DPTR93H(A)←((A)+(DPTR))cJMP@A+DPTR73H(PC)←((A)+(DPTR))注意在MCS-51系统中变址寻址的指令只有上表中的3条,只用来对ROM寻址。前2条指令主要用于查表操作,第3条是无条件转移指令。PC的值是随程序的执行情况自动改变的,我们不可以随便地给PC赋值,累加器A是一个8位的寄存器,因此指令a的寻址范围是在当前指令下的256个地址单元。5变址寻址变址寻址方式是指以某个寄存器的内容为基本地址,当前PC的内容为40H,CPU到40H单元取出指令83H后,将PC中的内容0040H与A中内容20H送ALU相加(同时PC指向下一条将要执行的指令),相加得到的结果60H即为我们所要寻找的操作数的地址。随后,60H地址单元的内容被送往累加器A,整条指令完成。我们假设累加器A的内容为20H,指令a的具体操作如图所示:寄存器寻址示意图XX60H83HPCA0040H40H………ROM20HALU当前PC的内容为40H,CPU到40H单元取出指令83H后,6相对寻址相对寻址是指以当前PC内容加上指令中给出的相对偏移量形成程序转移的目的地址的寻址方式。这种寻址方式专为实现程序的跳转功能而设计。指令的操作数部分给出的是地址的相对偏移量,在MCS-51系列单片机中常以“rel”表示。它是一个带符号的8位二进制补码数,可正可负,范围是-128~+127,向地址小的方向转移时为负,向地址大的方向转移时为正。【例3-6】编号汇编语言指令机器语言指令功能aSJMP04H8004H(PC)←(PC)+2+04HbJZrel60rel若A≠0时,(PC)←(PC)+2若A=0时,(PC)←(PC)+2+rel相对寻址方式如表所示:6相对寻址相对寻址是指以当前PC内容加上指令中给出的相对在指令a中,我们可以看到,PC的当前值加上地址偏移量04H构成了程序跳转的目的地址。需要注意的是,这里所说的PC的当前值是指执行完本条转移指令后的PC值,即PC值加上该指令字节数2。指令b是一条条件转移指令,以累加器A的内容是否为0作为判断条件。为了方便区分,这里将PC的源地址记作PC源,取出本条指令后PC的值记为PC当前,最后形成的目的地址记为PC目的。指令a的具体操作如图所示:相对寻址示意图注意我们人工计算目的地址时,会采用公式PC目的=PC源+指令所占字节数+rel。从图3-6中可知,实际上CPU在取出2个字节的指令码后,PC指针已经指向了PC当前的位置,因此,在机器运算中PC目的是由PC当前和rel直接相加得到的。rel=04HPC当前=0042HPC目的0046HPC当前0042H0041HPC源
0040H…0480ROM…ALU在指令a中,我们可以看到,PC的当前值加上地址偏移量04H构7位寻址位寻址是指对位寻址空间按位进行寻址的操作,指令表中以“bit”表示。在进行位操作处理时,一般借助进位位Cy作为位操作累加器C。MCS-51系列芯片中有以下两个位寻址区。11个特殊功能寄存器SFR分布在RAM的80~FFH地址单元,它们的地址单元均能被8整除。具体分布情况参见表2-4。片内RAM的位寻址区地址范围是20~2FH,共128位,每一位都可以作为独立操作数。具体分布情况参见表2-3。7位寻址位寻址是指对位寻址空间按位进行寻址的操作,指令表(1)直接用物理地址00H~FFH来表示MCS-51系列芯片中有以下四种位地址表示方式:【例3-7】MOVC,2BH指令含义是将位地址为2BH的位内容送Cy。2BH是位地址的物理形式,表示片内RAM25H单元的D3位。位寻址方式是位操作指令专用的,不必担心位地址会与直接寻址中的地址混淆。技巧(1)直接用物理地址00H~FFH来表示MCS-51系列芯片(2)采用地址单元加位数的表示方法。上面的指令可以改写为:MOVC,2BH.3(3)对于SFR可以采用寄存器名加位数的表示方法。(4)采用伪指令定义方式。详见任务三汇编语言程序设计基础中的伪指令部分。【例3-8】MOVC,P3.4,指令含义是将并行接口P3口的D4位内容送Cy。(2)采用地址单元加位数的表示方法。上面的指令可以改写为:M任务2指令系统任务2指令系统数据传送类指令one根据这些指令作用的不同,将其分为内部数据传送指令、外部数据传送指令、访问程序存储器指令、堆栈操作指令和数据交换指令5类。“传送”是指将源地址单元内容送到目的单元中去,数据传送后,源地址单元内容保持不变;“交换”是指将源地址单元内容和目的地址单元内容互换。数据传送类指令中,执行目的操作数为A或对A进行单独操作的指令后,会影响PSW中奇偶标志位P。其他情况不影响标志位。数据传送类指令是编程时使用最多的指令。MCS-51系列单片机数据传送指令共有29条,用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH和POP共8种。数据传送类指令one根据这些指令作用的不同,将其分为内部数据1内部数据传送指令内部数据传送指令共16条,助记符均为“MOV”,英文为“Move”。(1)以累加器A为目的操作数的传送指令编号指令格式机器语言指令功能字节数指令周期数aMOVA,RnE8~EF(A)←(Rn)11bMOVA,directE5direct(A)←(direct)21cMOVA,@RiE6~E7(A)←((Ri))11dMOVA,#data74data(A)←data211内部数据传送指令内部数据传送指令共16条,助记符均为“指令a和指令c源操作数分别采用寄存器寻址和寄存器间接寻址方式。由指令的机器语言形式可以看出,这两条指令占用字节数较少,都为1字节;指令b和指令d分别采用直接寻址和立即寻址方式,两条指令都占2个字节数。上述4条指令的指令周期数都为1个机器周期。指令a中,n=0~7,机器语言E8~EF分别对应源操作数为R0~R7的指令;指令c中,i=0或1,机器语言E6~E7对应源操作数为@R0和@R1的指令。指令a和指令c源操作数分别采用寄存器寻址和寄存器间接寻址方式【例3-9】以累加器A为目的操作数的传送指令示例MOV A,R3;将工作寄存器R3内容送A,A中内容保持不变MOV A,40H;将30H地址单元的内容送A,30H地址单元的内容保持不变MOV A,@R0;以R0的内容为地址,将找到的地址单元中的内容送A。该地址单元的内容及R0的内容均保持不变MOV A,#66H;将立即数66H送A,本条指令执行完成后,A中内容为66H【例3-9】以累加器A为目的操作数的传送指令示例MOV A,(2)以寄存器Rn和DPTR为目的操作数的传送指令编号指令格式机器语言指令功能字节数指令周期数aMOVRn,#data78~7Fdata(Rn)←data21bMOVRn,directA8~AFdirect(Rn)←(direct)22cMOVRn,AF8~FF(Rn)←(A)11dMOVDPTR,#data1690dataHdataL(DPH)←dataH(DPL)←dataL32以寄存器Rn为目的操作数的传送指令共3条,以操作数为DPTR的指令有1条。4条指令如表所示。(2)以寄存器Rn和DPTR为目的操作数的传送指令编号指令格指令a、指令b和指令c中源操作数分别采用立即寻址、直接寻址和寄存器寻址方式。这3条指令的功能是将最终获得的8位数据送当前工作寄存器Rn。【例3-10】以寄存器Rn为目的操作数的传送指令示例MOVR0,#68H;将立即数68H送R0,指令执行完成后,R0中内容为68HMOV R1,40H;将40H地址单元的内容送R1,40H地址单元的内容保持不变MOV R2,A;将累加器A中内容送R2,A中内容保持不变注意工作寄存器Rn之间不能直接传送数据,如“MOVRn,Rn”和“MOVRn,@Rn”都是错误的。要在工作寄存器之间传递数据,可以由累加器A作为中介。指令a、指令b和指令c中源操作数分别采用立即寻址、直接寻址和指令d是MCS-51指令系统中唯一一条16位的立即数传送指令。它的功能是将16位的立即数#data16送数据指针DPTR,其中高8位dataH送DPH,低8位dataL送DPL。【例3-11】三字节双周期指令示例MOV DPTR,#2046H ;将16位的立即数送DPTR。MOV DPH,#20H ;数据的高8位20H送DPH。MOV DPL,#46H ;数据的低8位46H送DPL。实际上,本条指令的执行过程相当于执行以下两条8位数据传送指令。指令d是MCS-51指令系统中唯一一条16位的立即数传送指令(3)以直接地址direct为目的操作数的传送指令编号指令格式机器语言指令功能字节数指令周期数aMOVdirect,#data75directdata(direct)←data32bMOVdirect,AF5direct(direct)←(A)21cMOVdirect,Rn88~8Fdirect(direct)←(Rn)22dMOVdirect,@Ri86~87direct(direct)←((Ri))22eMOVdirect1,direct285direct1,direct2(direct1)←(direct2)32以直接地址direct为目的操作数的传送指令共5条,这里需要注意的是direct的地址范围是片内RAM的00~7FH地址单元和SFR地址单元。5条指令具体情况如表所示:(3)以直接地址direct为目的操作数的传送指令编号指令格上述5条指令均是8位数送direct。指令e的源操作数和目的操作数均为直接寻址方式。由此我们可以知道,片内RAM之间的数据可以直接传送,而不必以累加器A为中介。注意direct的地址范围并不是00~FFH。在表1-5中我们已经知道片内RAM的80~FF地址单元并没有完全定义,对未定义的地址单元进行存取和访问,会得到不确定的数,建议用户不要使用。上述5条指令均是8位数送direct。指令e的源操作数和目的【例3-12】以直接地址direct为目的操作数的传送指令示例MOV80H,#68H;将立即数68H送片内RAM的80H地址单元。并行接口P0端口的物理地址为80H,指令执行完成后,P0端口的内容为68H。MOV 20H,A;将累加器A的内容送片内RAM的20H地址单元,指令执行完成后,20H地址单元内容与A中内容相同MOV 30H,R4;将工作寄存器R4的内容送片内RAM的30H地址单元。MOV 40H,@R0;以R0的内容为地址,将找到的地址单元中的内容送片内RAM的40H地址单元MOV E0H,80H;将P0端口的内容送累加器A(累加器A的物理地址为E0H)【例3-12】以直接地址direct为目的操作数的传送指令示(4)以寄存器间址@Ri为目的操作数的传送指令编号指令格式机器语言指令功能字节数指令周期数aMOVRn,#data78~7Fdata(Rn)←data21bMOVRn,directA8~AFdirect(Rn)←(direct)22cMOVRn,AF8~FF(Rn)←(A)11dMOVDPTR,#data1690dataHdataL(DPH)←dataH(DPL)←dataL32以寄存器间址@Ri为目的操作数的传送指令共3条,如表所示。三条指令的功能均是把源操作数所指定的内容送Ri所指向的地址单元。(4)以寄存器间址@Ri为目的操作数的传送指令编号指令格式机【例3-13】以寄存器间址@Ri为目的操作数的传送指令示例MOV@R0,#68H ;将立即数68H送工作寄存器R0所指向的地址单元MOV@R0,68H;将片内RAM的68H地址单元的内容送工作寄存器R0所指向的地址单元MOV@R1,A;将累加器A的内容送工作寄存器R1所指向的地址单元【例3-13】以寄存器间址@Ri为目的操作数的传送指令示例M编号指令格式机器语言指令功能字节数指令周期数aMOVX@Ri,AF2~F3((Ri))←(A)12bMOVXA,@RiE2~E3(A)←((Ri))12cMOVX@DPTR,AF0((DPTR))←(A)12dMOVXA,@DPTRE0(A)←((DPTR))122
外部数据传送指令MCS-51系列单片机指令系统中,外部数据传送指令共4条,用于和外部数据存储器之间传送数据。助记符均为“MOVX”,来自英文“MoveExternalRAM”。指令如表所示:编号指令格式机器语言指令功能字节数指令周期数aMOVX@由上表我们可以看出,与外部数据存储器之间的数据传送都是以累加器A作为中介进行的。指令a和指令c是将A中的内容送达通过间接寻址获得的外部数据单元,即对外部存储器进行写操作。指令b和指令d是将通过间接寻址方式获得的外部数据单元的内容送达A,即对外部存储器进行读操作。指令a和指令b采用8位Ri作为间址寄存器。8位地址和数据均由P0口分时输入或输出。R0和R1都是一个字节,因此前两条指令的寻址范围是256字节。如果超出此范围,一般选用P2口来输出高8位地址,并在MOVX指令前将高8位地址写入P2口。指令c和指令d采用16位数据指针DPTR作为间址寄存器,可寻址64KB的外部数据存储器。16位地址读取采用分开的方式进行,低8位地址DPL由P0口输出,高8位地址DPH由P2口输出。由上表我们可以看出,与外部数据存储器之间的数据传送都是以累加【例3-14】将片内存储器40H地址单元的内容送到外部数据存储器2046H单元。这里给出两种实现方式。MOVA,40H;40H地址单元的内容送AMOVP2,#20H;将外部数据存储器2046H高8位20H送P2端口MOVR0,#46H;将外部数据存储器2046H低8位46H送R0MOVX@R0,A;将片内存储器40H地址单元的内容送到片外RAM2046H单元方法一:【例3-14】将片内存储器40H地址单元的内容送到外部数据存MOV DPTR,#2046;40H地址单元的内容送AMOV A,40H;将外部数据存储器2046H高8位20H送P2端口MOVX @DPTR,A;将片内存储器40H地址单元的内容送到片外RAM2046H单元方法二:MOV DPTR,#2046;40H地址单元的内容送AMOV编号指令格式机器语言指令功能字节数指令周期数aMOVCA,@A+DPTR93(A)←((A)+(DPTR))12bMOVCA,@A+PC83(A)←((A)+(PC))123
访问程序存储器指令MCS-51系列单片机指令系统中,访问程序存储器指令有2条,用于查询存放在程序存储器的固定表格或常数,因此,这两条指令也被称为查表指令。助记符均为“MOVC”,来自英文“MoveCode”。指令具体情况如表所示。编号指令格式机器语言指令功能字节数指令周期数aMOVCA指令a和指令b源操作数均采用变址寻址方式,寻址过程类似。但是,两条指令的基址寄存器不同,因此指令的适用范围也就不同。指令a以DPTR作为基址寄存器。DPTR是一个16位的寄存器,寻址范围可达64KB。每次查表前,只需将表头地址送入DPTR,就可以方便地使用本条指令查找存放在程序存储器64KB范围内的远程表格或数据了。指令b以PC作为基址寄存器,PC的功能比较特殊,它指向的是当前执行指令的地址。由于PC的值已经确定,查表范围是由累加器A决定的,所以本条指令所能查找的数据只能存放在以当前PC值为起始地址的256字节范围内,一般称为本地表。指令a和指令b源操作数均采用变址寻址方式,寻址过程类似。但是【例3-15】假设表头地址为41H,A的内容为02H,指令a的执行过程如图所示。在指令a执行过程中,首先要通过变址寻址方式获得源操作数的地址,取出DPTR的值与累加器A的内容相加,即50H+02H=52H。然后将52H中的内容送累加器A,PC内容加1,整条指令完成。指令b的寻址和执行过程与指令a相似。需要注意的是,指令b中的PC值是随程序的执行而变化的。A52H…XX…50HDPTR41HMOVCA,@A+DPTRPC40H93ROMALU02H指令a执行过程示意图【例3-15】假设表头地址为41H,A的内容为02H,指令a编号指令格式机器语言指令功能字节数指令周期数aPUSHdirectC0(SP)←(SP)+1,(SP)←(direct)12bPOPdirectD0(direct)←(SP),(SP)←(SP)-1124
堆栈操作指令用于堆栈操作的命令有两条,POP和PUSH命令,它们的操作数只有一个direct,如表所示。编号指令格式机器语言指令功能字节数指令周期数aPUSHdi堆栈指令的操作对象是采用直接寻址方式表示的片内RAM低128字节或SFR单元的内容。堆栈操作遵循“后进先出”原则,对堆栈指针SP所指向的地址单元进行压入和弹出操作,PUSH指令和POP指令要成对使用指令b的功能指令b的功能是将栈顶单元的内容弹出送direct地址单元中。在指令执行过程中,数据首先被弹出,然后堆栈指针减1,指向新的栈顶单元。指令a的功能指令a的功能是将direct地址单元的内容压入堆栈。在指令执行过程中,堆栈指针SP先加1,升高栈顶,指向新数据所要存入的地址单元,然后,将数据压入。堆栈指令的操作对象是采用直接寻址方式表示的片内RAM低128【例3-16】假设片外ROM地址单元从2046H开始存放着1~9的立方值。数据指针的初值为4000H,用查表指令取得2048H地址单元的数据后,要求保持DPTR的初值不变。程序如下,指令执行完成结果为:(A)=1BH,(DPTR)=4000H。MOV A,#02H;2048H~2046H的地址偏移量02H送APUSH DPH;保护DPTR的高8位入栈PUSH DPL;保护DPTR的低8位入栈MOV DPTR,#2046H;改变数据指针DPTR的初值MOVC A,@A+DPTR;采用间接寻址方式将2048H地址单元内容送APOP DPL;弹出DPTR低8位POP DPH;弹出DPTR高8位从上边的例子可以看出,在改变DPTR指针的内容前我们先将其初值4000H压入栈中。当获得2048H地址单元的内容即33后,依照“后进先出”的原则将DPTR的初值弹出。【例3-16】假设片外ROM地址单元从2046H开始存放着1编号指令格式机器语言指令功能字节数指令周期数aXCHA,RnC8~CF(A)
(Rn)11bXCHA,directC5direct(A)
(direct)21cXCHA,@RiC6~C7(A)
((Ri))11dXCHDA,@RiD6~D7(A)
((Ri))3-011eSWAPAC4(A)7-4(A)3-0115
数据交换指令MCS-51系列单片机指令系统中,数据交换指令有5条。用到的助记符有为“XCH”、“XCHD”和“SWAP”,这三个助记符来源于均具有“交换”词意的英文单词“Exchange”和“Swap”。指令的具体情况如表所示:编号指令格式机器语言指令功能字节数指令周期数aXCHA,5条指令的目的操作数均为累加器A,寻址空间为内部RAM。前3条指令均为整字节交换指令,指令功能是将通过不同寻址方式获得的片内RAM地址单元的内容和累加器A的内容交换。后面两条指令是半字节交换指令,指令d是将寻址获得的地址单元内容的低四位与A中的低四位进行交换,高四位保持不变;指令e是将累加器A本身的低四位与高四位交换。5条指令的目的操作数均为累加器A,寻址空间为内部RAM。前3算术运算类指令two在MCS-51系列单片机指令系统中,算术运算类指令共有24条。用到的助记符有ADD、ADDC、SUBB、DA、INC、DEC、MUL和DIV共9种。算术运算类指令可以进行加、减、乘、除和十进制调整等运算。执行这些指令会影响到PSW的相关标志位,如进位位Cy、辅助进位位AC、溢出位OV和奇偶校验位P,参见项目二程序状态字PSW。下面将24条指令按功能分为加法和减法指令、乘法和除法指令两部分进行讲述。算术运算类指令two在MCS-51系列单片机指令系统中,算术1加法和减法指令(1)不带进位的加法运算指令编号指令格式机器语言指令功能字节数指令周期数aADDA,#data24data(A)←(A)+data21bADDA,Rn28~2F(A)←(A)+(Rn)11cADDA,direct25direct(A)←(A)+(direct)21dADDA,@Ri26~27(A)←(A)+((Ri))11不带进位的加法运算指令共4条,使用助记符ADD,来自英文“Addition”。指令具体情况如表所示。这四条指令的功能是将累加器A的内容与源操作数(源操作数可以通过表中4种寻址方式获得)相加,结果存放A中,运算结果将对PSW的相关位产生影响。1加法和减法指令(1)不带进位的加法运算指令编号指令格式这里设8位数从低到高为0~7位,执行运算指令后,单片机按以下规则对PSW的各标志位置位。不管最初将数定义为无符号数还是有符号数,运算器在做加法运算过程中,总是将各位的值当无符号数去进行运算。在执行加法指令运算时,若结果的第3、7位有进位时,分别将AC、Cy标志位置1;否则置0。提示有符号数和无符号数判断溢出的方法不同:有符号数:针对二进制数而言的表示方式,有符号数将用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余位均用作数值位,代表数值。无符号数:无符号数的全部二进制均代表数值,没有符号位,即第一个“0”或“1”不表示数值的正负。这里设8位数从低到高为0~7位,执行运算指令后,单片机按以下对于无符号数加法运算若进位标志位(Cy)=1,表示相加结果超出255,产生溢出;若(Cy)=0表示无溢出,结果正确。OV对于无符号数判断溢出没有意义。对于有符号数加法运算正数和负数相加不可能产生溢出,两个正数相加为负或两个负数相加为正,则一定产生溢出。溢出位OV是通过公式OV=C7⊕C6进行置位的,C7表示最高位的进位,C6表示次高位的进位。对于无符号数加法运算若进位标志位(Cy)=1,表示相加结果超上述两条指令运行结束后,A中的内容为B2H,二进制表示为10110010。运算过程中由于低四位向高四位有进位,故(AC)=1。最高位没有进位,故(Cy)=0。由于C7⊕C6均为0,OV=C7⊕C6,故(OV)=0。运算结果中有4个1,故奇偶标志位(P)=0。由此可见,两个16进制数无论作为有符号数还是无符号数,相加结果都没有产生溢出。【例3-17】两个16进制数2BH和86H相加MOV A,#2BH;将加数2BH送累加器AADD A,#86H;执行加法指令,2BH与86H相加上述两条指令运行结束后,A中的内容为B2H,二进制表示为10(2)带进位的加法运算指令编号指令格式机器语言指令功能字节数指令周期数aADDCA,#data34data(A)←(A)+data+(Cy)21bADDCA,Rn38~3F(A)←(A)+(Rn)+(Cy)11cADDCA,direct35direct(A)←(A)+(direct)+(Cy)21dADDCA,@Ri36~37(A)←(A)+((Ri))+(Cy)11带进位的加法运算指令共4条,使用助记符ADDC,来自英文“AddwithCarry”。指令具体情况如表所示。注:Cy是指指令开始执行时的进位标志,而不是指令执行过程中产生的Cy通过与(1)中表的对比我们可以知道,带进位的加法运算指令除两个操作数外,还要加上进位表示Cy,因此,这些指令常用于多字节数加法运算。(2)带进位的加法运算指令编号指令格式机器语言指令功能字节数51单片机是一种8位机,所以只能做8位的数学运算,无符号数能够表示0~255,有符号数能够表示-128~+127。然而,在实际工作中往往是不够的,因此就要进行扩展。一般是将2个8位的数学运算合起来,成为一个16位的运算,这样,能表示的数的范围就能达到0~65535。下面我们通过例子来理解这种运算方式。先看一个十进制运算的例子。例如:24+28这两个数相加我们很快就能得出运算结果52。事实上我们是这样做的:先做4+8(低位),相加结果为12,我们会做一个进位标记,向前进一位,本位值为2;然后再做2+2(高位),还要加上低位的进位1,高位值为5。51单片机是一种8位机,所以只能做8位的数学运算,无符号数能【例3-18】2046H+11E2H,将相加的结果放在片外数据存储器以2046H为起始地址的地址单元。先做46H+E2H=138H,而138H显然超过了0FFH,因此最终保存在A中的是38H,而“1”只能用到PSW中的Cy位表示。然后再做20H+11H+(Cy),结果是32H,所以最终的结果是3238H。MOV DPTR,#2046HMOV A,#46HADD A,#E2HMOVX @DPTR,AINC DPTRMOV A,#20HADDC A,#11HMOVX @DPTR,A程序段如下:单片机中做16位加法时采用同样的原理,先做低8位的,如果两数相加产生了进位,也要做个标记,这个标记就是进位位Cy。【例3-18】2046H+11E2H,将相加的结果放在片外数(3)带借位减法运算指令编号指令格式机器语言指令功能字节数指令周期数aSUBBA,#data94data(A)←(A)-data-(Cy)21bSUBBA,Rn98~9F(A)←(A)-(Rn)-(Cy)11cSUBBA,direct95direct(A)←(A)-(direct)-(Cy)21dSUBBA,@Ri96~97(A)←(A)-((Ri))-(Cy)11带借位减法运算指令共4条,使用助记符SUBB,来自英文单词“SubtractwithBorrow”。Cy定义为最高位的借位。指令具体情况如表所示。这四条指令的功能是用累加器A中的内容减去源操作数所指定的内容,再减去Cy的值,将结果存放在A中。(3)带借位减法运算指令编号指令格式机器语言指令功能字节数指减法运算的结果也会影响到PSW的标志位,各标志位的产生法则和加法运算相同。在执行减法指令运算时,若最高位有借位,则(Cy)=1,否则(Cy)=0。若低四位向高四位借位,则(AC)=1,否则(AC)=0。对于无符号数减法运算对于有符号数减法运算有符号数和无符号数判断是否溢出的方法OV=C7⊕C6,C7表示最高位的借位,C6表示次高位的借位。若(OV)=0,表示运算正确;若(OV)=1,表示运算产生了溢出,结果是错误的。若(Cy)=1,有借位,表示小数减大数,发生溢出,结果是错误的;若(Cy)=0,没有借位,表示大数减小数,运算结果正确。提示MCS-51系列单片机中没有单独的不带借位减法运算指令。若有运算需要,可以在减法指令之前,先将Cy位清零。减法运算的结果也会影响到PSW的标志位,各标志位的产生法则和(4)加1指令编号指令格式机器语言指令功能字节数指令周期数aINCA04(A)←(A)+111bINCRn08~0F(Rn)←(Rn)+111cINCdirect05direct(direct)←(direct)+121dINC@Ri06~07(Ri)←(Ri)+111eINCDPTRA3(DPTR)←(DPTR)+112加1指令共5条,所使用的助记符INC来自英文“Increase”。指令具体情况如表所示。表中5条指令的功能是将源操作数所指定的单元的内容加1。除指令a对奇偶校验位P有影响外,其他指令均不会影响PSW的标志位。另外,指令e是MCS-51系统中唯一一条16位加1指令。加1指令不适合用来做加法计算,这些指令主要用来修改计数器的内容及地址指针的值。(4)加1指令编号指令格式机器语言指令功能字节数指令周期数a(5)减1指令编号指令格式机器语言指令功能字节数指令周期数aDECA14(A)←(A)-111bDECRn18~1F(Rn)←(Rn)-111cDECdirect15direct(direct)←(direct)-121dDEC@Ri16~17(Ri)←(Ri)-111减1指令共4条,所使用的助记符DEC来自英文“Decrease”。指令具体情况如表3-21所示。表中4条指令的功能是将源操作数所指定的单元的内容减1。与加1指令相同,只有指令a影响奇偶校验位P,其他指令均不影响PSW的标志位。(5)减1指令编号指令格式机器语言指令功能字节数指令周期数a(6)十进制调整指令十进制调整指令又称为BCD码调整指令,用于对累加器A中压缩BCD码的加法结果进行修正。它是一条单字节单周期指令,助记符为DA,来自英文“DecimalAdjust”。指令格式为DAA(6)十进制调整指令十进制调整指令又称为BCD码调整指令,用提示BCD码(Binary-CodedDecimal):这种编码形式是利用了四个位单元来储存一个十进制的数码,使得二进制和十进制能够进行快捷的转换。最常用的BCD编码是8421码,它使用0~9这十个数值的二进码0000~1001来表示。压缩BCD码:压缩BCD码是指在一个字节中存放两位BCD码。【例3-19】两个BCD码按二进制相加之后,有时会产生错误结果,必须使用十进制调整指令才能得到正确的压缩BCD码的和数。提示BCD码(Binary-CodedDecimal):这从上面的三个例子中我们可以看到,后两个加法运算出现了错误。运算出错是因为BCD码只用了16个编码中的10个,还有6个没用到的编码(1010、1011、1100、1101、1110、1111)。若相加结果进入或跳过无效码编码区时,就会发生错误。十进制加法相应BCD码加法2+7=9;0010+0111=1001;运算结果正确。6+9=15;0110+1001=1111;运算结果不正确。8+9=17;1000+1001=0001;Cy=1,运算结果不正确。从上面的三个例子中我们可以看到,后两个加法运算出现了错误。运进行BCD调整的原则如下:若AC=1或累加器A的低四位(A)3-0﹥9,则(A)3- 0←(A)3-0+06H;若Cy=1或累加器A的高四位(A)7-4﹥9,则(A)7-4←(A)7-4+60H【例3-20】(A)=56H,(R5)=67H,将其看作为两个压缩的BCD数,进行加法运算ADD A,R5DA A由于高、低4位分别大于9,所以要分别加6进行十进制调整对结果进行修正。结果为:(A)=23H,(Cy)=1;因为56+67=123,可见调整后结果才是正确的。进行BCD调整的原则如下:若AC=1或累加器A的低四位(A)2乘法和除法指令编号指令格式机器语言指令功能字节数指令周期数aMULABA4(B)15-8(A)7-0
←(A)×(B)14bDIVAB84(B)余数(A)商←(A)÷(B)14MCS-51系列单片机中,乘法和除法指令各有1条,均为单字节四周期指令。指令具体情况如表所示。2乘法和除法指令编号指令格式机器语言指令功能字节数指令周指令a是乘法指令,MUL来自英文“Multiply”。指令功能是将累加器A和寄存器B中两个8位无符号数相乘,乘积的低8位送A,高8位送B。该指令影响PSW的Cy、OV和P标志位。执行指令后,Cy标志位清零。OV标志位表示积的大小,若乘积大于255,即(B)≠0,则(OV)=1,否则(OV)=0。奇偶标志P由累加器A中1的个数决定。指令b是除法指令,DIV来自英文“Divide”。指令功能是将累加器A和寄存器B中两个8位无符号数相除,商的整数部分送A,余数送B。该指令影响PSW的Cy、OV和P标志位。Cy和P标志的影响和乘法指令相同。当除数为0,即(B)原=0时,(OV)=1,表示除法无意义;否则(OV)=0。指令a是乘法指令,MUL来自英文“Multiply”。指令功逻辑运算与移位指令three在MCS-51系列单片机指令系统中,逻辑运算类指令和移位指令共有24条。用到的助记符有ANL、ORL、XRL、CLR、CPL、RL、RLC、RR和RRC共9种。这两大类指令可以进行与、或、非和异或运算,累加器A的清零、取反和移位操作等。1逻辑运算指令本节介绍的逻辑运算指令共20条。它们都是字节操作指令,可以对8位二进制数进行与、或,以及异或等逻辑运算。这些指令中,除以累加器A为目的寄存器的指令外,其他指令不会影响到PSW的任何标志位。逻辑运算与移位指令three在MCS-51系列单片机指令系统(1)逻辑与指令逻辑与指令共6条,所使用的助记符ANL来自英文“AndLogic”。指令具体情况如下表所示。编号指令格式机器语言指令功能字节数指令周期数aANLA,Rn58~5F(A)←(A)∧(Rn)11bANLA,@Ri56~57(A)←(A)∧(Ri)11cANLA,direct55direct(A)←(A)∧(direct)21dANLA,#data54data(A)←(A)∧data21eANLdirect,A52direct(direct)←(direct)∧(A)21提示逻辑与:0和任何值相与为0;1和任何值相与,原值保持不变。即0∧0=0,0∧1=0,1∧0=0,1∧1=1。(1)逻辑与指令逻辑与指令共6条,所使用的助记符ANL来自英提示ASCII码(AmericanStandardCodeforInformationInterchange):ASCII码是美国信息交换标准代码的缩写,它按照特定的规则对数字、字母以及符号进行二进制编码。参见本书附录B。上表中前4条指令是以累加器A为目的操作数的逻辑与指令。指令功能是将累加器A中的内容与源操作数所指定的内容进行按位逻辑与操作,并将结果送累加器A。指令e和指令f是以direct为目的地址的逻辑与指令。指令功能是将direct地址单元的内容与源操作数所指定的内容进行按位逻辑与操作,并将结果送direct地址单元。在实际应用中,若希望目的操作数的某些位屏蔽,就可以和0相与;若希望某些位保持不变,就可以和1相与。若40H单元存放的是9的ASCII码39H,即(40H)=39H。这里我们希望将40H单元的内容变为9的BCD码。只需要用指令“ANL 39H,#0FH”将39H的高四位屏蔽掉,40H单元的内容变为09H,即9的BCD码。提示ASCII码(AmericanStandardCod(2)逻辑或指令逻辑或指令共6条,所使用的助记符ORL来自英文“OrLogic”。指令具体情况如下表所示。编号指令格式机器语言指令功能字节数指令周期数aORLA,Rn48~4F(A)←(A)∨(Rn)11bORLA,@Ri46~47(A)←(A)∨(Ri)11cORLA,direct45direct(A)←(A)∨(direct)21dORLA,#data44data(A)←(A)∨data21eORLdirect,A42direct(direct)←(direct)∨(A)21fORLdirect,#data43directdata(direct)←(direct)∨data32(2)逻辑或指令逻辑或指令共6条,所使用的助记符ORL来自英提示逻辑或:1和任何值进行或运算值为1;0和任何值进行或运算,原值保持原值不变。即1∨0=1,1∨1=1,0∨0=0,0∨1=1。上表中前4条指令是以累加器A为目的操作数的逻辑或指令。指令功能是将累加器A中的内容与源操作数所指定的内容进行按位逻辑或操作,并将结果送累加器A。指令e和指令f是以direct为目的地址的逻辑或指令。指令功能是将direct地址单元的内容与源操作数所指定的内容进行按位逻辑或操作,并将结果送direct地址单元。提示逻辑或:1和任何值进行或运算值为1;0和任何值进行或运算【例3-21】将片内40H单元的高四位送P1口的对应位,但不能修改P1口的低四位。程序中我们首先用逻辑与运算指令将40H单元中的低四位和P1口的高四位屏蔽掉,然后用逻辑或运算指令将修改后的40H单元的内容和P1的内容合并,达到题目要求的结果。MOV A,40HANL A,#0F0HANL P1,#0FHORL P1,A程序如下:在实际应用中,若希望目的操作数的某些位置1,就可以和1进行或运算;若希望某些位保持不变,就可以和0进行或运算。利用或运算指令的这个特性,可以进行一些信号量的合并。【例3-21】将片内40H单元的高四位送P1口的对应位,但不(3)逻辑异或指令逻辑异或指令共6条,所使用的助记符XRL来自英文“Exclusive-OrLogic”。指令具体情况如表3-25所示。编号指令格式机器语言指令功能字节数指令周期数aXRLA,Rn68~6F(A)←(A)⊕(Rn)11bXRLA,@Ri66~67(A)←(A)⊕(Ri)11cXRLA,direct65direct(A)←(A)⊕(direct)21dXRLA,#data64data(A)←(A)⊕data21eXRLdirect,A62direct(direct)←(direct)⊕(A)21fXRLdirect,#data63directdata(direct)←(direct)⊕data32(3)逻辑异或指令逻辑异或指令共6条,所使用的助记符XRL来提示逻辑异或:两数异或,相同为0,不同为1。即0⊕0=0,1⊕1=0,0⊕1=1,1⊕0=1。从运算结果看,规律为:与0相异或,数值不变;与1相异或,数值取反。上表中前4条指令是以累加器A为目的操作数的寄存器的逻辑异或指令。指令功能是将累加器A中的内容与源操作数所指定的内容进行按位逻辑异或操作,并将结果送累加器A。指令e和指令f是以direct为目的地址的逻辑异或指令。指令功能是将direct地址单元的内容与源操作数所指定的内容进行按位逻辑异或操作,并将结果送direct地址单元。提示逻辑异或:两数异或,相同为0,不同为1。即0⊕0=0,1【例3-22】若累加器A的内容为08H,程序将跳转到LOOP1程序段。可用以下指令实现。由于异或指令的这些特性,它们常被用来对数值进行部分取反操作以及判断两数是否相等。下面我们通过一个例子来学习这条指令。XRL A,#08H异或指令执行08H⊕08H,指令完成后A中内容为0JZ LOOP1根据A中内容进行跳转,若A为0,则程序跳转至LOOP1程序段【例3-22】若累加器A的内容为08H,程序将跳转到LOOP(4)累加器A清零和取反指令MCS-51系列单片机指令系统中,A清零、取反指令各有一条。具体情况如表所示编号指令格式机器语言指令功能字节数指令周期数aCLRAE4(A)←011bCPLAF4(A)←(A)11(4)累加器A清零和取反指令MCS-51系列单片机指令系统中注意虽然采用其他指令(如数据传送类指令或逻辑异或指令)也可以达到累加器清零和取反的目的,但是它们至少需要两个字节。指令a为累加器清零指令,所使用的助记符CLR来自英文“Clear”,功能是将累加器A置0;指令b为累加器取反指令,助记符CPL来自英文“Complement”,功能是将累加器A按位取反。这两条指令的操作结果均会影响P标志位。注意虽然采用其他指令(如数据传送类指令或逻辑异或指令)也可以2移位指令本节所要介绍的移位指令共4条,具体情况如下表所示。编号指令格式机器语言指令功能字节数指令周期数aRLA23(A)循环左移1位11bRRA03(A)循环右移1位11cRLCA33(A)带进位循环左移1位11dRRCA13(A)带进位循环右移1位112移位指令本节所要介绍的移位指令共4条,具体情况如下表所是循环左移指令。所使用的助记符RL来自英文“RotateLeft”。指令功能是将累加器A中的内容由低位向高位移动1位,A7位移入A0位。如下所示:(A0)←(A7)←(A6)←(A5)←(A4)←(A3)←(A2)←(A1)←(A0)
dolorsitametconsectetur指令a是循环右移指令。所使用的助记符RR来自英文“RotateRight”。指令功能是将累加器A中的内容由高位向低位移动1位,A0位移入A7位。如下所示:(A0)→(A7)→(A6)→(A5)→(A4)→(A3)→(A2)→(A1)→(A0)指令b是循环左移指令。所使用的助记符RL来自英文“RotateL是带进位循环左移指令。所使用的助记符RLC来自英文“RotateLeftwithCarry”。指令功能是将累加器A中的内容由低位向高位移动1位,A7位移入Cy,Cy内容移入A0位。如下所示:(A0)←(Cy)←(A7)←(A6)←(A5)←(A4)←(A3)←(A2)←(A1)←(A0)指令c是带进位循环右移指令。所使用的助记符RRC来自英文“RotateRightwithCarry”。指令功能是将累加器A中的内容由高位向低位移动1位,A0位移入Cy,Cy内容移入A7位。如下所示:(A0)→(Cy)→(A7)→(A6)→(A5)→(A4)→(A3)→(A2)→(A1)→(A0)指令d指令c和指令d将影响PSW的Cy和P标志,另外两条指令对标志位没有影响。是带进位循环左移指令。所使用的助记符RLC来自英文“Rota【例3-23】移位指令主要用于乘2和除2运算,另外,通过移位指令还可以达到串行接收或发送数据的目的。下面我们看一个除2的例子。假设(A)=44H,利用移位指令将A中内容除2。ADD A,#0RRC A第一条指令并没有改变A的值,只是用于将Cy清零。第二条指令指令执行前(A)=01000100,(Cy)=0;指令执行结束后(A)=00100010,即22H,(Cy)=0。若将上面指令中RRC指令换成RLC指令,可以对A中的内容实现乘2运算。另外,以Cy为桥梁,使用两次循环移位指令,可以实现16位数的移位操作。【例3-23】移位指令主要用于乘2和除2运算,另外,通过移位控制转移类指令four任何指令系统都有控制转移类指令。在MCS-51系列单片机指令系统中,控制转移类指令共有17条。用到的助记符有LJMP、AJMP、SJMP、JMP、JZ、JNZ、CJNE、DJNE、LCALL、ACALL、RET、RETI和NOP共13共种。控制转移指令又称为跳转指令,通过改变程序计数器PC的指向来控制程序执行的流向。下面将分为无条件转移类指令、条件转移类指令和子程序调用及返回指令三部分进行讲述。控制转移类指令four任何指令系统都有控制转移类指令。在MC1无条件转移类指令无条件转移指令共4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025购车合同样本范本
- 2025年拒绝政府采购合同的法律责任分析
- 房地产买卖补充合同范本
- 车库转让协议
- 2025《中央商务区B区基础设施建设与管理承包合同》
- 产品购销合同范本
- 2025版合同:国内劳务合同
- 2025城区商场餐饮服务承包合同
- 广州南沙就业协议书
- 肇庆学院《岩土工程设计》2023-2024学年第一学期期末试卷
- 20222023银行招聘考试题库1000题第4372期含答案解析
- 2022-2024年高考数学试题分类汇编:导数及其应用(解析版)
- GB/T 17727-2024船用法兰非金属垫片
- DBJ50T-481-2024 装配式开孔钢板组合剪力墙结构住宅 技术标准
- 2024版《CSCO非小细胞肺癌诊疗指南》更新要点
- 海绵城市课程设计
- 2023.05.06-广东省建筑施工安全生产隐患识别图集(高处作业吊篮工程部分)
- 广告媒体投放分包合作协议
- 小儿疼痛与镇痛的管理
- ISO15614-1 2017 金属材料焊接工艺规程及评定(中文版)
- 高二综评研究性课题研究成果
评论
0/150
提交评论