




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-3-71第第3章章MCS-51MCS-51指令系统指令系统 1 1 汇编语言与指令系统汇编语言与指令系统 2 2 寻址方式寻址方式 3 3 数据传送类指令数据传送类指令 4 4 算术操作指令算术操作指令 逻辑操作类命令逻辑操作类命令 6 6 程序转换类指令程序转换类指令 7 7 位操作指令位操作指令 8 8 汇程序格式及伪指令汇程序格式及伪指令 应用举例应用举例 2022-3-721 1 汇编语言与指令系统汇编语言与指令系统机器语言(二进制代码)机器语言(二进制代码)效率高,程序短,执行速度快,效率高,程序短,执行速度快,可读性差,通用性差可读性差,通用性差汇编语言(指令助记符)汇编
2、语言(指令助记符)解释解释编译编译高级语言高级语言效率低,程序庞大,效率低,程序庞大,可读性好,可移植性好可读性好,可移植性好MCS51指令系统指令系统l l111条指令,分为数据传送,算术操作,逻辑操作,程序转移,条指令,分为数据传送,算术操作,逻辑操作,程序转移,位操作位操作5类。类。l l单字节单字节49条条,双字节双字节46条条,三字节三字节16条条l l单周期单周期64条条,1s(12MHz时)时);双周期双周期45条条,2s;四周期四周期2条条4s2022-3-73 标号:标号: 操作码操作码 操作数操作数1 1,操作数,操作数22;注释;注释 换行表示一条指令结束。换行表示一条指
3、令结束。 例:例: LOOPLOOP: MOV A MOV A,#40H #40H ;取参数取参数1.标号:标号:指令的符号地址指令的符号地址2.操作码:操作码:指明指令功能。指明指令功能。3.操作数:操作数:指令操作对象指令操作对象数据、地址、寄存器名及约定符号。数据、地址、寄存器名及约定符号。4.注释行:注释行:说明指令在程序中的作用。说明指令在程序中的作用。操作码和操作数操作码和操作数是指令主体。是指令主体。MOV_move传送传送XCH_exchange交换交换ANL_andlogic与逻辑运算与逻辑运算XRL_exclusiveor异或运算异或运算MUL_Multiply乘法乘法RR
4、_rotateright右循环右循环SJMP_shortjump短跳转短跳转RET_return子程序返回子程序返回2022-3-74一一.立即寻址方式立即寻址方式指令中给出实际操作数据指令中给出实际操作数据(立即数立即数),一般用于为寄存器或,一般用于为寄存器或存储器赋常数初值。存储器赋常数初值。举例:举例:8位立即数:位立即数:MOVA,#40H;A40H16位立即数:位立即数:MOVDPTR,#2100H;DPTR2100H2寻址方式寻址方式2022-3-75二二. .寄存器寻址方式寄存器寻址方式指令操作数为寄存器名,数据在寄存器中。指令操作数为寄存器名,数据在寄存器中。例例: :MOV
5、 AMOV A,R0R0;A AR0R0 MOV A MOV A,R2R2;A AR2R2 MOV R7 MOV R7,A A;R7R7AA 2寻址方式寻址方式2022-3-762寻址方式寻址方式三三. .寄存器间接寻址寄存器间接寻址 指令的操作数为寄存器名,寄存器中为数据地指令的操作数为寄存器名,寄存器中为数据地址。存放地址的寄存器称为间址寄存器或数据指址。存放地址的寄存器称为间址寄存器或数据指针。针。MOV AMOV A,RjRjMOVX AMOVX A,Rj Rj MOVX AMOVX A,DPTR DPTR 等等注意:注意: j=0 j=0、1 1 2022-3-772寻址方式寻址方式
6、四四. .直接寻址直接寻址 指令操作数是存储器单元地址,数据在存储器单元中。指令操作数是存储器单元地址,数据在存储器单元中。MOVA,30HACALLaddr11AJMPaddr11LCALLaddr16LJMPaddr16直接位寻址直接位寻址SETB80H等等直接寻址方式对数据操作时,地址是固定值,而地址所指直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。定的单元内容为变量形式。思考:思考:直接寻址方式指令和立即寻址方式指令的形式有什么直接寻址方式指令和立即寻址方式指令的形式有什么不同?不同?2022-3-78五五. .基础寄存器加变址寄存器间接寻址基础寄存器加变址
7、寄存器间接寻址 数据在存储器中,指令给出的数据地址中为数据的数据在存储器中,指令给出的数据地址中为数据的基地址和偏移量。以基地址和偏移量。以PCPC或或DPTRDPTR作为基本地址寄存器,以作为基本地址寄存器,以A A作为变址寄存器。作为变址寄存器。数据地址数据地址 = = 基地址基地址 + + 偏移量。偏移量。2寻址方式寻址方式例:例:MOVCA, A+DPTRMOVCA, A+PC2022-3-79六六.相对寻址相对寻址 指令给出地址的相对偏移量指令给出地址的相对偏移量rel,在加上,在加上PC中的当前值,如中的当前值,如此得到真正的数据地址。此得到真正的数据地址。例:例:1000H:JC
8、55H;若若Cy为为1,则转移,则转移设指令执行前设指令执行前Cy=1,执行指令后,执行指令后,PC=?2寻址方式寻址方式2022-3-7103数据传送类指令数据传送类指令3-1以累加器以累加器A为一方的传送指令(单周期)为一方的传送指令(单周期)(1)MOVA,Rii=07,具体单元由具体单元由PSW的的RS0,RS1定定MOVRi,A(2)MOVA, Rj片内片内RAM(51系列系列Rj值为值为07F,52系列,系列,Rj为为0FF)MOV Rj,A的数据与的数据与A之间的传送之间的传送j=0、12022-3-7113-1以累加器以累加器A为一方的传送指令(单周期)为一方的传送指令(单周期
9、)(3)MOVA,direct访问片内访问片内RAM,direct为片内为片内RAM地址地址MOVdirect,A注意:对于注意:对于51,它访问所有,它访问所有RAM(128字节)及有定义的字节)及有定义的SFR21字节字节对于对于52,它只访问,它只访问128字节字节RAM(其余(其余RAM有(有(2)方式访问)方式访问)及有定义的及有定义的SFR(26字节)。字节)。3数据传送类指令数据传送类指令2022-3-7123数据传送类指令数据传送类指令3-2不以累加器不以累加器A为一方传送指令(二周期)为一方传送指令(二周期)(1)MOVdirectRi访问片内访问片内RAM的低的低128字节
10、及字节及SFRMOVRi,direct双字节指令,第双字节指令,第2字节为直接寻址的地址字节为直接寻址的地址2022-3-7133-2不以累加器不以累加器A为一方传送指令(二周期)为一方传送指令(二周期)(2)MOVdirect, Rj某片内某片内RAM单元(单元(0FF)内容送片)内容送片内内RAM(128字节)或字节)或SFRMOV Rj,direct3数据传送类指令数据传送类指令2022-3-7143数据传送类指令数据传送类指令3-2不以累加器不以累加器A为一方传送指令(二周期)为一方传送指令(二周期)(3)MOVdirect,direct某直接寻址字节送另一直接寻址字节某直接寻址字节送
11、另一直接寻址字节(128RAM及及SFR),不可访问),不可访问52系列的高系列的高128字节片内字节片内RAM2022-3-7153数据传送类指令数据传送类指令3-3用立即数置数的指令用立即数置数的指令(1)MOVA,#data双字节指令,第双字节指令,第2字节为立即数字节为立即数(2)MOVRi,#data双字节指令,第双字节指令,第2字节为立即数字节为立即数(3)MOV Rj,#data立即数送片内立即数送片内RAM双字节指令,第双字节指令,第2字节为立即数字节为立即数(4)MOVdirect,#data立即数送直接地址(片内立即数送直接地址(片内RAM07F或或SFR)三字节指令,第三
12、字节指令,第2字节为直接地址,第字节为直接地址,第3字节为立即数字节为立即数(5)MOVDPTR,#data16位立即数送数据指针位立即数送数据指针唯一的一条唯一的一条16位数据传送指令,位数据传送指令,三字节指令三字节指令2022-3-7163数据传送类指令数据传送类指令3-4访问片外访问片外RAM(三周期)(三周期)访问片外访问片外RAM,用,用MOVX指针指针(1)MOVXA, Rj访问片外访问片外0FF单元,单元,8位编址,单字节位编址,单字节指令指令MOVX Rj,A(2)MOVXA, DPTR访问片外访问片外0000FFFF单元,单元,16位编位编址,单字节指令址,单字节指令MOV
13、X DPTR,A2022-3-7173数据传送类指令数据传送类指令3-5基址寄存器加变址寄存器间址指令(基址寄存器加变址寄存器间址指令(2周期)周期)(1)MOVCA, A+DPTR访问程序存贮器,单字节指令访问程序存贮器,单字节指令例例执行前执行前A=5DPTR=2000H在在2005H单元存放值为单元存放值为8,则,则执行后执行后A为为8(2)MOVCA, A+PC访问程序存贮器,单字节指令访问程序存贮器,单字节指令注意:若当前单字节为注意:若当前单字节为2000地址,则地址,则PC值为值为2001,因为执行此指,因为执行此指令时,令时,PC已已+12022-3-7183数据传送类指令数据
14、传送类指令3-6交换指令交换指令数据交换,互为源地址与目的地址(单周期)数据交换,互为源地址与目的地址(单周期)(1)XCHA,Ri单字节单字节(2)XCHA, Rj单字节单字节(3)XCHA,direct双字节,第双字节,第2字节为直接寻址字节为直接寻址(4)XCHDA, Rj单字节指令,单字节指令,交换低半字节交换低半字节(5)SWAPA单字节指令,单字节指令,交换交换A的高低半字节的高低半字节SAM11.ASMSAM11.ASM2022-3-7193数据传送类指令数据传送类指令3-7进栈出栈(进栈出栈(2周期)周期)(1)PUSHdirect双字节指令,第双字节指令,第2字节直接寻址字节
15、直接寻址(SP)(SP)+1(SP)(direct)(2)POPdirect双字节指令,第双字节指令,第2字节为直接寻址字节为直接寻址(direct)(SP)(SP)(SP)-1SAM12.ASMSAM12.ASM2022-3-720说明:说明: 只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。1. 一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2MOV R2,R02. 间址寄存器只能使用 R0、R1。 非法指令: MOV A,R23. SFR区只能直接寻址,不能用寄存器间接寻址。非法指令: MOV R0,#80H MOV A,R04. 指令
16、表:指令字节数,机器周期数2022-3-7214算术操作类指令算术操作类指令INCDPTR为周期为周期MULAB为周期为周期DLVAB其余为单周期其余为单周期4-1加法指令加法指令(1)ADDA,Ri单字节指令单字节指令ADDCA,Ri进位位进入最低位进位位进入最低位(2)ADDA,RRj j 单字节指令单字节指令ADDCA,RRj j 访问片内访问片内RAMRAM(0 0FFFF)(3 3)ADD AADD A,direct direct 直接寻址字节与累加器相加,直接寻址字节与累加器相加,ADDC AADDC A,direct direct 双字节指令,第双字节指令,第2 2字节为直接寻址
17、字节为直接寻址(4 4)ADD AADD A, #data #data 立即数与累加数相加立即数与累加数相加 ADDC AADDC A, #data #data 双字节指令,第双字节指令,第2 2字节为立即数字节为立即数2022-3-7224算术操作类指令算术操作类指令4-1加法指令加法指令说明:说明: * * 加法运算时,加法运算时,PSWPSW的影响的影响 相加后整个字节有溢出相加后整个字节有溢出 C C置位,否则置位,否则C C为为0 0 低半字节有溢出低半字节有溢出 ACAC置位,否则置位,否则ACAC为为0 0 最高位与次高位有一个进位,最高位与次高位有一个进位,OVOV置位,否则置
18、位,否则OVOV为为0 0 * *加法有带符号数相加与不带符号数相加之分,但机器本身是做加法有带符号数相加与不带符号数相加之分,但机器本身是做统一处理,并不认识有无符号,也不接受负数输入(要用补码表统一处理,并不认识有无符号,也不接受负数输入(要用补码表示),运算结果要由人为判定。示),运算结果要由人为判定。 * * OVOV为为1 1表示超出一个字节对有符号数的表示范围,表示超出一个字节对有符号数的表示范围,-128-128127127SAM13.ASMSAM13.ASM2022-3-7234算术操作类指令算术操作类指令4-2 4-2 减法指令减法指令 均涉及进位位均涉及进位位(1 1)SU
19、BB ASUBB A,R Ri i 单字节单字节 A-RA-Ri i-C-C(2 2)SUBB ASUBB A,RRj j 单字节单字节 片内片内RAMRAM(3 3)SUBB ASUBB A,direct direct 双字节双字节 第第1 1字节为字节为95H95H,第二字节为直接地址,第二字节为直接地址(4 4)SUBB ASUBB A,#data #data 双字节,第二字节为双字节,第二字节为data data SAMPLE14.ASMSAMPLE14.ASM2022-3-7244算术操作类指令算术操作类指令4-2 4-2 减法指令减法指令说明:说明:* * 减法运算影响减法运算影响
20、PSWPSW 不够减(最高位有借位)不够减(最高位有借位) C=1C=1 低半字节不够减低半字节不够减AC=1C=1 最高位与次高位不同时借位(有一个)最高位与次高位不同时借位(有一个) OV=1 OV=1 否则为否则为0 0C OV C OV (+ +)- -(+ +) (+ +)- -(- -) (- -)- -(+ +) (- -)- -(- -)0 0 127-1=126 -1-1=-2 -1-(-128)=1270 0 127-1=126 -1-1=-2 -1-(-128)=1270 1 0 1 -128-127=1-128-127=11 0 1-127=-126 1-(-1)=2
21、-128-(-1)=-127 1 0 1-127=-126 1-(-1)=2 -128-(-1)=-127 1 1 1 1 127-(-128)=-1127-(-128)=-12022-3-7254算术操作类指令算术操作类指令4-2 4-2 减法指令减法指令例:例:80H-81H80H-81H 128-129 -1 128-129 -1 正确(有符号数)正确(有符号数)1000 0000 128-1000 0000 128-(-127-127) 255 255 正确,无符号数正确,无符号数1000 0001 C=1 OV=0 -128-129 -257 1000 0001 C=1 OV=0 -
22、128-129 -257 出错出错1111 1111 -128-1111 1111 -128-(-127-127) -1 -1 正确,有符号数正确,有符号数注:无论加法运算,还是减法运算,均掌握规律。注:无论加法运算,还是减法运算,均掌握规律。l 只要给定两数只要给定两数0000FFHFFH,运算后其结果是定的,对,运算后其结果是定的,对PSWPSW相关位(相关位(C C、OVOV、ACAC等)的影响也是定的。等)的影响也是定的。l 得到的结果是否正是用户所需的,要看操作数的其正意义,(比得到的结果是否正是用户所需的,要看操作数的其正意义,(比如如FFHFFH可能代表可能代表-1-1,也可能代
23、表,也可能代表255255),该结果可能有效,也可能无),该结果可能有效,也可能无效,可能当成有符号数,也可能当成无符号数。效,可能当成有符号数,也可能当成无符号数。l 用户按照你输入的操作数的具体意图及用户按照你输入的操作数的具体意图及PSWPSW的相关位来读取结果。的相关位来读取结果。 2022-3-7264算术操作类指令算术操作类指令4-34-3加加1指令指令 (不影响标志位)(不影响标志位)(1 1)INC A INC A 单字节单字节(2 2)INC RINC Rj j 单字节单字节(3 3)INC RINC Rj j 单字节单字节(4 4)INC direct INC direct
24、 双字节,第二字节为直接地址双字节,第二字节为直接地址(5 5)INC DPTR INC DPTR 单字节单字节 。SAMPLE16.ASMSAMPLE16.ASM 2022-3-7274算术操作类指令算术操作类指令4-44-4减减1指令指令 (不影响标志位)(不影响标志位)(1 1)DEC ADEC A(2 2)DEC RDEC R j j(3 3)DEC RDEC Rj j(4 4)DEC direct DEC direct SAMPLE17.ASMSAMPLE17.ASM2022-3-7284算术操作类指令算术操作类指令4-5 4-5 其它算术操作指令其它算术操作指令(1 1)DA A
25、DA A 单字节,累加器内容十进制调整单字节,累加器内容十进制调整 机器操作是按机器操作是按2 2进制,如要作进制,如要作BCDBCD码运算,则需调整,例:码运算,则需调整,例: (3838)BCDBCD+ +(8989)BCDBCD 0011 1000 1100 0001 0011 1000 1100 0001 1000 1001 0110 0110 127 1000 1001 0110 0110 127 1100 0001 10010 0111 1100 0001 10010 0111 非法非法 AC=1AC=1l A A为为1或低四位非法,低或低四位非法,低4位位l 为或高四位非法,高位
26、为或高四位非法,高位l 不会同时出现二者不会同时出现二者l 调整过程运算结果,只影响,不影响、调整过程运算结果,只影响,不影响、 SAMPLE15.ASMSAMPLE15.ASM2022-3-7294算术操作类指令算术操作类指令4-5 4-5 其它算术操作指令其它算术操作指令()()()()结果的高位低位()()结果的高位低位单字节周期指令不影响单字节周期指令不影响影响标志位:影响标志位:;积大于积大于255,为;,为;积小于等于积小于等于255,为,可只取中结果。,为,可只取中结果。()()()()商余数()()商余数影响标志位:;除数为时,为,否则为。影响标志位:;除数为时,为,否则为。S
27、AMPLE18.ASMSAMPLE18.ASM 2022-3-730逻辑操作类命令逻辑操作类命令共条共条direct direct datadatadirect direct datadata为两个机器周期为两个机器周期direct direct datadata一、与指令一、与指令:用于修改某些单元的内容,用读修改写的方式用于修改某些单元的内容,用读修改写的方式控制位为时,使相关位清,这则保持不变。控制位为时,使相关位清,这则保持不变。ANLANL,i i 单单 ANL AANL A, #0FEH#0FEHANLANL, j j 单单ANL PSWANL PSW, #1110 0111B#1
28、110 0111BANL AANL A,direct direct 双双ANL directANL direct,A A 双双 无法修改无法修改5252的高的高128128字节字节RAMRAMANL AANL A, #data #data 双双ANL directANL direct,#data #data 三三 2022-3-731逻辑操作类命令逻辑操作类命令二、或指令二、或指令 控制位为控制位为0 0,则保持不变,为,则保持不变,为1 1则是则是1 1ORL AORL A,R Ri i 单单ORL AORL A,RRj j 单单ORL AORL A,direct direct 双双ORL
29、directORL direct,A A 双双ORL AORL A,#data #data 双双ORL directORL direct,#data #data 三三例例 P P1 1端口前三位不变,后五位由端口前三位不变,后五位由A A的后的后5 5位决定位决定ANL AANL A,#0001 1111B A#0001 1111B A前三位为前三位为0 0,后,后5 5位不变位不变ORL PORL P1 1,A PA P1 1前三位不变,后前三位不变,后5 5位中根据位中根据A A,把该置,把该置1 1的置位的置位ORL AORL A,#1110 0000 B A#1110 0000 B A
30、前三位为前三位为1 1,后,后5 5位不变位不变ANL PANL P1 1,A PA P1 1前三位不变,后前三位不变,后5 5位中根据位中根据A A,把该置,把该置0 0的清的清0 0 SAMPLE19.ASMSAMPLE19.ASM2022-3-732逻辑操作类命令逻辑操作类命令三、异或指令三、异或指令 控制位为控制位为1 1,使原相应位改变,使原相应位改变 控制位为控制位为0 0,使相应位不变,使相应位不变XRL AXRL A, R Ri i 单单XRL AXRL A, RRj j 单单XRL AXRL A,direct direct 双双XRL directXRL direct,A A
31、 双双XRL AXRL A,#data #data 双双XRL directXRL direct,#data #data 三三 第第2 2为直接地址,第为直接地址,第3 3字节为立即数字节为立即数SAMPLE20.ASMSAMPLE20.ASM 2022-3-733四、四、A A操作指令操作指令1.A A取反指令:取反指令:CPL A CPL A ;A/A ,A/A ,单字节单字节 2. A A清清0 0指令:指令: CLR A CLR A ;A0 ,A0 ,单字节单字节3.循环移位指令:循环移位指令:1)8位循环指令:位循环指令:RL A ;A循环左移一位,单字节单字节RR A ;A循环右移
32、一位,单字节单字节2)9位循环指令:位循环指令:RLC A;带C循环左移一位,单字节单字节RRC A;带C循环右移一位,单字节单字节SAMPLE21.ASMSAMPLE21.ASMC逻辑操作类命令逻辑操作类命令C2022-3-7346 6 程序转换类指令程序转换类指令共共1717条条NOP NOP 空操作,只延时,空操作,只延时,1 1个机器周期个机器周期其余均为其余均为2 2个机器周期个机器周期一、无条件转移一、无条件转移(1 1)绝对转移指令:)绝对转移指令:AJMP addr11 AJMP addr11 (PCPC) (PCPC)+2 +2 双字节指令双字节指令 (PCPC10100 0
33、) addr 11addr 11 (PCPC151511)不变)不变l 转移发生在转移发生在PCPC当前值(当前值(PC+2PC+2后)所在的后)所在的2K2K范围内。范围内。l 同样的指令,由同样的指令,由PCPC当前值不同,程序入口会不一样当前值不同,程序入口会不一样l 在在2K2K内转移内转移例:例: AJMP 111 1111 1111 BAJMP 111 1111 1111 B执行后入口为执行后入口为 07FFH07FFH若上面指令在若上面指令在07FFH07FFH单元,则单元,则+2+2后为后为0801H0801H,入口变为,入口变为0FFFH0FFFH单元单元SAMPLE22.A
34、SMSAMPLE22.ASM 2022-3-7356 6 程序转换类指令程序转换类指令一、无条件转移一、无条件转移(2 2)长转移指令:长转移指令:LJMP addr 16 LJMP addr 16 三字节,第三字节,第2 2字节为高字节为高8 8位,位,第第3 3字节为低字节为低8 8位位 (PCPC) (PCPC)+3+3 (PCPC) addr 16addr 16 在范围在范围64K64K内转移内转移(3 3)相对短相对短转移指令:转移指令:SJMP rel SJMP rel 相对转移,相对转移,-128-128127127范围内范围内 (PCPC) (PCPC)+2 +2 双字节双字节
35、 (PCPC) (PCPC)+ +相对地址相对地址 在在1 1页内转移,汇编编程时,页内转移,汇编编程时,relrel为地址标号为地址标号(4 4)相对长相对长转移指令:转移指令:JMP A+DPTR JMP A+DPTR 单字节单字节 (PCPC) (A A)+ +(DPTRDPTR) 在在64K64K范围内转移范围内转移SAMPLE23.ASMSAMPLE23.ASM2022-3-7366 6 程序转换类指令程序转换类指令二、二、 条件转移指令条件转移指令(1 1)累加器内容为零转移指令:累加器内容为零转移指令:JZ rel JZ rel 双字节指令,在双字节指令,在1 1页页内(内(25
36、6256)转移,)转移,relrel为相对地址,为相对地址,A A累器为累器为0则转则转(2 2)累加器内容不为零转移指令:累加器内容不为零转移指令:JNZ rel JNZ rel 同上,同上,A A不为不为0 0则则转,双字节指令转,双字节指令2022-3-737(3 3)累加器内容与某片内累加器内容与某片内RAM单元(低单元(低128字节)或某专用寄字节)或某专用寄存器内容不等转移指令存器内容不等转移指令 CJNE A CJNE A,directdirect,relrel 三字节,第三字节,第2 2为直接地址,第为直接地址,第3 3字节为相对地址字节为相对地址 A A与与directdir
37、ect内容不等则转内容不等则转(4 4)累加器内容与立即数不等转移指令累加器内容与立即数不等转移指令 CJNE A CJNE A,#data, rel#data, rel三字节,三字节,A A与与#data#data不等则转不等则转(5 5)某工作寄存器内容与立即数不等转移指令某工作寄存器内容与立即数不等转移指令 CJNE R CJNE Ri i,#data#data,relrel R Ri i(I=0I=07 7)与)与#data#data不等则转,三个字节不等则转,三个字节(6 6)某片内某片内RAM单元内容与立即数不等转移指令单元内容与立即数不等转移指令 CJNE R CJNE Rj j
38、,#data#data,rel rel 三个字节,片内三个字节,片内RAMRAM内容同内容同#data#data比较比较二、二、 条件转移指令条件转移指令6 6 程序转换类指令程序转换类指令2022-3-738(7 7)某工作寄存器内容减某工作寄存器内容减1不为不为0转移指令转移指令 DJNZ R DJNZ Ri i, rel , rel 双字节双字节 R Ri i(i=0=07 7),内容先减),内容先减1 1,再判断,不为,再判断,不为0 0则转则转(8 8)某片内某片内RAM单元(低单元(低128字节)或某专用寄存器内容减字节)或某专用寄存器内容减1不不为为0转移指令转移指令 DJNZ
39、direct DJNZ direct,rel rel 三字节三字节 (directdirect)-1 -1 不为不为0 0则转则转 SAMPLE24.ASMSAMPLE24.ASM6 6 程序转换类指令程序转换类指令二、二、 条件转移指令条件转移指令2022-3-7396 6 程序转换类指令程序转换类指令6-2 6-2 条件转移指令条件转移指令例:例: MOV RMOV R0 0,#0AH#0AH LP LP:CPL PCPL P1 1。0 0 ;1个周期个周期 DJNZ RDJNZ R0 0,LP LP ;2 2个周期个周期 DONEDONE:每每3 3个器周期个器周期P P1 1。0 0反
40、向一次,同时反向一次,同时R R0 0减减1 1,故结果为,故结果为假定假定P P1 1。0 0原为原为0 30 3个机器周期个机器周期出现出现5 5个周期方波个周期方波 2022-3-7406 6 程序转换类指令程序转换类指令 (PCPC) (PCPC)+2+26-36-3调子程序调子程序 (SPSP) (SPSP)+1+1(1)(1)绝对调子指令:绝对调子指令:ACALL addr11 ACALL addr11 (SPSP) (PCPC7 70 0)双字节指令双字节指令 (SPSP) (SPSP)+1+1用在当前用在当前PCPC所所在的在的2K2K范围内范围内 (SPSP) (PCPC15
41、158 8) (PCPC10100 0) addr11addr11(2)(2)长调子指令:长调子指令:LCALL addr16 LCALL addr16 三字节指令三字节指令 执行同前面执行同前面类似,只是类似,只是PCPC要加要加3 3,而更新,而更新PCPC是是addr 16addr 16,在在64K64K范围内调用子程范围内调用子程序序(PCPC) (PCPC)+3+3 (SPSP) (SPSP)+1+1(SPSP) (PCPC7 70 0)(SPSP) (SPSP)+1+1(SPSP) (PCPC15158 8)(PCPC) addr16addr162022-3-741(3)返主指令:
42、返主指令:RET单字节单字节(PC)(PC)+1(PC158)(SP)(SP)(SP)-1(PC70)(SP)(SP)(SP)-1l 在执行时在执行时PC仍要仍要+1,只不过由于要全部更新,故不强调,只不过由于要全部更新,故不强调l PC保留是先低后高字节,恢复是先高后低字节。保留是先低后高字节,恢复是先高后低字节。(4)RETI中断返回指令,功能与中断返回指令,功能与RET同同只是先要恢复优先级触发器为只是先要恢复优先级触发器为02022-3-7427 7 位操作指令位操作指令MCS-51MCS-51单片机有位处理功能,适合于位处理、逻辑控制任务。单片机有位处理功能,适合于位处理、逻辑控制任
43、务。位的表示方式:位地址位的表示方式:位地址 比如比如PSWPSW的最低位的最低位P P,可用,可用D D0H表示表示点方式点方式 PSW.0PSW.0位名称表示位名称表示 P P标号表示少用(后面讲,标号标号表示少用(后面讲,标号bit bit 位)位)7-1 7-1 位传送位传送 1 1 个机器周期个机器周期 bitbit代表寻址位代表寻址位(1 1)MOV C bit MOV C bit (例(例 MOV C P0MOV C P0 ,P0P0的低位进标志位的低位进标志位C C)(2 2)MOV bit CMOV bit C 例如例如 MOV 00HMOV 00H, C C指指C C进入进
44、入RAM20HRAM20H单元的低位单元的低位2022-3-7437 7 位操作指令位操作指令7-2 7-2 位逻辑操作位逻辑操作(1 1)进位位取反指令:进位位取反指令:CPL C CPL C 单字节单周期单字节单周期(2 2)进位位清零指令:进位位清零指令:CLR C CLR C 单字节单周期单字节单周期(3 3)进位位置进位位置1指令:指令:SETB C SETB C 单字节单周期单字节单周期(4 4)直接寻址位取反指令:直接寻址位取反指令:CPL bit CPL bit 双字节双字节 单周期,第二字单周期,第二字节为位地址节为位地址(5)直接寻址位清零指令:直接寻址位清零指令:CLR
45、bit CLR bit 双字节双字节 单周期,第二字单周期,第二字节为位地址节为位地址(6)直接寻址位置直接寻址位置1指令:指令:SETB bitSETB bit双字节双字节 单周期,第二字节单周期,第二字节为位地址为位地址2022-3-7447-2 7-2 位逻辑操作位逻辑操作(7)直接寻址位与进位位相与指令:直接寻址位与进位位相与指令:ANL C, bit ANL C, bit 双字节双字节 单周单周期,第二字节为位地址期,第二字节为位地址(8)直接寻址位与进位位相或指令:直接寻址位与进位位相或指令:ORL CORL C,bitbit双字节双字节 单周期,单周期,第二字节为位地址第二字节为
46、位地址(9)直接寻址位取反后与进位位相与指令:直接寻址位取反后与进位位相与指令:ANL C, /bit ANL C, /bit 双字双字节节 单周期,单周期,/bit/bit代表先取反代表先取反 (10)(10)直接寻址位取反后与进位位相或指令:直接寻址位取反后与进位位相或指令:ORL C, /bit ORL C, /bit 双字双字节节 单周期,再操作单周期,再操作7 7 位操作指令位操作指令2022-3-7457 7 位操作指令位操作指令7-3 7-3 位条件转移指令(二周期)位条件转移指令(二周期)(1 1)JC rel JC rel 双字节,第二字节为相对地址(在双字节,第二字节为相对
47、地址(在1 1页内转)页内转)(2 2)JNC rel JNC rel 双字节,第二字节为相对地址(在双字节,第二字节为相对地址(在1 1页内转)页内转)(3 3)JB bit, rel JB bit, rel 三字节,第三字节,第2 2为位地址,第为位地址,第3 3字节为相对地址字节为相对地址(4 4)JNB bitJNB bit,rel rel 三字节,不为三字节,不为1 1转转(5 5)JBC bitJBC bit,rel rel 三字节,同上三字节,同上 位为位为1 1转,同时清除该位至转,同时清除该位至0 0 与与JB bitJB bit,rel rel 多一个清除操作多一个清除操作
48、 例例 CJNE RCJNE R0 0,#100#100,NEQU NEQU 比较,并影响标志位比较,并影响标志位代码代码1;相等,;相等,R R0 0=100=100 NEQU NEQU:JC LESSJC LESS 代码代码2 2 ; R R0 0100100 LESS LESS: 代码代码3 3 ; R R0 0100 100 2022-3-7468 8 汇程序格式及位指令汇程序格式及位指令8-18-1格式格式 标号:操作码,操作数;注释标号:操作码,操作数;注释(1 1)标号,)标号,1 16 6个字符,第个字符,第1 1个必为英文字母个必为英文字母 不必都加,但在转移时有用不必都加,
49、但在转移时有用标号实际就是符号地址标号实际就是符号地址(2 2)操作码:即指令助记符)操作码:即指令助记符(3 3)操作数:多个应分开,用)操作数:多个应分开,用“,”(4 4)注释:)注释: 用;隔开,汇编时忽略用;隔开,汇编时忽略 2022-3-7478 8 汇程序格式及位指令汇程序格式及位指令8-2 8-2 伪指令伪指令计算机不执行真正操作,没有机器码,不产生目标程序计算机不执行真正操作,没有机器码,不产生目标程序(1 1)ORG 16ORG 16位地址位地址说明紧随其后的程序段存放的起始地址。说明紧随其后的程序段存放的起始地址。(2 2)ENDEND END END 标号标号 表示程序
50、结束表示程序结束(3 3)标号:)标号:DBDB字节或用字节或用,分开的字节串分开的字节串从标号的符号地址依次存入后面的字节从标号的符号地址依次存入后面的字节()标号:字或用()标号:字或用,分开的字串分开的字串同上,只是存放时低字节在前(低地址),高字节在后(高同上,只是存放时低字节在前(低地址),高字节在后(高地址)地址)()标号:()标号:数字,保留存贮单元数字,保留存贮单元 从标号处保留从标号处保留“数字数字”个字节个字节()标号()标号bitbit位地址位地址bit Fbit F则则以后可由以后可由代替代替SAMPLE25.ASM2022-3-748算术逻辑处理程序算术逻辑处理程序例
51、例3-1将一双字节数存入将一双字节数存入RAM设该待存双字节数高字节在设该待存双字节数高字节在R2中、低字节在中、低字节在A中,中,要求高字节存入片内要求高字节存入片内RAM的的36H单元,低字节存入单元,低字节存入35H单元。程序:单元。程序:MOVR0,#35HMOVR0,AINCR0XCHA,R2MOVR0,AXCHA,R2SAMPLE26.ASM2022-3-749例例3-2多字节无符号数相加程序多字节无符号数相加程序ADR1EQU40HADR2EQU50HLEQU3MOVR0,#ADR1MOVR1,#ADR2MOVR2,#LCLRCLOOP1:MOVA,R0ADDCA,R1MOVR0
52、,AINCR0INCR1DJNZR2,LOOP1SAMPLE27.ASM2022-3-750例3-3 多字节无符号数相减程序 MOV R0,#ADR1 ;823456H-789ABCH MOV R1,#ADR2 MOV R2,#L CLR C LOOP2: MOV A,R0 SUBB A,R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP2 SAMPLE28.ASM2022-3-751例3-4 将R1、R2、R3、R4中的BCD码依次相加,要 求各中间计算的和都仍为BCD码,且放回片内RAM MOV R0,#30H MOV A,R1 ADD A,R2 ACALL SU
53、B ;R1+R2 ADD A,R3 ACALL SUB ;R1+R2+R3 ADD A,R4 ACALL SUB ;R1+R2+R3+R4 JMP ST0SUB: DA A MOV R0,A INC R0 RETSAMLE29.ASM2022-3-752例3-8 统计P1口输入的数串中正数、负数、零的个数ST0: CLR A MOV R0,A MOV R1,A MOV R2,AENTER: MOV A,P1 JZ ZERO JB P1.7,NEG INC R0 ;正数个数R0加1 SJMP ENTERZERO: INC R2 ;零个数R2加1 SJMP ENTERNEG: INC R1 ;负数
54、个数R1加1 SJMP ENTERSAMPLE30.ASM2022-3-753数制转换程序数制转换程序例例3-11 3-11 将某十六进制数转换为将某十六进制数转换为ASCIIASCII码码 MOV R2,A ADD A,#0F6H MOV A,R2 JNC AD30;LP2: CJNE A,#9,JP2; SJMP AD30;JP2: JC AD30 ADD A,#07HAD30: ADD A,#30HSAMPLE31.ASM2022-3-754算术逻辑处理程序算术逻辑处理程序例例3-12 3-12 将一串十六进制数转换为将一串十六进制数转换为ASCIIASCII码码 MOV R0,#ADR
55、1 MOV R1,#ADR2 MOV R2,#05HLOOP3: MOV A,R0 ANL A,#0FH ACALL SUB1 MOV A,R0 ANL A,#0F0H SWAP A ACALL SUB1 INC R0 DJNZ R2,LOOP3 SAMPLE32.ASMSUB1: ;MOV R3,A ;ADD A,#0F6H ;MOV A,R3 ;JNC AD30A CJNE A,#9,JP3 SJMP AD30AJP3: JC AD30A ADD A,#07HAD30A: ADD A,#30HASC1: MOV R1,A INC R1 RET2022-3-755例3-13 将某BCD码(十
56、六进制数)转换为ASCII码LP4: CALL TRANS1 CALL TRANS2 PUSH B CALL TRANS3 POP A JMP LP4TRANS1: MOV DPTR,#TAB MOVC A,A+DPTR RETTRANS2: INC A MOVC A,A+PC RET SAMPLE33.ASMTAB: DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46HTRANS3: MOV R0,SP DEC R0 DEC R0 XCH A,R0 MOV DPTR,#TAB MOVC A,A+
57、DPTR XCH A,R0 RET2022-3-756 例3-14 可多达128路分支出口的转移程序 MOV DPTR,#JPTAB MOV A,R2 RL A JMP A+DPTRJPTAB: AJMP ADDR00 AJMP ADDR01 AJMP ADDR02; .; .; . AJMP ADDR7F SAMPLE34.ASMADDR00: MOV DPTR,#LJPTAB MOV A,R2 MOV B,#3 MUL AB XCH A,B ADD A,DPH MOV DPH,A XCH A,B JMP A+DPTRLJPTAB: LJMP LADR00 LJMP LADR01 LJMP LADR02; . LJMP LADR7F2022-3-757例3-18 利用单片机内部定时器/计数器,达到1min延时程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滚动习题(二)范围6.3
- 媒体传播企业会计核算及财务风险防控合同
- 离婚协议中子女抚养及教育费用支付协议范本
- 离婚协议书模板(夫妻共同债务清偿)
- 签订即编制确立的影视制作公司艺人聘用合同
- 离婚协议签订后共同财产分割及债权债务处理协议
- 异地跨省私房房屋买卖合同示范文本
- 形体礼仪培训内容
- 老干部工作课件
- 网络维护培训方案
- 初中英语单词表(For-Junior)2182个 带音标
- 人教鄂教版六年级上册科学全册教案
- 财务工作内部培训课件
- 铁路防雷及接地工程技术规范(TB 10180-2016)
- 网络安全意识培训
- 建筑艺术赏析(职业通用)全套教学课件
- 无人机理论知识无人机理论基础
- 医院检验科质量手册
- 农业科技在2024年的发展与前景展望
- 护理不良事件警示教育(新)
- 人生规划和人生定位课件
评论
0/150
提交评论