导航:首页 > 操作系统 > 51单片机传送指令

51单片机传送指令

发布时间:2023-03-03 05:29:57

单片机的基本指令有哪些

不知道你是问的哪种单片机下面给你的是MCS-51的,希望对你有帮助,如有,麻烦采纳,谢谢 数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。 x0dx0ax0dx0a[1]. 以累加器A为目的操作数类指令(4条) x0dx0a这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式: x0dx0ax0dx0aMOV A,data ;(data)→(A) 直接单元地址中的内容送到累加器A x0dx0aMOV A,#data ;#data→(A) 立即数送到累加器A中 x0dx0aMOV A,Rn ;(Rn)→(A) Rn中的内容送到累加器A中 x0dx0aMOV A,@Ri ;((Ri))→(A) Ri内容指向的地址单元中的内容送到累加器A x0dx0ax0dx0a[2]. 以寄存器Rn为目的操作数的指令(3条) x0dx0a这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式: x0dx0ax0dx0aMOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 x0dx0aMOV Rn,#data ;#data→(Rn) 立即数直接送到寄存器Rn中 x0dx0aMOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中 x0dx0ax0dx0a[3]. 以直接地址为目的操作数的指令(5条) x0dx0a这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式: x0dx0ax0dx0aMOV data,data ;(data)→(data) 直接地址单元中的内容送到直接地址单元 x0dx0aMOV data,#data ;#data→(data) 立即数送到直接地址单元 x0dx0aMOV data,A ;(A)→(data) 累加器A中的内容送到直接地址单元 x0dx0aMOV data,Rn ;(Rn)→(data) 寄存器Rn中的内容送到直接地址单元 x0dx0aMOV data,@Ri ;((Ri))→(data) 寄存器Ri中的内容指定的地址单元中数据送到直接地址单元 x0dx0ax0dx0a[4]. 以间接地址为目的操作数的指令(3条) x0dx0a这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式: x0dx0ax0dx0aMOV @Ri,data ;(data)→((Ri)) 直接地址单元中的内容送到以Ri中的内容为地址的RAM单元 x0dx0aMOV @Ri,#data ;#data→((Ri)) 立即数送到以Ri中的内容为地址的RAM单元 x0dx0aMOV @Ri,A ;(A)→((Ri)) 累加器A中的内容送到以Ri中的内容为地址的RAM单元 x0dx0ax0dx0a[5]. 查表指令(2条) x0dx0a这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式: x0dx0ax0dx0aMOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址单元中的内容送到累加器A中 x0dx0aMOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中 x0dx0ax0dx0a[6]. 累加器A与片外数据存储器RAM传送指令(4条) x0dx0a这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式: x0dx0ax0dx0aMOVX @DPTR,A ;(A)→((DPTR)) 累加器中的内容送到数据指针指向片外RAM地址中 x0dx0aMOVX A, @DPTR ;((DPTR))→(A) 数据指针指向片外RAM地址中的内容送到累加器A中 x0dx0aMOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中 x0dx0aMOVX @Ri,A ;(A)→((Ri)) 累加器中的内容送到寄存器Ri指向片外RAM地址中 x0dx0ax0dx0a[7]. 堆栈操作类指令(2条) x0dx0a这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。 x0dx0ax0dx0aPUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中 x0dx0aPOP data ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作 x0dx0ax0dx0a[8]. 交换指令(5条) x0dx0a这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。 x0dx0ax0dx0aXCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换 x0dx0aXCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换 x0dx0aXCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换 x0dx0aXCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换 x0dx0aSWAP A ;(A 3-0 )←→(A 7-4 )累加器中的内容高低半字节互换 x0dx0ax0dx0a[9]. 16位数据传送指令(1条) x0dx0a这条指令的功能是把16位常数送入数据指针寄存器。 x0dx0ax0dx0aMOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL x0dx0ax0dx0aMCS-51算术运算指令 x0dx0ax0dx0a算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意。 x0dx0ax0dx0a[1]. 加法指令(4条) x0dx0a这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。 x0dx0ax0dx0aADD A,#data ;(A)+#data→(A) 累加器A中的内容与立即数#data相加,结果存在A中 x0dx0aADD A,data ;(A)+(data)→(A) 累加器A中的内容与直接地址单元中的内容相加,结果存在A中 x0dx0aADD A,Rn ;(A)+(Rn)→(A) 累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中 x0dx0aADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中 x0dx0ax0dx0a[2]. 带进位加法指令(4条) x0dx0a这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。 x0dx0ax0dx0aADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中 x0dx0aADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的内容与立即数连同进位位相加,结果存在A中 x0dx0aADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的内容与工作寄存器Rn中的内容、连同进位位相加,结果存在A中 x0dx0aADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中 x0dx0ax0dx0a[3]. 带借位减法指令(4条) x0dx0a这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。 x0dx0a这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。 x0dx0ax0dx0aSUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中 x0dx0aSUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中 x0dx0aSUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存在A中 x0dx0aSUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的内容与工作寄存器Ri指向的地址单元中的内容、连同借位位相减,结果存在A中 x0dx0ax0dx0a[4]. 乘法指令(1条) x0dx0a这个指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。 x0dx0ax0dx0aMUL AB ;(A)×(B)→(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中 x0dx0ax0dx0a[5]. 除法指令(1条) x0dx0a这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。 x0dx0ax0dx0aDIV AB ;(A)÷(B)→(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。 x0dx0ax0dx0a[6]. 加1指令(5条) x0dx0a这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式: x0dx0ax0dx0aINC A ;(A)+1→(A) 累加器A中的内容加1,结果存在A中 x0dx0aINC data ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中 x0dx0aINC @Ri ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中 x0dx0aINC Rn ;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中 x0dx0aINC DPTR ;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中 x0dx0ax0dx0a在INC data这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作。 x0dx0ax0dx0a[7]. 减1指令(4条) x0dx0a这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读—修改—写”操作与加1指令类似。 x0dx0ax0dx0aDEC A ;(A)-1→(A)累加器A中的内容减1,结果送回累加器A中 x0dx0aDEC data ;(data)-1→(data)直接地址单元中的内容减1,结果送回直接地址单元中 x0dx0aDEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中 x0dx0ax0dx0aDEC Rn ;(Rn)-1→(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中 x0dx0ax0dx0a[8]. 十进制调整指令(1条) x0dx0a在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。 x0dx0ax0dx0aDA A x0dx0ax0dx0aMCS-51逻辑运算及移位指令 x0dx0ax0dx0a逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。 x0dx0ax0dx0a[1]. 循环移位指令(4条) x0dx0a这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。 x0dx0ax0dx0aRL A ;累加器A中的内容左移一位 x0dx0aRR A ;累加器A中的内容右移一位 x0dx0aRLC A ;累加器A中的内容连同进位位CY左移一位 x0dx0aRRC A ;累加器A中的内容连同进位位CY右移一位 x0dx0ax0dx0a[2]. 累加器半字节交换指令(1条) x0dx0a这条指令是将累加器中的内容高低半字节互换,这在上一节中内容已有介绍。 x0dx0ax0dx0aSWAP A ; 累加器中的内容高低半字节互换 x0dx0ax0dx0a[3]. 求反指令(1条) x0dx0a这条指令将累加器中的内容按位取反。 x0dx0ax0dx0aCPL A ; 累加器中的内容按位取反 x0dx0ax0dx0a[4]. 清零指令(1条) x0dx0a这条指令将累加器中的内容清0。 x0dx0ax0dx0aCLR A ; 0→(A),累加器中的内容清0 x0dx0ax0dx0a[5]. 逻辑与操作指令(6条) x0dx0a这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写”操作。 x0dx0ax0dx0aANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。 x0dx0aANL data,#data ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。 x0dx0aANL A,#data ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。 x0dx0aANL A,Rn ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。 x0dx0aANL data,A ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。 x0dx0aANL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。 x0dx0ax0dx0a[6]. 逻辑或操作指令(6条) x0dx0a这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。 x0dx0ax0dx0aORL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。 x0dx0aORL data,#data ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。 x0dx0aORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。 x0dx0aORL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。 x0dx0aORL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。 x0dx0aORL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。 x0dx0ax0dx0a[7]. 逻辑异或操作指令(6条) x0dx0a这组指令的作用是将两个单元中的内容执行逻辑异或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。 x0dx0ax0dx0aXRL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。 x0dx0aXRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。 x0dx0aXRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。 x0dx0aXRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。 x0dx0aXRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。 x0dx0aXRL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中。 x0dx0ax0dx0aMCS-51控制转移指令 x0dx0ax0dx0a控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 x0dx0ax0dx0a[1]. 无条件转移指令(4条) x0dx0a这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。 x0dx0ax0dx0aLJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址) x0dx0ax0dx0aAJMP addr11 ;(PC)+2→(PC),addr11→(PC 10-0 )程序计数器赋予新值(11位地址),(PC 15-11 )不改变 x0dx0ax0dx0aSJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值 x0dx0ax0dx0aJMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值 x0dx0ax0dx0a[2]. 条件转移指令(8条) x0dx0a程序可利用这组丰富的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。 x0dx0ax0dx0aJZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aJNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aCJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aCJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aCJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aCJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aDJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0aDJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行 x0dx0ax0dx0a[3]. 子程序调用指令(1条) x0dx0a子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。 x0dx0ax0dx0aLCALL addr16 ; 长调用指令,可在64kB空间调用子程序。此时(PC)+ 3→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr16→(PC),即分别从堆栈中弹出调用子程序时压入的返回地址 x0dx0ax0dx0aACALL addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr11→(PC 10-0 ) x0dx0ax0dx0aRET ; 子程序返回指令。此时(SP)→(PC 15-8 ),(SP)- 1→(SP),(SP)→(PC 7-0 ),(SP)- 1→(SP) x0dx0ax0dx

