版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机指令系统重点讲述MCS-51单片机指令的格式、寻址方式、指令系统,并针对常用指令给出相应的应用程序单片机指令系统指令系统概述3.1单片机的寻址方式3.2单片机的指令系统3.3指令:CPU执行某种操作的命令。指令系统:CPU所能执行的所有指令的集合。MCS-51单片机指令系统共有111条基本指令。指令系统概述空间属性单字节指令:49条双字节指令:45条三字节指令:17条时间属性单周期指令:64条双周期指令:45条四周期指令:2条功能属性数据传送类:29条算术运算类:24条逻辑运算类:24条控制转移类:17条位操作类:17条指令系统概述MCS-51单片机的一条指令可以用不同的语言形式表示,比如:机器语言指令和汇编语言指令。机器语言指令:用二进制代码表示,计算机能直接识别和执行的指令,不便记忆、阅读。汇编语言指令:采用助记符表示的指令,与机器指令一一对应。优点:直观、易记忆、好理解、编程方便。指令系统概述-指令的表达形式注意:操作码表示指令所执行的操作功能,必不可少操作数为指令的操作对象,个数为0~3个多个操作数之间必须用逗号“,”分隔[标号:]操作码[操作数][;注释]MCS-51单片机汇编语言指令的一般格式指令系统概述-指令的表达形式指令主要由操作码和操作数两部分构成。操作码和操作数都有对应的二进制代码。操作码用来规定指令执行的操作功能,可用1个字节表示;操作数是指参与操作的数据,可用1个或2个字节表示。指令系统概述-指令的表达形式MCS-51单片机的指令按编码所占的字节数分为3种格式:单字节指令双字节指令三字节指令指令系统概述-指令的表达形式指令码中隐含着对某一寄存器的操作
单字节指令(49条)如:INCA编码为:00000100即:04H指令码含有操作码和寄存器编码
如:MOVA,R0编码为:11101000即:E8H
无操作数指令如:NOP编码为:00000000即:00H指令系统概述-指令的表达形式
第一个字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。
双字节指令(45条)如:MOVA,#40H编码为:0111010001000000即:74H
40H指令系统概述-指令的表达形式
三字节指令(17条)如:MOV50H,#40H编码为:011101010101000001000000即:75H50H40H
第一个字节表示该指令的操作码,后两个字节表示参与操作的数据或数据存放的地址。指令系统概述-指令的表达形式Rn:当前工作寄存器区的8个寄存器之一Ri:当前工作寄存器区的寄存器R0或R1@:间接寻址寄存器的前缀#data:8位立即数#data16:16位立即数direct:8位直接地址,片内RAM低128字节单元地址及SFR地址(可用符号名称表示)指令系统概述-指令中的常用符号addr11:11位目的地址addr16:16位目的地址rel:补码形式的8位地址偏移量,偏移范围为-128~127bit:片内RAM位地址、SFR的位地址(X):X地址单元或寄存器中的内容((X)):表示以X地址单元或寄存器的内容为地址所指定单元的内容指令系统概述-指令中的常用符号/:在位操作指令中,表示对该位先求反后再参与操作←:指令的操作结果是将箭头右边的内容传送到箭头的左边→:指令的操作结果是将箭头左边的内容传送到箭头的右边A:累加器B:B寄存器C:位累加器DPTR:数据指针,可用作16位的地址寄存器$:表示当前指令的地址指令系统概述-指令中的常用符号寻址:寻找操作数所在单元的地址。寻址方式:CPU寻找操作数所在地址的方法。MCS-51有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。单片机的寻址方式寻址方式使用的变量寻址空间立即寻址直接给出数值,无变量ROM直接寻址直接给出地址,无变量片内RAM低128字节、SFR寄存器寻址R0~R7、A、B、DPTR、位累加器C工作寄存器R0~R7,部分SFR寄存器间接寻址@R0、@R1、SP或@DPTR片内RAM或片外RAM变址寻址@A+DPTR、@A+PCROM相对寻址PC+偏移量ROM位寻址直接给出位地址或位符号片内RAM的位寻址区、SFR的可寻址位寻址方式所对应的寄存器和存储空间单片机的寻址方式指令中直接给出操作数的寻址方式。【例3-1】执行MOVA,#68H
结果:(A)=68H
单片机的寻址方式-立即寻址注意:在立即数前必须使用“#”标志。寻址空间:ROM在MCS-51单片机指令系统中,仅有一条包含16位立即数的指令,形式为MOVDPTR,#data16。例如MOVDPTR,#1234H指令,立即数高8位“12H”装入DPH,低8位“34H”装入DPL。单片机的寻址方式-立即寻址指令中直接给出操作数所在存储单元的地址。【例3-2】若(30H)=56H,执行MOVA,30H后,(A)=56H单片机的寻址方式-直接寻址寻址空间:片内RAM低128字节SFR(一般采用符号形式替代直接地址,例:一般将MOVA,80H写成MOVA,P0)注意:MCS-51单片机的所有SFR必须而且只能使用直接地址寻址。单片机的寻址方式-直接寻址操作数存放在寄存器中,指令中直接给出该寄存器名称。【例3-3】若(R1)=80H,执行MOVA,R1后,(A)=80H
单片机的寻址方式-寄存器寻址对于0组工作寄存器,MOVA,00H和MOVA,R0有什么区别?MOVA,00H,机器码为E500H,即这条指令要占用2个字节。MOVA,R0,机器码为E8H,即这条指令只占用1个字节。单片机的寻址方式-寄存器寻址寻址空间:工作寄存器R0~R7部分特殊功能寄存器,如A、B(AB形式)、DPTR特点:传送和执行速度快单片机的寻址方式-寄存器寻址指令中给出的寄存器中存放的不是操作数,而是操作数所在单元的地址。为了与寄存器寻址区别,应在寄存器的名称前面加前缀标志“@”。单片机的寻址方式-寄存器间接寻址【例3-4】若(R0)=40H,(40H)=30H,执行MOVA,@R0后,(A)=30H。单片机的寻址方式-寄存器间接寻址寻址空间:片内RAM(@Ri、SP)通用形式:MOV指令@Ri(i=0,1)PUSH/POPdirect(SP发生相应变化)52系列内部RAM的高128B只能用该寻址方式片外RAM(@Ri、@DPTR)通用形式:MOVX指令@DPTR
MOVX指令@Ri(i=0,1)单片机的寻址方式-寄存器间接寻址以数据指针DPTR或程序计数器PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成操作数所在单元的地址。变址方式适用于以下两种情况:对ROM中的数据进行寻址跳转指令,如JMP@A+DPTR单片机的寻址方式-变址寻址【例3-5】若(DPTR)=1234H,(A)=50H,执行MOVA,@A+DPTR后,(A)=78H单片机的寻址方式-变址寻址说明:本寻址方式专门针对程序存储器,即
寻址空间:ROM,寻址范围可达到64KB。(2)本寻址方式的指令只有3条:
MOVCA,@A+DPTR;
MOVCA,@A+PC;
JMP@A+DPTR单片机的寻址方式-变址寻址将程序计数器PC的当前值加上指令中给出的偏移量rel,结果作为目标地址的寻址方式。用于跳转指令,实现程序的分支跳转注意:(1)当前PC值=指令存储地址+指令字节数(2)偏移量rel是有符号的8位二进制数,范围为-128~+127转移的地址(目的地址)为:当前PC值+rel=指令存储地址+指令字节数+rel单片机的寻址方式-相对寻址【例3-6】若rel为75H,PSW.7为1,JCrel存于0200H开始的单元,执行JCrel指令后,
程序将跳转到0277H单元取指令并执行。
单片机的寻址方式-相对寻址对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。【例3-7】若位地址20H内容为1,执行MOVC,20H后,位地址PSW.7的内容为1。单片机的寻址方式-位寻址寻址范围包括:(1)片内RAM低128字节中位寻址区的128位可寻址位有两种表示方法:a.直接使用位地址表示,例如,00H;b.使用单元地址加位序号表示,例如,(20H).0。位寻址方式实质属于位的直接寻址。单片机的寻址方式-位寻址(2)SFR的可寻址位可供位寻址的特殊功能寄存器有11个,里面共有可寻址位83位。
可寻址位有4种表示方法:a.直接使用位地址。例如:PSW.5的位地址为0D5H。b.使用位名称表示。例如:PSW.5是F0标志位,可使用F0表示该位。c.使用单元地址加位序号表示。例如:(0D0H).5。d.使用SFR符号加位序号表示。例如:PSW.5单片机的寻址方式-位寻址按功能不同,MCS-51单片机指令系统可分为5类:数据传送类算术运算类逻辑运算与循环类控制转移类位操作类单片机的指令系统数据传送操作可以在片内RAM单元和SFR中进行,也可以在累加器A和片外RAM之间进行,还可以到ROM中进行查表。一般不影响标志寄存器PSW的状态。单片机的指令系统-数据传送类指令数据传送类指令共有29条,按性质可分为3类:数据传送指令数据交换指令堆栈操作指令单片机的指令系统-数据传送类指令根据访问对象不同,数据传送指令可进一步分为3类指令:访问片内RAM的MOV指令访问片外RAM的MOVX指令访问ROM的MOVC指令。功能:实现数在片内RAM单元之间、寄存器之间、寄存器与RAM单元之间的传送。所有指令具有如下的统一格式:
MOV<目的操作数>,<源操作数>操作码助记符都是“MOV”。属“复制”性质,而不是“搬家”。单片机的指令系统-访问片内RAM的MOV指令源操作数类型(5种):累加器A、工作寄存器Rn、直接地址direct、间接寻址寄存器@Ri和立即数#data(或#data16)。目的操作数类型(5种):累加器A、工作寄存器Rn、直接地址direct、间接寻址寄存器@Ri和数据指针寄存器DPTR。在源操作数和目的操作数组合时要遵守以下规则:源操作数与目的操作数的类型要匹配除direct以外,源操作数与目的操作数不能相同Rn和@Ri之间不能相互传送单片机的指令系统-访问片内RAM的MOV指令①以A为目的操作数的指令单片机的指令系统-访问片内RAM的MOV指令②以Rn为目的操作数的指令单片机的指令系统-访问片内RAM的MOV指令③以direct为目的操作数的指令单片机的指令系统-访问片内RAM的MOV指令④以@Ri为目的操作数的指令单片机的指令系统-访问片内RAM的MOV指令⑤以DPTR为目的操作数的指令MOVDPTR,#data16;(DPTR)←data16MCS-51单片机中唯一的16位数据传递指令。将立即数的高8位送入DPH,低8位送入DPL。例:执行指令MOVDPTR,#1234H后(DPH)=12H,(DPL)=34H。单片机的指令系统-访问片内RAM的MOV指令【例3-8】试用不同方法实现以下传送功能:(1)把存放在片内RAM中50H单元中的数据20H传送到累加器A中(要求最终指令以A为目的操作数)。(2)把存放在片内RAM中20H单元中的数据55H送到寄存器R7中(要求最终指令以R7为目的操作数)。(3)把存放在片内RAM中30H单元的数据00H送到60H单元中(要求最终指令以60H为目的操作数)。(4)把存放在片内RAM中30H单元的数据00H送到60H单元中(要求最终指令以@Ri为目的操作数)。单片机的指令系统-访问片内RAM的MOV指令【例3-9】设(30H)=40H,(40H)=10H,(10H)=00H,(P1)=11001010B,试分析如下程序段中的指令分别属于上述16条访问片内RAM的数据传送类指令中的哪一条?指令执行后各单元中的内容是什么?
MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1 MOV 10H,#20H单片机的指令系统-访问片内RAM的MOV指令
读片外RAM在MCS-51指令系统中,CPU对片外RAM或I/O口进行数据传送,必须通过累加器A且采用寄存器间接寻址的方法来完成,该类指令采用的指令助记符为MOVX,共有以下4条单字节指令:MOVXA,@DPTR;A←((DPTR))MOVXA,@Ri;A←((Ri))
写片外RAMMOVX@DPTR,A;((DPTR))←AMOVX@Ri,A;((Ri))←A注意:用@Ri寻址时,高8位地址由P2口提供
单片机的指令系统-访问片外RAM的MOVX指令【例3-10】试写出完成以下功能需要的指令序列:(1)将片内RAM30H单元的内容送入片外RAM1000H单元中;(2)将片外RAM1000H单元的内容送入片内RAM40H单元中;(3)将片外RAM1000H单元中的内容送入片外RAM2000H单元中。注意:在MCS-51单片机中,与片外RAM打交道的只能是累加器A。单片机的指令系统-访问片外RAM的MOVX指令
以DPTR内容为基址ROM中可以存放程序代码,还经常存放常数表
MOVCA,@A+DPTR;A←((A)+(DPTR))
以PC内容为基址MOVCA,@A+PC;A←((A)+(PC))常数表存放约束小,称为远程查表指令,占用DPTR
常数表存放约束大,称为近程查表指令,不占用DPTR
单片机的指令系统-访问ROM的MOVC指令【例3-11】假设从ROM的1000H单元开始存放0~9的平方值,如果以DPTR为基址寄存器进行查表得5的平方值,其程序段如下:MOVDPTR,#1000HMOVA,#05HMOVCA,@A+DPTR执行结果为:(DPTR)=1000H,(A)=19H。单片机的指令系统-访问ROM的MOVC指令如果以PC作为基址寄存器进行上述查表功能,并假设MOVC指令所在地址(PC)=0FF5H,则在执行查表指令之前要进行地址调整,因为PC的当前值与表格首地址的偏移量为:1000H-(0FF5H+1)=0AH,所以相应的程序段如下:MOV A,#05HADD A,#0AH ;用加法指令进行地址调整MOVC A,@A+PC执行结果为:(PC)=0FF6H,(A)=19H。单片机的指令系统-访问ROM的MOVC指令数据交换类指令是将数据进行双向传送,是两个字节间或两个半字节间的双向交换。数据交换指令共有5条指令,可分为2类:字节交换指令半字节交换指令单片机的指令系统-数据交换指令
半字节交换指令XCHD是间址操作数的低半字节与A的低半字节互换。SWAP是累加器的高低4位互换。单片机的指令系统-数据交换指令
字节交换指令【例3-12】已知(R0)=30H,(30H)=4AH,(A)=28H,试分析下面指令执行的结果:(1)XCHA,@R0
解:程序执行后,(A)=4AH,(30H)=28H。(2)XCHDA,@R0
解:程序执行后,(A)=2AH,(30H)=48H。(3)SWAPA
解:程序执行后,(A)=82H。单片机的指令系统-数据交换指令堆栈是按“后进先出”的规则组织的一片存储区域,在MCS-51单片机中,堆栈设置在片内RAM的低128B单元,堆栈的栈顶由堆栈指针SP指出。
入栈指令PUSHPUSH direct;(SP)+1→(SP),(direct)→((SP))
出栈指令POPPOPdirect;((SP))→(direct),(SP)-1→(SP)注:堆栈用于子程序调用时保护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。单片机的指令系统-堆栈操作指令【例3-13】把数据指针DPTR、状态标志寄存器PSW、累加器A中的数据入栈保护,完成该功能的程序如下: PUSH DPL PUSH DPH PUSH PSW PUSH ACC【例3-14】将上例中在堆栈里保存的数据恢复(弹出)到DPTR、PSW、A中,完成该功能的程序如下: POP ACC POP PSW POP DPH POP DPL单片机的指令系统-堆栈操作指令【例3-15】用堆栈指令实现RAM中10H和20H中的内容交换,设(10H)=12H,(20H)=34H,完成该功能的程序如下:
MOV SP,#6FH PUSH 10H PUSH 20H POP 10H POP 20H
单片机的指令系统-堆栈操作指令MCS-51单片机指令系统包含24条算术运算指令,可以分为4类:加法减法乘法除法这一类指令执行后要影响PSW中标志位。单片机的指令系统-算术运算类指令加法指令可分为4类:不带Cy的加法指令带Cy的加法指令加1指令十进制调整指令单片机的指令系统-加法指令(1)不带Cy的加法指令运算结果A对各个标志位的影响如下:运算结果中有向最高位的进位时,Cy=1,反之Cy=0;运算结果中有低4位向高4位的进位时,Ac=1,反之Ac=0;运算结果中,第6位和第7位不同时产生进位时,则代表运算有溢出,即OV=1,反之OV=0;累加器A中有奇数的“1”时,P=1,反之P=0。单片机的指令系统-加法指令【例3-16】分析如下程序段执行后,累加器A及PSW相关标志的结果。MOV A,#10010010BADD A,#11001001B解:第一条指令将立即数92H送入A中,第二条指令将立即数C9H与A中的92H相加,结果存入A中。指令执行后,(A)=01011011B=5BH,(Cy)=1,(Ac)=0,(OV)=1,(P)=1。单片机的指令系统-加法指令(2)带Cy的加法指令这组指令与不带Cy的加法指令的区别在于:带Cy的加法指令在执行加法运算时必须考虑该指令执行之前已经存在的进位标志位Cy,即这组指令有三个操作数参加加法运算。带Cy的加法指令常用于多字节数加法运算中。单片机的指令系统-加法指令【例3-18】若16位二进制数分别存放在工作寄存器R1R0和R3R2中,试编程计算R1R0+R3R2,并将结果存放在R5R4中。参考程序
MOV A,R0 ADD A,R2 MOV R4,A MOV A,R1 ADDC A,R3 MOV R5,A单片机的指令系统-加法指令(3)加1指令除INCA指令可能会影响P标志位外,其余指令不影响PSW的标志位。Ri和DPTR常用作指针并指向一片存储区域的起始地址,将它们的内容加1可以指向下一单元的地址,编程时常利用这两个指针对一片存储区域进行操作。单片机的指令系统-加法指令【例3-19】将片内RAM中30H为起始地址的3个无符号数相加,并将结果(假设小于100H)存放到40H单元中,试编程实现该功能。参考程序1:
MOV A,30H ADD A,31H ADD A,32H MOV 40H,A单片机的指令系统-加法指令参考程序2:
MOV A,#00H ;将A清0 MOV R0,#30H ;将地址30H送入R0中 ADD A,@R0 INC R0;将R0的内容加1,变成31H ADD A,@R0 INC R0;再将R0的内容加1,变成32H ADD A,@R0 MOV 40H,A单片机的指令系统-加法指令(4)十进制调整指令DAA;调整A的内容为正确的BCD码两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的和,调整原理如下:若累加器低4位大于9或辅助进位位(Ac)=1,则将累加器作加6调整,即低4位进行加6修正。若累加器高4位大于9或进位位(Cy)=1,则将累加器作加60H调整,即高4位进行加6修正。执行十进制调整指令后,PSW中的Cy表示结果的百位值。单片机的指令系统-加法指令【例3-20】试编写程序,实现95+59的BCD码加法。参考程序:
MOV A,#95H ADD A,#59H ;A=EEH DA A ;A=54H上述程序段执行后,(A)=54,(Cy)=1,即95+59=154,结果是正确的。若不采用DAA进行调整,结果为EEH就不正确了。单片机的指令系统-加法指令减法指令可分为2类:带Cy的减法指令和减1指令。(1)带Cy的减法指令用此组指令完成不带借位的减法,只需先清Cy为0即可。Cy为1,表示运算结果的最高位有借位Ac为1,表示运算的低4位向高4位有借位OV为1,表示“D6有借位D7无借位”或“D7有借位D6无借位”P为1,表示累加器A中有奇数个“1”单片机的指令系统-减法指令【例3-22】试编写1234H-0FA3H的程序段,将结果高8位存入51H,低8位存入50H单元。参考程序
CLR CMOV A,#34HSUBB A,#0A3HMOV 50H,AMOV A,#12HSUBB A,#0FHMOV 51H,A单片机的指令系统-减法指令(2)减1指令这组指令仅
DECA
影响P标志,其余指令都不影响标志位的状态。单片机的指令系统-减法指令MULAB;((A)×(B))15~8→(B),((A)×(B))7~0→(A)功能:把累加器A和寄存器B中的两个8位无符号数相乘,将乘积16位数中的低8位存放在A中,高8位存放在B中。若乘积大于FFH(255),则OV=1,否则OV=0。乘法指令执行后Cy总是零,即Cy=0。单片机的指令系统-乘法指令乘法指令【例3-23】分析下面指令执行的结果
MOV A,#4EH MOV B,#5DH MUL AB执行结果为:(A)=56H,(B)=1CH,(Cy)=0,(OV)=1,(P)=0。单片机的指令系统-乘法指令DIVAB;(A)÷(B)的商→(A),余数→(B)功能:把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数,所得商存于累加器A中,余数存于寄存器B中。若除数为0时,OV=1,Cy=0;否则OV=0,Cy=0。单片机的指令系统-除法指令除法指令【例3-24】分析下面指令执行的结果 MOV A,#87H MOV B,#0CH DIV AB执行结果为:(A)=0BH,(B)=03H,(Cy)=0,(OV)=0,(P)=1。单片机的指令系统-除法指令该类指令的功能是进行字节的逻辑与、或、异或、求反、清零、左右移位等操作。按照操作数数量不同可以分为2类:单操作数逻辑运算指令双操作数逻辑运算指令单片机的指令系统-逻辑运算类指令单操作数逻辑运算指令只能对累加器A的内容进行逻辑操作,可分为3类:累加器A清零累加器A取反指令累加器A循环移位指令单片机的指令系统-单操作数逻辑运算指令(1)累加器A清零
CLRA(2)累加器A取反指令
CPLA单片机的指令系统-单操作数逻辑运算指令(3)累加器A循环移位指令①累加器A循环左移指令 RLA该指令的功能是将累加器A中的内容循环左移1位,该指令不影响标志位,操作过程如下所示:单片机的指令系统-单操作数逻辑运算指令②累加器A连同Cy循环左移指令
RLCA该指令的功能是将累加器A的内容与Cy一起循环左移1位。该指令不影响Ac和OV标志位,但执行后将影响Cy和P标志位,操作过程如如下所示:单片机的指令系统-单操作数逻辑运算指令③累加器A循环右移指令
RRA该指令的功能是将累加器A中的内容循环右移1位,该指令不影响标志位,操作过程如下所示:单片机的指令系统-单操作数逻辑运算指令④累加器A连同Cy循环右移指令
RRCA该指令的功能是将累加器A的内容与Cy一起循环右移1位,指令执行后影响Cy和P标志位,操作过程如下所示:单片机的指令系统-单操作数逻辑运算指令【例3-25】设(A)=5AH(代表十进制数90),且Cy=0,(1)若执行指令RLCA,结果为(A)=B4H(代表十进制数180)(2)若执行指令RRCA,结果为(A)=2DH(代表十进制数45)对该题而言,执行RLC相当于A乘以2;执行RRC相当于A除以2。单片机的指令系统-单操作数逻辑运算指令双操作数逻辑运算指令可以分为3类:逻辑与运算指令逻辑或运算指令逻辑异或运算指令单片机的指令系统-双操作数逻辑运算指令(1)逻辑与运算指令îíì٬٬datadirect
data#A
Adirect
ANL)(;)(;,direct)(direct)(direct)(单片机的指令系统-双操作数逻辑运算指令逻辑与指令常用来屏蔽字节中的某些不用位,其它位保持不变。实现方法:欲屏蔽的位与“0”相与,保持不变的位与“1”相与。【例3-26】已知(A)=39H=00111001B,试分析下面指令的执行结果。(1)ANL A,#0FH(2)ANL A,#0F0H(3)ANL A,#0FFH解:(1)高4位被屏蔽,低4位保持不变,即(A)=09H=00001001B。(2)高4位保持不变,低4位被屏蔽,即(A)=30H=00110000B。(3)8位均保持不变,即(A)=39H=00111001B。单片机的指令系统-双操作数逻辑运算指令单片机的指令系统-双操作数逻辑运算指令(2)逻辑或运算指令îíìÚ¬Ú¬datadirect
data#A
Adirect
ORL)(;)(;,direct)(direct)(direct)(逻辑或指令常用来使字节中某些位置“1”,其它位保持不变。实现方法:欲置位的位与“1”相或,保持不变的位与“0”相或。【例3-27】已知(A)=39H=00111001B,试分析下面指令的执行结果。(1)ORL A,#0FH(2)ORL A,#0F0H(3)ORL A,#00H单片机的指令系统-双操作数逻辑运算指令单片机的指令系统-双操作数逻辑运算指令(3)逻辑异或运算指令îíìŬŬdatadirect
data#A
Adirect
XRL)(;)(;,direct)(direct)(direct)(逻辑异或指令常用来使字节中某些位进行取反操作,其它位保持不变。实现方法:欲取反的位与“1”相异或;保持不变的位与“0”相异或。基于该方法,可以利用异或指令对某单元自身异或,以实现清零操作。【例3-28】已知(A)=39H=00111001B,试分析下面指令的执行结果。(1)XRL A,#0FH(2)XRL A,#0F0H(3)XRL A,#0FFH单片机的指令系统-双操作数逻辑运算指令【例3-29】试编程将存放在片外RAM2000H单元中某数的低4位取反,高2位置1,其余2位清0。参考程序MOV DPTR,#2000HMOVX A,@DPTRXRL A,#00001111BORL A,#11000000BANL A,#11001111BMOVX @DPTR,A单片机的指令系统-双操作数逻辑运算指令控制转移类指令,包括4类:无条件转移指令条件转移指令子程序调用与返回指令空操作指令单片机的指令系统-控制转移类指令(1)长转移指令LJMPaddr16;PC←addr16三字节指令程序的转移范围为64KB
(2)短转移指令AJMPaddr11;PC←(PC)+2,PC10~0←addr11双字节指令程序的转移范围与PC当前值在同一个2KB区域。单片机的指令系统-无条件转移指令双字节指令偏移量rel用8位带符号数补码表示,取值范围为-128~+127。负数表示反向转移,正数表示正向转移。
转移目标地址=SJMP指令所在地址+2+rel若rel=FEH(-2),则目标地址=(PC)+2-2=(PC),即转移的目标地址就是SJMP指令的地址,在汇编指令中该偏移地址可用$符号表示。若在程序的末尾加上SJMP$指令,则程序将在该处进行无限循环,进入等待状态。(3)相对转移指令SJMPrel;PC←(PC)+2,PC←(PC)+rel单片机的指令系统-无条件转移指令单字节指令以DPTR的内容作为基址,以A的内容作为变址,在64KB范围内无条件转移。特点:转移地址可以在程序运行中加以改变,指令执行后不改变DPTR及A中原来的内容。若DPTR为确定值,根据A的不同值就可以实现程序的多分支转移。(4)间接转移指令JMP@A+DPTR;PC←(PC)+1,PC←(A)+(DPTR)单片机的指令系统-无条件转移指令【例3-31】已知累加器A中存放着控制程序转向的编号0-3,ROM中存有起始地址为TABLE的三字节长转移指令表,试编程使单片机能按照累加器A中的编号转去执行相应的命令程序,即当(A)=00H时,执行TAB0分支程序;当(A)=01H时,执行TAB1分支程序;当(A)=02H时,执行TAB2分支程序;当(A)=03H时,执行TAB3分支程序。参考程序:CLR C MOV B,A RLC A ADD A,B MOV DPTR,#TABLE JMP @A+DPTRTABLE: LJMP TAB0 LJMP TAB1 LJMP TAB2 LJMP TAB3单片机的指令系统-无条件转移指令无条件转移指令的对比:AJMP、LJMP、SJMP的共同点:改变PC值,使程序跳转到一个标号处。AJMP、LJMP、SJMP的区别:跳转的范围不同指令构成不同指令长度不同单片机的指令系统-无条件转移指令JMP指令与前3条指令相比有所不同:虽然这条指令的用途也是跳转,但是转到什么地方去不能由标号简单地决定了。因为转移地址是由A和DPTR相加构成的,根据A的不同值就可以实现程序的多分支转移。本指令可代替众多的判别跳转指令,又称为散转指令。单片机的指令系统-无条件转移指令(1)累加器判零条件转移指令A的内容是否为0,是由这条指令以前的其它指令执行的结果决定的,执行这条指令不作任何运算,也不影响标志位。
PC)(PC0A)(relPC)(PC0A)(
rel
JNZJZ¬¹+¬=þýü,则;若,则;若2+rel+2+单片机的指令系统-条件转移指令【例3-32】试编写程序将片内RAM以40H为起始地址的数据块传送到片外RAM以2000H为起始地址的区域,遇0中止。参考程序
MOV R0,#40H MOV DPTR,#2000HLOOP: MOV A,@R0 JZ DONE
MOVX @DPTR,A INC R0 INC DPTR LJMP LOOP DONE: LJMP DONE
单片机的指令系统-条件转移指令(2)比较不相等条件转移指令利用这些指令,可以判断两个无符号数是否相等:如果两数不相等,则可以用Cy来反映哪个数大,哪个数小。如果目的操作数大,则Cy=0,否则Cy=1。因此在程序转移后,利用Cy作进一步的判断,可实现三分支转移。
rel3PC)(PCdata
))(Ri(
rel3PC)(PCdata
)Rn(
rel3PC)(PCdata
)A(reldata,#@RiRnA
CJNE
rel3PC)(PC(direct)
)A(
reldirectA
CJNE++++++++,则;若,则;若,则;若,,则;若,,单片机的指令系统-条件转移指令ïîïíì¹¹¹¹¬¬¬¬【例3-33】试用含有CJNE的指令编写程序,将片内RAM以40H为起始地址的数据块传送到片外RAM以2000H为起始地址的区域,遇0中止。参考程序
MOV R0,#40H MOV DPTR,#2000HLOOP:CJNE @R0,#00H,LOOP1 LJMP $LOOP1:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR LJMP LOOP单片机的指令系统-无条件转移指令【例3-34】已知工作寄存器R0中存放着一个无符号数X,试编写程序求出右式的函数值Y,并存入工作寄存器R1中。参考程序:
MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 LJMP L3L1:JC L2 MOV R1,#0AAH LJMP L3L2:MOV R1,#0FFHL3:LJMP L3单片机的指令系统-无条件转移指令(3)减1(循环)条件转移指令DJNZ Rn,rel;(Rn)-1→(Rn),若(Rn)≠0,则(PC)+2+rel→PCDJNZ direct,rel;(direct)-1→(direct),若(direct)≠0,则(PC)+3+rel→PC这组指令对于构成循环程序是十分有用的,可以指定任何一个工作寄存器或者内部RAM单元作为循环计数器。单片机的指令系统-无条件转移指令【例3-35】试编写程序,将片内RAM以DAT为起点地址的10个单元中的数据求和,并将结果送入SUM单元。假设和不大于255。参考程序1:
MOV A,#00H MOV R0,#DAT MOV R7,#0AH LOOP: ADD A,@R0 INC R0 DJNZ R7,LOOP MOV SUM,A单片机的指令系统-无条件转移指令参考程序2:
MOV A,#00H MOV R0,#DAT MOV R7,#00H NEXT: CJNE R7,#0AH,LOOP
LJMP ENDP LOOP: ADD A,@R0
INC R0 INC R7
LJMP NEXT ENDP: MOV SUM,A单片机的指令系统-无条件转移指令(1)调用指令指令执行时将返回地址入栈SP应设为合适值(默认值07H)
16addrPC),PC((SP)1,(SP)SP
)PC((SP)1,(SP)SP3,PC)(PC
addr16
LC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿梅毒患儿的出院指导
- 卧床患者皮肤护理中的常见问题与解决
- 【浅议女性劳动力的职业与性别歧视问题及处理措施8000字(论文)】
- 【2026】年家用电器产品维修工职业技能鉴定题库及解析(附答案与解释)
- 统编版(2024)七年级下册历史第6课 隋唐时期的中外文化交流 同步练习题(含答案)
- 广东省深圳市物理高二下学期期末复习难点详解
- 临床医学综合诊疗考试复习题库(附答案)
- 浙江省杭州市余杭区英特外国语校2026届中考物理押题试卷含解析
- 2026年河南省新乡市卫辉市重点名校中考三模物理试题含解析
- 10.7静电场中的STSE问题-年高考物理一轮复习100考点100讲
- DB1308∕T 385-2025 低密度林地节水造林技术规程
- 2025年船舶行业数字化船舶管理方案实施方案
- 水资源承载力评价模型研究
- 太赫兹成像技术研究进程
- 2024-2025学年湘教版七年级下学期期末质量评价数学试卷
- 道德与法治新课标解读
- GB/T 12022-2025工业六氟化硫
- DB11-T 695-2025 建筑工程资料管理规程
- 2025嘉兴南湖区公开招聘专职社区工作者15人考试参考题库及答案解析
- 长津湖主题课件
- 跨境物流仓储管理操作规范手册
评论
0/150
提交评论