您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 51单片机汇编语言7-指令系统-2
第3章MCS-51指令系统3.3指令系统MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类:数据传送指令(29条)。算术运算指令(24条)。逻辑运算及移位指令(24条)。控制转移指令(17条)。位操作指令(17条)。第3章MCS-51指令系统3.3.1指令系统中的符号说明指令的书写必须遵守一定的规则,为了叙述方便,我们采用表3.3的约定。第3章MCS-51指令系统表3.3指令描述约定符号含义Rn表示当前选定寄存器组的工作寄存器R0~R7Ri表示作为间接寻址的地址指针R0~R1#data表示8位立即数,即00H~FFH#data16表示16位立即数,即0000H~FFFFHaddr16表示16位地址,用于64K范围内寻址addr11表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址Rel带符号的8位偏移量(-128~+127)Bit位寻址区的直接寻址位(X)X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容←将←后面的内容传送到前面去第3章MCS-51指令系统3.3.2数据传送类指令数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变,即目的地址源地址数据第3章MCS-51指令系统数据传送类指令分类如图3.8所示.图3.8数据传送指令分类数据传送类指令内部8位数据传送指令16位数据传送指令(1条):MOV以累加器A为目的地址的传送指令(4条):MOV以工作寄存器Rn为目的地址的传送指令(3条):MOV以直接地址为目的地址的传送指令(5条):MOV以寄存器间接地址为目的地址的传送指令(3条):MOV交换和查表类指令字节交换指令(3条):XCH半字节交换指令(1条):XCHD累加器A中高4位和低4位交换指令(1条):SWAP查表指令(2条):MOVC堆栈操作指令(2条):PUSH、POP外部数据传送指令(4条):MOVX第3章MCS-51指令系统1.内部8位数据传送指令(15条)内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式:MOV目的操作数,源操作数1)以累加器A为目的地址的传送指令(4条)助记符格式机器码(B)相应操作指令说明机器周期MOVA,Rn11101rrrARnn=0~7,rrr=000~1111MOVA,direct11100101directA(direct)1MOVA,@Ri1110011iA(Ri)i=0,11MOVA,#data01110100dataA#data1第3章MCS-51指令系统累加器A40H寄存器R050H内部RAM:40H30H内部RAM:50H10H例3.1已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。第3章MCS-51指令系统(1)MOVA,#20H(2)MOVA,40H(3)MOVA,R0(4)MOVA,@R0解:(1)MOVA,#20H执行后A=20H。(2)MOVA,40H执行后A=30H。(3)MOVA,R0执行后A=50H。(4)MOVA,@R0执行后A=10H。第3章MCS-51指令系统助记符格式机器码(B)相应操作指令说明机器周期MOVRn,A11111rrrRnAn=0~7,rrr=000~1111MOVRn,direct10101rrrdirectRn(direct)n=0~7,rrr=000~1111MOVRn,#data01111rrrdataRn#datan=0~7,rrr=000~11112)以Rn为目的地址的传送指令(3条)第3章MCS-51指令系统3)以直接地址为目的地址的传送指令(5条)助记符格式机器码(B)相应操作指令说明机器周期MOVdirect,A11111010direct(direct)A1MOVdirect,Rn10001rrrdirect(direct)Rnn=0~7,rrr=000~1111MOVdirect2,direct110000101direct1direct2(direct2)direct12MOVdirect,@Ri1000011idirect(direct)(Ri)i=0,12MOVdirect,#data01110101directdata(direct)#data2注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统4)以寄存器间接地址为目的地址的传送指令(3条)助记符格式机器码(B)相应操作指令说明机器周期MOV@Ri,A1111011i(Ri)Ai=0,11MOV@Ri,direct1110011idirect(Ri)(direct)2MOV@Ri,#data0111010idata(Ri)#data1注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统例3.2已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。(1)MOVA,R6(2)MOVR6,70H(3)MOV70H,50H(4)MOV40H,@R0(5)MOV@R1,#88H第3章MCS-51指令系统寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H第3章MCS-51指令系统解:(1)MOVA,R6执行后A=30H。(2)MOVR6,70H执行后R6=40H。(3)MOV70H,50H执行后 (70H)=60H。(4)MOV40H,@R0执行后 (40H)=60H。(5)MOV@R1,#88H执行后 (66H)=88H。第3章MCS-51指令系统助记符格式机器码(B)相应操作指令说明机器周期MOVDPTR,#data1610010000data15~8data7~0(DPTR)#data16把16位常数装入数据指针2注意:以上指令结果不影响程序状态字寄存器PSW标志。2.16位数据传送指令(1条)第3章MCS-51指令系统3.外部数据传送指令(4条)助记符格式机器码(B)相应操作指令说明机器周期MOVXA,@DPTR11100000A(DPTR)把DPTR所对应的外部RAM地址中的内容传送给累加器A2MOVXA,@Ri1110001iA(Ri)i=0,12MOVX@DPTR,A11110000(DPTR)A结果不影响P标志2MOVX@Ri,A1110001i(Ri)Ai=0,1,结果不影响P标志2注意:①外部RAM只能通过累加器A进行数据传送。②累加器A与外部RAM之间传送数据时只能用间接寻址方式,间接寻址寄存器为DPTR、R0、R1。③以上传送指令结果(未注明的)通常影响程序状态字寄存器PSW的P标志。第3章MCS-51指令系统例3.3把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。解:MOVDPTR,#2040HMOVXA,@DPTR;先将2040H单元的内容传送到累加器A中MOVDPTR,#2560HMOVX@DPTR,A;再将累加器A中的内容传送到2560H单元中第3章MCS-51指令系统助记符格式机器码(B)相应操作指令说明机器周期XCHA,Rn11001rrrARnA与Rn内容互换1XCHA,direct11000101directA(direct)1XCHA,@Ri1100011iA(Ri)i=0,11注意:以上指令结果影响程序状态字寄存器PSW的P标志。2)低半字节交换指令(1条)助记符格式机器码(B)相应操作指令说明机器周期XCHDA,@Ri1101011iA3~0(Ri)3~0低4位交换,高4位不变1注意:以上指令结果影响程序状态字寄存器PSW的P标志。3)累加器A中高4位和低4位交换(1条)助记符格式机器码(B)相应操作指令说明机器周期SWAPA11000100A3~0A7~4高、低4位互相交换1注意:以上指令结果不影响程序状态字寄存器PSW标志。4.交换和查表类指令(9条)1)字节交换指令(3条)第3章MCS-51指令系统例3.4设内部数据存储区2AH、2BH单元中连续存放有4个BCD码(1个BCD码占4位),试编写一程序把这4个BCD码倒序排序,即a3a2a1a0a0a1a2a32AH2BH2AH2BH第3章MCS-51指令系统解:MOVR0,#2AH;将立即数2AH传送到寄存器R0中MOVA,@R0;将2AH单元的内容传送到累加器A中SWAPA;将累加器A中的高4位与低4位交换MOV@R0,A;将累加器A的内容传送到2AH单元中MOVR1,#2BHMOVA,@R1;将2BH单元的内容传送到累加器A中SWAPA;将累加器A中的高4位与低4位交换XCHA,@R0;将累加器A中的内容与2AH单元的内容交换MOV@R1,A;将累加器A的内容传送到2BH单元第3章MCS-51指令系统助记符格式机器码(B)相应操作指令说明机器周期MOVCA,@A+PC10000011A(A+PC)A+PC所指外部程序存储单元内容送A2MOVCA,@A+DPTR10010011A(A+DPTR)A+DPTR所指外部程序存储单元内容送A2注意:①以上指令结果影响程序状态字寄存器PSW的P标志。②查表指令用于查找存放在程序存储器中的表格。4)查表指令(2条)第3章MCS-51指令系统5)堆栈操作指令(2条)助记符格式机器码(B)相应操作指令说明机器周期PUSHdirect11000000directSPSP+1(SP)(direct)将SP加1,然后将源地址单元中的数传送到SP所指示的单元中去2POPdirect11010000direct(direct)(SP)SPSP-1将SP所指示的单元中的数传送到direct地址单元中,然后SPSP-12第3章MCS-51指令系统注意:①堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。②堆栈遵循后进先出的原则安排数据。③堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成:PUSH/POPACC或PUSH/POP0E0H而不能写成:PUSH/POPA④堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。⑤以上指令结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统例3.5设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。解:MOVSP,#30H;设置堆栈指针,SP=30H为栈底地址PUSHACC;SP+1→SP,SP=31H,ACC→(SP)PUSHDPH;SP+1→SP,SP=32H,DPH→(SP)PUSHDPL;SP+1→SP,SP=33H,DPL→(SP)POPDPL;(SP)→DPL,SP-1→SP,SP=32HPOPDPH;(SP)→DPH,SP-1→SP,SP=31HPOPACC;(SP)→ACC,SP-1→SP,SP=30H
本文标题:51单片机汇编语言7-指令系统-2
链接地址:https://www.777doc.com/doc-3319356 .html