Ⅱ 51单片机指令有哪些啊

MCS-51单片机的指令集
1、数据传送类指令
助记符 功能说明 字节数 振荡周期
MOV A,Rn 寄存器内容送入累加器 1 12
MOV A,direct 直接地址单元中的数据送入累加器 2 12
MOV A,@Ri 间接RAM中的数据送入累加器 1 12
MOV A,#data8 8位立即数送入累加器 2 12
MOV Rn,A 累加器内容送入寄存器 1 12
MOV Rn,direct 直接地址单元中的数据送入寄存器 2 24
MOV Rn,#data8 8位立即数送入寄存器 2 12
MOV direct,A 累加器内容送入直接地址单元 2 12
MOV direct,Rn 寄存器内容送入直接地址单元 2 24
MOV direct,direct 直接地址单元中的数据送入直接地址单元 3 24
MOV direct,@Ri 间接RAM中的数据送入直接地址单元 2 24
MOV direct,#data8 8位立即数送入直接地址单元 3 24
MOV @Ri,A 累加器内容送入间接RAM单元 1 12
MOV @Ri,direct 直接地址单元中的数据送入间接RAM单元 2 24
MOV @Ri,#data8 8位立即数送入间接RAM单元 2 12
MOV DPTR,#data16 16位立即数地址送入地址寄存器 3 24

MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 1 24
MOVC A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器 1 24

MOVX A,@Ri 外部RAM(8位地址)送入累加器 1 24
MOVX A,@DPTR 外部RAM(16位地址)送入累加器 1 24
MOVX @Ri,A 累加器送入外部RAM(8位地址) 1 24
MOVX @DPTR,A 累加器送入外部RAM(16位地址) 1 24

PUSH direct 直接地址单元中的数据压入堆栈 2 24
POP DIRECT 堆栈中的数据弹出到直接地址单元 2 24

XCH A,Rn 寄存器与累加器交换 1 12
XCH A,direct 直接地址单元与累加器交换 2 12
XCH A,@Ri 间接RAM与累加器交换 1 12
XCHD A,@Ri 间接RAM与累加器进行低半字节交换 1 12

2、算术操作类指令
助记符 功能说明 字节数 振荡周期
ADD A,Rn 寄存器内容加到累加器 1 12
ADD A,direct 直接地址单元加到累加器 2 12
ADD A,@Ri 间接RAM内容加到累加器 1 12
ADD A,#data8 8位立即数加到累加器 2 12

ADDC A,Rn 寄存器内容带进位加到累加器 1 12
ADDC A,dirct 直接地址单元带进位加到累加器 2 12
ADDC A,@Ri 间接RAM内容带进位加到累加器 1 12
ADDC A,#data8 8位立即数带进位加到累加器 2 12

