您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机应用技术014.9.19资料
第二章单片机汇编语言及程序设计对任何计算机,如果只有硬件(裸机),而没有软件(程序)的支持,就不能发挥其运算和控制功能。指令:程序的最基本单位,指CPU所能进行的操作程序:指完成某项任务的计算机指令的有序集合指令系统:所有指令的集合。不同的CPU具有不同的指令系统。MCS-51的指令系统共有111条指令计算机编程语言机器语言汇编语言高级语言汇编编译04:221MCS-51指令格式汇编语言级指令格式:[标号:]操作码[操作数][;注释]例:LB:MOVA,R2;A←(R2)标号——指令的标识,表示指令的首地址;操作码——操作的命令(指示机器执行何种操作)操作数——参与操作的数据(是操作码的补充),分目的操作数和源操作数。注释——对指令功能的说明,便于程序阅读和维护,不参与操作。04:222机器语言级指令格式:机器语言指令是一种二进制代码,具体包含两个基本的部分:操作码和操作数。机器语言分为单字节、双字节和三字节指令,具体格式分别为:单字节指令:例:MOVA,R0对应的机器语言指令为:E8H双字节指令:例:MOVA,20H对应的机器语言指令为:E520H三字节指令:例:MOV20H,#46H对应的机器语言指令为:752046H操作码操作码操作数操作码第一操作数第二操作数04:223一、MCS—单片机寻址方式*二、单片机常用指令类型*三、单片机指令系统的几个特点*四、单片机中的伪指令*五、汇编语言程序设计-举例*本章主要内容04:224一、MCS-51单片机寻址方式寻址方式的“寻址”:是指寻找参与操作的数据所在的存储器单元的地址。注意:MCS-51指令系统的寻址方式及其对应的寻址空间序号方式常用的变量寻址空间1立即寻址2直接寻址内部RAM的低128B和特殊功能寄存器3寄存器寻址R7-R0,A,B,AB,DPTR4寄存器间接寻址@R0,@R1,SP@R0,@R1@DPTR内部RAM外部RAM0000H~00FFH外部RAM/ROM0000H~FFFFH5相对寻址PC+偏移量程序存储器6变址寻址@A+DPTR,@A+PC程序存储器7位寻址内部RAM和特殊功能寄存器的位地址空间1、立即寻址特点:·指令码中直接含有操作数本身(立即数)·立即数可以是8位或16位·立即数通常用#data或#data16表示·立即数只能作为源操作数·立即数同操作码一起存放在程序存储器中例如:MOVA,#3BH;A←3BHMOVDPTR,#1828H;DPTR←#1828H程序存储器PC→74H3BH累加器A3BH04:2272、直接寻址特点:·指令码中含有操作数地址(8位二进制数);·可用于直接寻址的存储空间是:片内RAM的低128字节和特殊功能寄存器SFR;·直接寻址通常用direct(操作数所在存储单元的物理地址)表示;例:MOV40H,A;(40H)←A·对片内高128B的RAM,direct既可以使用SFR的物理地址,也可以用SFR的名称符号。MOVA,81H;A←(81H)MOVA,SP;A←SP,可读性好04:228程序存储器PC→F5H40H累加器A片内RAM40H3BH演示MOV40H,A;(40H)←A3BH04:2293、寄存器寻址特点:·操作数在R7-R0,A,B,AB,DPTR中,指令码中含有该操作数的寄存器号;·操作数位于片内RAM中MOVA,Rn;A←RnINCRn;Rn←Rn+1程序存储器PC→00001000PSWRS1RS0片内RAM00H3BH00000A3BH00004:22104、寄存器间接寻址特点:·指令码中含有存放该操作数地址的寄存器号;·间址寄存器采用@R0,@R1,@DPTR表示;·@R0,@R1用于对片内RAM和外部RAM(0000H~00FFH)寻址,@DPTR的寻址范围是片外ROM/RAM的全部64KB区域;·寄存器间址指令不能用于寻址SFRMOVA,@R0;A←(R0)R03A片内RAM3AH3BHA3BH04:22115、变址寻址特点:·指令码中隐含有作为基地址寄存器用的数据指针DPTR或程序计数器PC(存放基地址);·指令码中也隐含有累加器A(A中存放地址偏移量,00H~FFH范围内的无符号数);·寻址空间是程序存储器。MOVCA,@A+PC;A←(A+PC)MOVCA,@A+DPTR;A←(A+DPTR)例:假设A中的内容为05H,DPTR的内容为0400H,程序存储器0405H单元的内容为2DH,则MOVCA,@A+DPTR执行后A的内容为2DH04:2212022000HAIRDPTRALUROM2000H932001HX12002HX22002HX293演示:MOVCA,@A+DPTR;A←(A+DPTR)04:22136、相对寻址特点:·相对转移指令的指令码中含有相对地址偏移量;·相对转移指令分为:短转移指令和长转移指令(分别为双字节和三字节);·PC的当前值+相对地址偏移量rel=下一条要执行指令的地址;·PC的当前值是指相对转移指令从程序存储器中取出后的PC值。2000H8054HSJMPrel;PC←PC+2+rel04:22142000HAPCALUROM2000H80H2001H54H2002H24H2003H05H2056H74H05H2002H54H演示:2000H8054HSJMP54H;PC←2056H2056H04:22157、位寻址特点:·位寻址指令的指令码中含有位地址;·位寻址指令中位地址用bit表示(字节地址direct);·位寻址区:片内RAM位寻址区20H~2FH和11个SFR;·位地址的表示方法:MOVC,7FH;Cy←(7FH)MOVC,2FH.7;Cy←(7FH)MOVC,ACC.7;Cy←ACC.7A1BIT7FH——位地址赋值伪指令MOVC,A1;Cy←2FH.7,A1为符号位地址*04:2216RAM2FH20H7FH00H1演示:D200HSETB00H;00H←104:2217二、单片机常用指令类型数据传送指令(28条)将源地址中操作数传送到目的地址的指令。算数运算指令(24条)对两个操作数进行加、减、乘、除等运算的指令。逻辑操作和环移指令(25条)对两个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作;对累加器A中数进行环移(左环移、右环移,带进位、不带进位)控制转移指令(17条)条件转移、无条件转移、调用和返回等指令(改变PC中值为目标)位操作指令(布尔变量操作指令)(17条)位传送、位置位、位运算和位控制转移指令。04:22181、数据传送指令(28条)此类指令不影响Cy,AC,OV标志,只影响奇偶标志P。片内RAM单元之间的数据传送指令(15条)指令的源操作数和目的操作数地址都在单片机内部,是片内RAM或SFR的地址。·立即寻址型传送指令MOVA,#data;A←dataMOVRn,#data;Rn←dataMOV@Ri,#data;(Ri)←dataMOVdirect,#data;direct←data04:22191、数据传送指令(28条)·直接寻址型传送指令指令操作码中至少含有一个操作数的直接地址。MOVA,direct;A←(direct)MOVRn,direct;Rn←(direct)MOV@Ri,direct;(Ri)←(direct)MOVdirect2,direct1;direct2←(direct1)注:目的存储单元有累加器A、工作寄存器和片内RAM单元(包括SFR的字节地址)。04:22201、数据传送指令(28条)·寄存器寻址型传送指令MOVA,Rn;A←RnMOVRn,A;Rn←AMOVdirect,A;direct←AMOVdirect,Rn;direct←Rn04:22211、数据传送指令(28条)·寄存器间址型传送指令MOVA,@Ri;A←(Ri)MOV@Ri,A;(Ri)←AMOVdirect,@Ri;direct←(Ri)04:22221、数据传送指令(28条)外部数据传送指令(外部RAM/ROM)·16位数传送指令MOVDPTR,#data16;DPTR←data1616位立即数是外部RAM/ROM的地址,其高8位送入DPH,低8位送入DPL。·外部ROM的字节传送指令(查表指令)MOVCA,@A+DPTR;A←(A+DPTR)远程查表MOVCA,@A+PC;PC←PC+1,A←(A+PC)近程查表04:22231、数据传送指令(28条)·外部RAM的字节传送指令实现外部RAM和累加器A之间的数据传送。MOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←AMOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←A注:前面两条指令访问外部RAM:0000H~00FFH后面两条指令访问外部RAM:0000H~FFFFH04:22241、数据传送指令(28条)堆栈操作指令PUSHdirect;SP←SP+1,(SP)←(direct)POPdirect;direct←(SP),SP←SP-1堆栈操作指令是直接寻址指令,书写格式为:PUSHACCPUSH00HPOPACCPOP00H注:弹出指令不会改变堆栈区存储器单元中的内容。04:22251、数据传送指令(28条)数据交换指令XCHA,Rn;A↔RnXCHA,direct;A↔(direct)XCHA,@Ri;A↔(Ri)XCHDA,@Ri;A3~0↔(Ri)3~0注:只是将累加器A中的内容和片内RAM单元内容相互交换。04:22262、算术运算指令(24条)加法指令(13条)·不带Cy加法指令ADDA,Rn;A←A+RnADDA,Direct;A←A+(Direct)ADDA,@Ri;A←A+(Ri)ADDA,#data;A←A+data·对PSW标志位均有影响;·计算机总是按带符号数法则运算,产生PSW标志位。·两个带符号数相加,运算结果是否溢出应判断OV标志位。04:22272、算术运算指令(24条)·带Cy加法指令ADDCA,Rn;A←A+Rn+CyADDCA,Direct;A←A+(Direct)+CyADDCA,@Ri;A←A+(Ri)+CyADDCA,#data;A←A+data+Cy·Cy——指令执行前的Cy值。·常用于多字节无符号数的加法运算04:22282、算术运算指令(24条)·加1指令INCA;A←A+1INCRn;Rn←Rn+1INCDirect;Direct←(Direct)+1INC@Ri;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1只影响奇偶校验标志位04:22292、算术运算指令(24条)减法指令(8条)·带Cy减法指令SUBBA,Rn;A←A–Rn-CySUBBA,Direct;A←A-(Direct)-CySUBBA,@Ri;A←A-(Ri)-CySUBBA,#data;A←A–data-Cy·对PSW标志位均有影响;·计算机总是按带符号数法则运算,产生PSW标志位。·两个带符号数相减,运算结果是否溢出应判断OV标志位。04:22302、算术运算指令(24条)·减1指令DECA;A←A-1DECRn;Rn←Rn-1DECDirect;Direct←(Direct)-1DEC@Ri;(Ri)←(Ri)-1只影响奇偶校验标志位04:22312、算术运算指令(24条)十进制调整指令(1条)DAA;若AC=1或A3~A09,则A←A+06H若Cy=1或A7~A49,则A←A+60H·通常紧跟在加法指令后使用,对A中的操作数进行十进制调整。·专用于实现BCD运算。04:22322、算术运算指令(24条)乘法、除法指令(2条)MULAB;A×B=BA,形成标志对标志位的影响:Cy=0;若B不等于0,则OV=1,否则OV=0;P由A中1的奇偶性确定。DIVAB;A÷B=A…B,形成标志对标志位的影响:Cy=0;执行过程中,若发现B等于0,则OV=1;P由A中1的奇偶性确定。04:22333、逻辑运算指令(25条)
本文标题:单片机应用技术014.9.19资料
链接地址:https://www.777doc.com/doc-4012376 .html