SUBB A,Rn 累加器带借位减寄存器内容 1 12
SUBB A,dirct 累加器带借位减直接地址单元 2 12
SUBB A,@Ri 累加器带借位减间接RAM内容 1 12
SUBB A,#data8 累加器带借位减8位立即数 2 12

INC A 累加器加1 1 12
INC Rn 寄存器加1 1 12
INC direct 直接地址单元内容加1 2 12
INC @Ri 间接RAM内容加1 1 12
INC DPTR DPTR加1 1 24

DEC A 累加器减1 1 12
DEC Rn 寄存器减1 1 12
DEC direct 直接地址单元内容减1 2 12
DEC @Ri 间接RAM内容减1 1 12

MUL A,B A乘以B 1 48
DIV A,B A除以B 1 48
DA A 累加器进行十进制转换 1 12

3、逻辑操作类指令
助记符 功能说明 字节数 振荡周期
ANL A,Rn 累加器与寄存器相“与” 1 12
ANL A,direct 累加器与直接地址单元相“与” 2 12
ANL A,@Ri 累加器与间接RAM内容相“与” 1 12
ANL A,#data8 累加器与8位立即数相“与” 2 12
ANL direct,A 直接地址单元与累加器相“与” 2 12
ANL direct,#data8 直接地址单元与8位立即数相“与” 3 24

ORL A,Rn 累加器与寄存器相“或” 1 12
ORL A,direct 累加器与直接地址单元相“或” 2 12
ORL A,@Ri 累加器与间接RAM内容相“或” 1 12
ORL A,#data8 累加器与8位立即数相“或” 2 12
ORL direct,A 直接地址单元与累加器相“或” 2 12
ORL direct,#data8 直接地址单元与8位立即数相“或” 3 24

XRL A,Rn 累加器与寄存器相“异或” 1 12
XRL A,direct 累加器与直接地址单元相“异或” 2 12
XRL A,@Ri 累加器与间接RAM内容相“异或” 1 12
XRL A,#data8 累加器与8位立即数相“异或” 2 12
XRL direct,A 直接地址单元与累加器相“异或” 2 12
XRL direct,#data8 直接地址单元与8位立即数相“异或” 3 24

CLR A 累加器清0 1 12
CPL A 累加器求反 1 12
RL A 累加器循环左移 1 12
RLC A 累加器带进位循环左移 1 12
RR A 累加器循环右移 1 12
RRC A 累加器带进位循环右移 1 12
SWAP A 累加器半字节交换 1 12

4、控制转移类指令
助记符 功能说明 字节数 振荡周期
ACALL addr11 绝对短调用子程序 2 24
LACLL addr16 长调用子程序 3 24
RET 子程序返回 1 24
RETI 中断返回 1 24
AJMP addr11 绝对短转移 2 24
LJMP addr16 长转移 3 24
SJMP rel 相对转移 2 24
JMP @A+DPTR 相对于DPTR的间接转移 1 24
JZ rel 累加器为零转移 2 24
JNZ rel 累加器非零转移 2 24
CJNE A,direct,rel 累加器与直接地址单元比较,不等则转移 3 24
CJNE A,#data8,rel 累加器与8位立即数比较,不等则转移 3 24
CJNE Rn,#data8,rel 寄存器与8位立即数比较,不等则转移 3 24
(相等则执行本指令的下一条)

CJNE @Ri,#data8,rel 间接RAM单元,不等则转移 3 24
(但有时还想得知两数比较之后哪个大,哪个小,
本条指令也具有这样的功能,如果两数不相等,
则CPU还会反映出哪个数大,哪个数小,
这是用CY(进位标志位)来实现的。
如果左边的数(A,Rn,@Ri)大或者等于右边的数(direct,#date8),则CY=0;否则CY=1)

DJNZ Rn,rel 寄存器减1,非零转移 3 24
DJNZ direct,rel 直接地址单元减1,非零转移 3 24
NOP 空操作 1 12

控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指令” 及 “返回指令”。

5、布尔变量操作类指令
助记符 功能说明 字节数 振荡周期
CLR C 清进位位 1 12
CLR bit 清直接地址位 2 12
SETB C 置进位位 1 12
SETB bit 置直接地址位 2 12
CPL C 进位位求反 1 12
CPL bit 直接地址位求反 2 12
ANL C,bit 进位位和直接地址位相“与” 2 24
ANL C,/bit 进位位和直接地址位的反码相“与” 2 24
ORL C,bit 进位位和直接地址位相“或” 2 24
ORL C,/bit 进位位和直接地址位的反码相“或” 2 24
MOV C,bit 直接地址位送入进位位 2 12
MOV bit,C 进位位送入直接地址位 2 24
JC rel 进位位为1则转移(CY=O不转移,=1转移) 2 24
JNC rel 进位位为0则转移(和上面相反) 2 24
JB bit,rel 直接地址位为1则转移 3 24
JNB bit,rel 直接地址位为0则转移 3 24
JBC bit,rel 直接地址位为1则转移,该位清零 3 24

伪指令
助记符 功能说明
ORG 设置程序起始地址
END 标志源代码结束
EQU 定义常数
SET 定义整型数
DATA 给字节类型符号定值
BYTE 给字节类型符号定值
WROD 给字类型符号定值
BIT 给位地址取名
ALTNAME 用自定义名取代保留字
DB 给一块连续的存储区装载字节型数据
DW 给一块连续的存储区装载字型数据
DS 预留一个连续的存储区或装入指定字节。
INCLUDE 将一个源文件插入程序中
TITLE 列表文件中加入标题行
NOLIST 汇编时不产生列表文件
NOCODE 条件汇编时,条件为假的不产生清单

Ⅲ 51单片机指令

TF1是定时器1溢出标志位,$是取地址。JNB TF1,$ 实现的功能是查询定时器1溢出标志位,如果为0,跳转到本条指令继续执行(即继续查询)直到定时时间到,TF1置位,才执行下一条指令。
给你注释一下:
MOV TMOD,#10H //设置定时器工作方式(定时器1,工作方式2)
SETB TR1 //开启定时器1
LOOP: MOV TH1,#0D8H //装初值D8F0H 即55536,定时10mS(晶振12M)时间随晶振改变
MOV TL1,#0F0H
JNB TF1,$ //查询等待定时器1中断
CLR TF1 //定时器溢出标志位清0(定时时间到后硬件自动给TF1置位,需软件清0)
CPL P1.1 //P1.1取反
SJMP LOOP //跳到LOOP处循环(是个死循环)
该段程序实现的功能是:每隔10mS对P1.1取反一次。(10mS当然是晶振为12M的情况下)

Ⅳ 51单片机指令有哪些啊

MCS-51共有111条指令,可分为5类:

[1].数据传送类指令(共29条)
[2].算数运算类指令(共24条)
[3].逻辑运算及移位类指令(共24条)
[4].控制转移类指令(共17条)
[5].布尔变量操作类指令(共17条)

阅读全文

与51单片机传送指令相关的资料

热点内容
php多个分隔符分割 浏览:374
表格怎么转移到另一个文件夹 浏览:923
同态加密gpu 浏览:216
程序员告诉你网赌为什么赢不了 浏览:971
程序员最帅操作 浏览:72
云服务器可以随时更换吗 浏览:489
老款车在哪里可以买到app 浏览:460
程序员事业单位 浏览:68
特来电需要用哪个App 浏览:881
电脑如何共享其他服务器 浏览:260
php网站性能优化 浏览:354
被子收纳袋压缩真空 浏览:30
h1z1选什么服务器 浏览:484
苹果版三国杀怎么在安卓上下载 浏览:728
安润国际app在哪里下载 浏览:438
iospdf教程下载 浏览:332
加密货币换手率300表示什么 浏览:727
手机wps新建文件夹存照片 浏览:399
单片机rgbled 浏览:963
怎么通过文件加密后发给微信好友 浏览:90