51单片机汇编指令集详细带字节和周期数
51单片机汇编语言指令集

51汇编语言指令集符号定义表符号含义Rn R0~R7寄存器n=0~7Direct 直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0@Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数#data16 16位常数Addr16 16位的目标地址Addr11 11位的目标地址Rel 相关地址bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位指令介绍指令字节周期动作说明算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
51单片机汇编指令详解

51单片机汇编指令详解mcs-51系列单片机指令目录:1、a2、x3、r4、s5、n6、o7、p8、m9、j10、l11、d12、i13、c一、以a结尾的指令存有18条,分别为:acalladdr11adda,rnadda,directadda,@riadda,#dataaddca,rnaddca,directaddca,@riaddca,#dataajmpaddr11anla,rnanla,directanla,@rianla,#dataanldirect,aanldirect,#dataanlc,bitanlc,/bit1、acalladdr11指令名称:绝对调用指令指令代码:{a10,a9,a8,10001},a[7:0]指令功能:结构目的地址,展开子程序调用。
其方法就是以指令提供更多的11十一位地址(al0~a0),替代pc的高11十一位,pc的高5十一位维持不变。
操作方式内容:pc←(pc)+2sp←(sp)+1(sp)←(pc)7~0sp←(sp)+1(sp)←(pc)15~8pc10~0←addrl0~0字节数:2机器周期:2采用表明:由于指令只得出子程序入口地址的高11十一位,因此调用范围就是2kb。
2、adda,rn指令名称:寄存器乘法指令指令代码:28h~2fh指令功能:累加器内容与寄存器内容相加操作内容:a←(a)+(rn),n=0~7字节数:1机器周期;1影响标志位:c,ac,ov3、adda,direct指令名称:轻易串行乘法指令指令代码:25h指令功能:累加器内容与内部ram单元或专用寄存器内容相加操作内容:a←(a)+(direct)字节数:2机器周期:1影响标志位:c,ac,ov4、adda,@ri指令名称:间接串行乘法指令指令代码:26h~27h指令功能:累加器内容与内部ram高128单元内容相乘操作方式内容:a←(a)+((ri)),i=0,1字节数:1机器周期:1影响标志位:c,ac,ov5、adda,#data指令名称:立即数加法指令指令代码:24h指令功能:累加器内容与立即数相乘操作方式内容:a←(a)+data字节数:2机器周期:1影响标志位:c,ac,ov6、addca,rn指令名称:寄存器带进位加法指令指令代码:38h~3fh指令功能:累加器内容、寄存器内容和位次位相乘操作方式内容:a←(a)+(rn)+(c),n =0~7字节数:1机器周期:1影响标志位:c,ac,ov7、addca,direct指令名称:直接寻址带进位加法指令指令代码:35h指令功能:累加器内容、内部ram高128单元或专用寄存器内容与位次位加操作内容:a←(a)+(direct)+(c)字节数:2机器周期:1影响标志位:c,ac,ov8、addca,@ri指令名称:间接串行拎位次乘法指令指令代码:36h~37h指令功能:累加器内容、内部ram低128单元内容及进位位相加操作方式内容:a←(a)+((ri))+(c),i=0,1字节数:1机器周期:1影响标志位:c,ac,ov9、addca,#data指令名称:立即数带位次乘法指令指令代码:34h指令功能:累加器内容、立即数及进位位相加操作内容:a←(a)+data+(c)字节数:2机器周期:1影响标志位:c,ac,ov10、ajmpaddr11指令名称:绝对迁移指令指令代码:{a10,a9,a8,00001},a[7:0]指令功能:构造目的地址,实现程序转移。
51单片机汇编指令详解

51单片机汇编指令详解1、XCH A,Rn指令名称:寄存器寻址字节交换指令指令代码:C8H~CFH指令功能:寄存器寻址字节操作内容:(A)交换(Rn);n=0~7字节数: 1机器周期:12、XCH A,direct指令名称:直接寻址字节交换指令指令代码:C5H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容交换操作内容:(A)交换(direct)字节数: 2机器周期:13、XCH A,@Ri指令名称:间接寻址字节交换指令指令代码:C6H~C7H指令功能:累加器内容与内部RAM低128单元内容交换操作内容:(A)交换((Ri)); i=0,1字节数: 1机器周期:14、XCHD A,@Ri指令名称:半字节交换指令指令代码:D6H~D7H指令功能:累加器内容低4位与内部RAM低128单元低4位交换操作内容:(A)3~0交换((Ri))3~0;i=0,1字节数: 1机器周期:15、XRL A,Rn指令名称;逻辑异或操作指令指令代码:68H~6FH指令功能:累加器内容与寄存器内容进行逻辑异或操作操作内容:A<-(A)异或(Rn); n=0~7字节数: 1机器周期:16、XRL A,direct指令名称:逻辑异或操作指令指令代码:65H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容:A<-(A)异或(direct)字节数: 2机器周期:17、XRL A,@Ri指令名称:逻辑异或指令指令代码:66H~67H指令功能:累加器与内部RAM低128单元内容进行逻辑异或操作操作内容:A<-(A)异或((Ri)); i=0,1字节数: 1机器周期:18、XRL A,#data指令名称:逻辑异或指令指令代码:64H指令功能:累加器内容与立即数进行逻辑异或操作操作内容:A1?/FONT>(A)异或data字节数: 2机器周期:19、XRL direct,A指令名称:逻辑异或操作指令指令代码:62H指令功能:累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容:direct一(direct)异或(A)字节数: 2机器周期:110、XRL direct,#data指令名称:逻辑异或操作指令指令代码:63H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑异或操作操作内容:direct<-(direct)异或data字节数: 3机器周期:2以R开头的指令有6条,分别为:RETRETIRL ARLC ARR ARRC A1、RET指令名称:子程序返回指令指令代码:22H指令功能:子程序返回操作内容:PC15~8<-((SP))SP<-(SP)-1PC7~0<-((SP))SP<-(SP)-1字节数: 1机器周期:22、RETI指令名称:中断返回指令指令代码:32H指令功能:中断服务程序返回操作内容’:PC15?/FONT>8<-((SP))SP<-(SP)-lPC7~0<-((SP))SP<-(SP)-1字节数: 1机器周期:23、RL A指令名称:循环左移指令指令代码:23H指令功能:累加器内容循环左移一位操作内容:An+1<-(An); n=0~6A0<-(A7)字节数: 1机器周期:14、RLC A指令名称:带进位循环左移指令指令代码:33H指令功能:累加器内容连同进位标志位循环左移一位操作内容:An-1<-(An); n=0~6A0<-(C)C<-(A7)字节数: 1机器周期:15、RR A指令名称:循环右移指令指令代码:03H指令功能:累加器内容循环右移一位操作内容:An<-(An+1);n=0~6A7<-(A0)字节数: 1机器周期:16、RRC A指令名称:带进位循环右移指令指令代码:13H指令功能:累加器内容连同进位标志位循环右移一位操作内容:An<-(An+1);n=0~6A7<-(C)C<-(A0)字节数: 1机器周期:11、SETB c指令名称:进位标志置位指令指令代码:D.H指令功能:进位标志位置位操作内容:C<-1字节数: 1机器周期:12、SETB bit指令名称:直接寻址位置位指令指令代码:D2H指令功能:内部RAM可寻址位或专用寄存器指定位置位操作内容:bit<-1字节数: 2机器周期:13、SJMP rel指令名称:短转移指令指令代码:80H指令功能:按指令提供的偏移量计算转移的目的地址,实现程序的无条件相对转移;操作内容:PC<-(PC)+2PC<-(PC)+rel字节数: 2机器周期:2使用说明:偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC一126)一(PC+129)。
51单片机的指令周期

51单片机的指令周期051芯片内部有一高增益反相放大器,用于构成振荡器,反向放大器输入端为XTAL1,输出端XTAL2。
在XTAL1和XTAL2两端跨接一个石英晶体及两个电容就构成了稳定自激振荡器,电容器C1和C2通常都取30pF左右,对振荡频率有微调作用。
振荡频率范围是1.212MHz。
8051也使用外部震荡脉冲信号,由XTAL2端引脚输入,XTAL1端接地,外部震荡脉冲源方式常用于多块8051同时工作,以便于同步。
晶体振荡器的振荡信号从XTAL2端输出到片内的时钟发生器上,时钟发生器是一个二分频触发电路,它将振荡器的信号频率fosc除以2,向CPU提供两相时钟信号P1和P2。
时钟信号的周期称为机器状态时间S,CPU就以两相时钟P1和P2为基本节拍指挥8051单片机各个部件协调地工作。
除时钟周期外,还有两个与时间有关的概念叫机器周期和指令周期。
计算机的一条指令由若干个字节组成。
执行一条指令需要多少时间则以机器周期为单位。
所谓一个机器周期就是指CPU访问存储器一次所需要的时间。
例如取指令,读存储器,写存储器等等。
MCS51的一个机器周期为12个振荡周期,分为六个S状态,S1S6.而每个状态又分为两拍,称为P1和P2。
因此,一个机器周期中的12个振荡周期表示为S1P1,S1P2,S2P1等直到S6P2.若采用6MHZ晶体振荡器,则每个机器周期恰为2us。
每条指令都由一个或几个机器周期组成。
在MCS51系统中,有单周期指令,双周期指令。
四周期指令只有乘,除两条指令。
指令的运算速度和它的机器周期直接相关,机器周期数较小则执行速度快。
在编程时要注意选用具有同样功能而机器周期数小的指令。
每一条指令的执行都可以包括取指和执行两个阶段。
在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令。
在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节,双字节和三字节组成。
从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,而三字节指令都是双周期,只有乘,除指令占四个周期,一条指令的字节数表征这条指令在存储器中所占空间大小,而周期数表征运行这条指令所花时间长短,即运行速度。
51单片机汇编指令大全

51汇编指令大全Rn: 表示当前寄存器区的8个工作寄存器R0~R7Ri: 表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1)@: 为间接寄存器或基址寄存器的前缀.Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址0~127.特殊功能寄存器SFR的地址(128~255)或名称,A: 累加器ACC.B: .特殊功能寄存器B,用于MUL和DIV指令中.C: 进位位Cy.#data: 表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间.#data16: 表示包含在指令中的双字节(16位)立即数.Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间.Adda11: 表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页.Rel: 表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值.DPTR: 为数据指针,可用作16位的地址寄存器./: 加在位操作的前面,表示对该位进行非运算.bit: 表示内部可寻址位或特殊功能寄存器中的直接寻址位.“(x): 寄存器或地址单元中的内容.((x)): 有x见解寻址的单元中的内容.<-: 表示将箭头右边的内容传送至箭头的左边.$: 当前指令的地址.单片机指令系统(一) 内部数据传送指令(1) 以累加器A为目的的传送指令:MOV A, #data ;(A)<-dataMOV A, direct ;(A)<-(direct)MOV A, Rn ;(A)<-(Rn)MOV A, @Ri ;(A)<- ((Ri))(2) 以通用寄存器Rn为目的的传送指令:MOV Rn, A ;(Rn)<-(A)MOV Rn, direct ; (Rn)<(direct)-MOV Rn, #data: ; (Rn)<-(data)(3) 以直接地址为目的的传送指令:MOV direct, A ;(direct)<-(A)MOV direct, Rn ; (direct)<-(Rn)MOV direct, direct2 ; (direct)<-(direct2)MOV direct, @Ri ; (direct)<-((Rn))MOV direct, #data ; (direct)<-data(4) 以寄存器间接地址为目的的传送指令:MOV @Ri, A ;((Ri))<-(A)MOV @Ri, direct ;((Ri))<-(direct)MOV @Ri, #data ;((Ri))<-data(二) 数据指针赋值指令(16位数据传送指令)MOV DPTR, #data16;(三) 片外数据传送指令MOVX A, @Ri ;(A)<-((Ri))片外MOVX A, @DPTR ;(A)<-((DPTR))片外MOVX @Ri, A ;((Ri))片外<-(A)MOVX @DPTR, A ;((DPTR))片外<-(A)(四) ROM数据访问指令(查表指令)MOVC A, @A+DPTR ;(A)<-((A)+(DPTR))romMOVC A, @A+PC ;(PC)<-(PC)+1,(A)<-((A)+(PC))rom (五) 堆栈操作指令PUSH direct ;(SP)<-(SP)+1,(SP)<-(direct)堆栈指针先加1,将数据压入栈顶POP direct ;(direct)<-(SP),(SP)<-(SP)-1将数据从栈顶弹出存入direct,SP再减1(六) 数据交换指令(1)整字节(8位)交换指令:XCH A, Rn ;A和Rn中的数互换XCH A, direct ;A和direct单元中的数互换XCH A, @Ri ;A和Ri间址单元中的数互换(2)半字节交换指令:XCHD A, @Ri ;A的低4位Ri间接单元的低4位互换,高4位不动(3)累加器高低半字节交换指令:SWAP A, ;A的高4位(D7~D4)和低4位(D3~D0)互换(七) 加法指令(1)不带Cy加法指令:ADD A, Rn ;(A)<-(A)+(Rn)ADD A, direct ; (A)<-(A)+(direct)ADD A, @Ri ; (A)<-(A)+((Ri))ADD A, #data ; (A)<-(A)+data(2)带进位加法指令:ADDC A, Rn ;(A)<-(A) +Cy+(Rn)ADDC A, direct ; (A)<-(A) +Cy+(direct)ADDC A, @Ri ; (A)<-(A) +Cy+((Ri))ADDC A, #data ; (A)<-(A) +Cy+data(3)加1指令:INC A, ;(A)<-(A)+1INC Rn ;(Rn)<-(Rn)+1INC @Ri ;((Ri))<-((Ri))+1INC direct ;(direct)<-(direct)+1INC DPTR ;(FPTR)<-(DPTR)+1(八) 减法指令(1)带进位减法指令:SUBB A, Rn ;(A)<-(A) -Cy-(Rn)SUBB A, direct ; (A)<-(A) -Cy-(direct)SUBB A, @Ri ; (A)<-(A) -Cy-((Ri))SUBB A, #data ; (A)<-(A) -Cy-data(2)减1指令:DEC A ;(A)<-(A)-1DEC direct ;(direct)<-(durect)-1DEC Rn ;(Rn)<-(Rn)-1DEC @Ri ;((Ri))<-((Ri))-1(九) 乘除指令(1)乘法指令MUL AB ;(B)(A)<-(A)*(B)指令功能是把累加器A和特殊功能寄存器B中两个8位无符号整数相乘,并把积的高8位字节存入B寄存器,低8位字节存入累加器A.(2)除法指令DIV AB ;A/B,商存入A,余数存入B指令的功能是把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数商的整数部分存入累加器A中,余数保留在B中.(十) 十进制调整指令DA A(十一) 逻辑运算指令(1) 逻辑与运算指令:ANL A, Rn ;(A)<-(A)∧(Rn)ANL A, direct ; (A)<-(A)∧(direct)ANL A, @Ri ; (A)<-(A)∧((Ri))ANL A, #data ; (A)<-(A)∧dataANL direct, A ;(direct)<-(A)∧(direct)ANL direct, #data;(direct<-(direct)∧data(2) 逻辑或运算指令:ORL A, Rn ;(A)<-(A)∨(Rn)ORL A, direct ; (A)<-(A)∨(direct)ORL A, @Ri ; (A)<-(A)∨((Ri))ORL A, #data ; (A)<-(A)∨dataORL direct, A ;(direct)<-(A)∨(direct)ORL direct, #data; (direct)<-(direct)∨data(3) 逻辑异或运算指令:XRL A, Rn ;(A)<-(A)⊙(Rn)XRL A, direct ; (A)<-(A)⊙(direct)XRL A, @Ri ; (A)<-(A)⊙((Ri))XRL A, #data ; (A)<-(A)⊙dataXRL direct, A ;(direct)<-(A)⊙(direct)XRL direct, #data; (direct)<-(direct)⊙data(4) 累加器清0和去反指令CLR A ;(A)<-0 (累加器清0指令)CLR A ;(A)<-(A) (累加器取反指令)(5) 累加器移位指令:不带进位Cy循环左移: RL A ;Dn+1<-Dn,D0<-D7D7D6D5D4D3D2D1D0不带进位Cy循环右移: RR A :Dn+1->Dn,D0<-D7D7D6D5D4D3D2D1D0带进位Cy循环左移: RLC A ;Cy<-D7,Dn+1<-Dn,D0<-CyD7D6D5D4D3D2D1D0带进位Cy循环右移: RRC A ;Cy->D7,Dn+1->Dn,D0->Cy(十二) 控制转移指令[1] 无条件转移指令:(1) 长转移指令LJMP addr16 ;(PC)<-addr16(2) 绝对转移指令AJMP addr11 ;(PC)<-(PC)+2,(PC)10~0<-addr11(3) 短转移指令SJMP rel ;(PC)<-(PC)+2+rel(4) 变址寻址转移指令JMP @A+DPTR ;(PC)<-(A)+(DPTR)[2] 条件转移指令:(1) 累加器判0转移指令:JZ rel ;如果(A)=0,跳转到目标语句,否则顺序执行JNZ rel ;如果(A)≠0,跳转到目标语句,否则顺序执行(2) 比较转移指令:CJNZ A, #data, rel ;如果(A)≠data,则跳转到目标语句,否则程序顺序执行CJNZ A direct, rel ; 如果(A)≠(direct),则跳转到目标语句,否则程序顺序执行CJNZ Rn #data, rel ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行CJNZ @Ri #data, rel ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行(3) 循环控制转移指令:DJNZ Rn, rel ;(Rn)先减1,如减1后(Rn)≠0,则跳转到目标语句;否则顺序执行DJNZ firect, rel ; (direct)先减1,如减1后(direct)≠0,则跳转到目标语句;否则顺序执行(十三) 子程序调用和返回指令(1) 绝对调用指令:ACALL addr11(2) 长调用指令:LCALL addr16(3) 返回指令:RET 子程序返回RETI 中断服务程序返回(十四) 空操作指令NOP 空操作指令是一条特殊指令,单片机在执行该指令时不进行任何操作,只是消耗1个机器周期的时间,所以该指令长用于延时程序.软件陷阱程序等(十五) 位操作类指令(1) 位传送指令:MOV C,bit ;(Cy)<-(bit),bit位的状态不变MOV bit,C ; (bit) <- (Cy),Cy位的状态不变(2) 位置位和复位指令:SETB C ;(Cy)<-1SETB bit ;(bit)<-1CLR C ;(Cy)<-0CLR bit ;(bit)<-0(3) 位运算指令:ANL C,bit ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给Cy ANL C,/bit ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给CyORL C,bit ;(Cy)<-(Cy)∨(bit),Cy位和bit位相或,结果赋给Cy ORL C,/bit ;(Cy)<-(Cy) ∨(bit),Cy位和bit位相或,结果赋给CyCPL C ; (Cy)<-(Cy),Cy位取反CPL bit ;(bit)<-(bit),bit位取反(4) 位测试转移指令:(1) 以Cy位状态为条件的转移指令JC rel ;如果Cy位=1,跳转到目标语句,否则顺序执行JNC rel ;如果Cy位=0,跳转到目标语句,否则顺序执行(2) 以指定位状态为条件的转移指令:JB bit, rel ;如果bit=1,跳转到目标语句,否则顺序执行JNB bit, rel ;如果bit=0,跳转到目标语句,否则顺序执行JBC bit, rel ;如果bit=1,跳转到目标语句,同时将bit位清0;否则顺序执行。
(完整版)51单片机汇编指令(全)

指令中常用符号说明Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1)Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址#data表示8位常数(立即数)#data16表示16位常数Add16表示16位地址Addr11表示11位地址Rel8位代符号的地址偏移量Bit表示位地址@间接寻址寄存器或基址寄存器的前缀( )表示括号中单元的内容(( ))表示间接寻址的内容指令系统数据传送指令(8个助记符)助记符中英文注释MOV Move 移动MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器AMOV A , Direct;(direct)→A,直接地址的内容送AMOV A ,@ Ri;(Ri)→A,RI间址的内容送AMOV A , #data;data→A,立即数送AMOV Rn , A;A→Rn,累加器A的内容送寄存器RnMOV Rn ,direct;(direct)→Rn,直接地址中的内容送RnMOV Rn , #data;data→Rn,立即数送RnMOV direct , A;A→(direct),累加器A中的内容送直接地址中MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址MOV direct , #data;8位立即数送到直接地址中MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中MOV @Ri , #data; data→@Ri ,8位立即数送到间址中MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令)(MOV类指令共16条)MOVC Move Cod 查表指令MOVC A , @A+PC;PC+1→PC,(A+PC)→AMOVC A , @A+DPTR;(A+DPTR) →A(MOVC类指令共两条)MOVX Move External 与外部数据寄存区传送数据MOVX A , @DPTR;(DPTR)→A,DPTR间址单元内容送AMOVX @DPTR , A;A→(DPTR),A中内容送入DPTR间址单元MOVX A , @Ri;(Ri)→A,Ri间址单元内容送AMOVX @Ri , A;A→(Ri),A中内容送Ri间址单元(MOVX类指令4条)XCH Exchange 交换指令XCH A , Rn;Rn←→A , Rn的内容与A的内容交换XCH A , Direct; Direct ←→A ,直接地址的内容与A的内容交换XCH A , @Ri;(Ri)←→A ,间址的内容与A的内容交换XCHD Exchange Decimal十进制交换XCHD A , @Ri;(Ri.3~Ri.0) ←→A.3~A.0,间址内容低四位与A中内容低四位交换SWAP Swap 交换SWAP A;A.3~A.0←→ A.7~A.4 , A中低四位与高四位内容交换PUSH Push 入栈PUSH direct;SP+1→SP , (direct)→(SP);直接地址内容压入堆栈顶POP Pop 出栈POP direct;(SP)→(direct) , SP-1→SP;堆栈内容弹出到直接地址●算术运算类指令(7个助记符)ADD Add 加法运算ADD A , Rn;A + Rn→A , A与Rn的内容相加,结果送到A中ADD A , direct;(direct)+A→A,A与直接地址的内容相加,结果送到A中ADD A , @Ri;((Ri))+A→A, A与间址中的内容相加,结果送到A中ADD A , #data;data+A→A,A与立即数相加,和送入AADDC ADD with Carry 带进位加法ADDC A , Rn;A + Rn+CY→A , A与Rn的内容、进位状态相加,结果送到A中ADDC A , direct;(direct)+A+CY→A,A与直接地址的内容、进位状态相加,结果送到A中ADDC A , @Ri;((Ri))+A+CY→A, A与间址中的内容、进位状态相加,结果送到A中ADDC A , #data;data+A+CY→A,A与立即数、进位状态相加,和送入ASUBB Subbtract with Borrow 带进位减法SUBB A , Rn;A-Rn-CY→A,A减寄存器Rn的内容及进位标志,结果送ASUBB A , direct; A-(direct)-CY→A,A直接地址的内容及进位标志,结果送ASUBB A , @Ri; A-((Ri))-CY→A,A间址的内容及进位标志,结果送ASUBB A , #data; A-data-CY→A,A立即数及进位标志,结果送AMUL Multiply 乘法指令MUL AB;A x B→B和A,结果16位,高8位存入B,低8位存入A;若结果大于FFH,则将溢出标志OV置1DIV Divide 除法指令DIV AB;A÷B 商→A,余数→B;若除数为0,结果不确定,则将溢出标志OV置1INC Increment 加1指令INC A;A+1→A,A加1,结果放在AINC Rn; Rn +1→ Rn, Rn加1,结果放在RnINC direct; (direct)+1→ direct,直接地址的内容加1,结果放在该地址中INC @Ri;((Ri))+1→( Ri),间址中的内容加1,结果放在该间址中INC DPTR;(DPTR)+1→DPTR,数据指针内容加1,结果放在数据指针寄存器(DPTR)中DEC Decrement 减1指令INC A;A-1→A,A减1,结果放在AINC Rn; Rn -1→ Rn, Rn减1,结果放在RnINC direct; (direct)-1→ direct,直接地址的内容减1,结果放在该地址中INC @Ri;((Ri))-1→( Ri),间址中的内容减1,结果放在该间址中DA Decimal Adjust 十进制加法调整指令DA A;在加法指令后,把A中二进制码自动调整为BCD码;DA A只能更跟在ADD或ADDC加法指令后,不适用于减法●逻辑运算指令(9个助记符)ANL Logical And 逻辑与运算ANL A , Rn; (A)与(Rn)→A, A的内容与Rn中的内容相与,结果放在A中ANL A , direct; (A)与(direct)→A, A的内容与直接地址中的内容相与,结果放在A中ANL A , @Ri; (A)与((Ri))→A, A的内容与间址的内容相与,结果放在A中ANL A , #data; (A)与(data)→A, A的内容与立即数相与,结果放在A中ANL direct , A; (direct)与(A)→direct, 直接地址中的内容相与A的内容相与,结果放在直接地址中ANL direct , #data;(direct)与#data→direct, 直接地址中的内容相与立即数相与,结果放在直接地址中ORL Logical OR 逻辑或运算ORL A , Rn; (A) 或(Rn)→A, A的内容与Rn中的内容相或,结果放在A中ORL A , direct; (A) 或(direct)→A, A的内容与直接地址中的内容相或,结果放在A中ORL A , @Ri; (A) 或((Ri))→A, A的内容与间址的内容相或,结果放在A中ORL A , #data; (A) 或(data)→A, A的内容与立即数相或,结果放在A中ORL direct , A; (direct) 或A)→direct, 直接地址中的内容相与A的内容相或,结果放在直接地址中ORL direct , #data;(direct) 或#data→direct, 直接地址中的内容相与立即数相或,结果放在直接地址中XRL Logical exclusive or 逻辑异或运算ORL A , Rn; (A) 异或(Rn)→A, A的内容与Rn中的内容相异或,结果放在A中ORL A , direct; (A) 异或(direct)→A, A的内容与直接地址中的内容相异或,结果放在A中ORL A , @Ri; (A) 异或((Ri))→A, A的内容与间址的内容相异或,结果放在A中ORL A , #data; (A) 异或(data)→A, A的内容与立即数相异或,结果放在A中ORL direct , A; (direct) 或A)→direct, 直接地址中的内容相与A的内容相异或,结果放在直接地址中ORL direct , #data;(direct) 异或#data→direct, 直接地址中的内容相与立即数相异或,结果放在直接地址RL Rotate Left 循环左移指令RL A;每执行一次,A中的内容左移一位RR Rotate Right 循环右移指令RR A;每执行一次,A中的内容右移一位RLC Rotate Left with the Carry flag 带进位循环左移指令RLC A;每执行一次,CY和A中的内容左移一位RRC Rotate Right with the Carry flag带进位循环又移指令RRC A;每执行一次,CY和A中的内容右移一位注意:循环移位指令只能对A中的内容进行移位操作CPL Complement 取反指令(求补指令)CPL A;累加器内容按位取反,0变1,1变0CLR Clear 清零指令CLR A;累加器清零(A各位全变为0)●控制转移指令(9个助记符)LJMP Long Jump 长跳转指令LJMP add16;add16→PC,无条件跳转到add16地址,可在64KB范围内转移AJMP Absolute Jump 绝对跳转指令AJMP add11;add11→PC,无条件跳转到add11地址,可在2KB范围内转移SJMP Short Jump 短跳转指令SJMP rel;PC+2+rel→PC,rel是偏移量,8位有符号数(-127~127),可向前后跳转±128个地址单元JMP Jump 跳转指令JMP @A+DPTR;A+DPTR→PC,属于散转指令,无条件转向A与DPTR内容相加后形成的新地址JZ Jump if acc is Zero累加器为零转移JZ rel;A=0转向PC+2+rel→PC,A≠0,顺序执行JNZ Jump if acc is Not Zero累加器不为零转移JNZ rel;A≠0转向PC+2+rel→PC,A=0,顺序执行CJNE Compare and Jump if Not Equal比较不相等则转移CJNE A , direct , rel;A≠(direct)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC);(A)>(direct)CY=0, (A)<(direct)CY=1CJNE A , #data , rel;A≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC);(A)>(data)CY=0,( A)<(data)CY=1CJNE Rn , #data , rel; Rn≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC); (Rn) >(data)CY=0, (Rn) <(data)CY=1CJNE @Ri , #data , rel;((Ri))≠(data)转向PC+3+rel→PC,否则顺序执行(PC+3 →PC); ((Ri))>(data)CY=0, ((Ri)) <(data)CY=1DJNE Decrement and Jump if Not Zero 减1不为0则转移DJNE Rn , rel;Rn-1→Rn, Rn≠0转向PC+2+rel→PC,否则顺序执行(PC+2→PC)DJNZ direct , rel;(direct-1)→direct, direct≠0转向PC+2+rel→PC,否则顺序执行(PC+2→PC)LCALL Long Call 长条用指令LCALL addr16;调用程序入口地址为addr16的之程序ACALL Absolute Call短调用ACALL addr11;调用程序入口地址为addr11的之程序RET ReturnRET;放在子程序最后,使程序准确返回到主程序断点处RETI Return from InterruptRETI;中断返回指令,能清楚优先级状态NOP No Operation 空操作指令NOP;空操作,产生一个机器周期延时●位操作指令MOV Move 数据传送指令MOV C , bit;(bit)→C,寻址位的状态送入CMOV bit , C;(C)→bit,C的转态送入地址中CLR Clear 清零指令CLR C;0→C,清零累加器CLR bit;清零直接寻址位CPL Complement 取反指令(求补指令)CPL C;c取反CPL bit;直接寻址位取反SETB Set Bit 置位SETB C;C置1SETB bit;直接寻址位置1ANL And Logical 与逻辑运算ANL C , bit;直接寻址位与C相与,结果放在CANL C , /bit; 直接寻址位与非C相与,结果放在CORL OR Logical 或逻辑运算ORL C , bit;直接寻址位与C相或,结果放在CORL C , /bit; 直接寻址位与非C相或,结果放在CJC Jump if Carry is set 进位位为1则转移JC rel;C=1,转向PC+2+rel→PC,否则顺序执行PC+2→PCJNC Jump if Carry is Not set 进位位为不为1则转移JNC rel;C=0,转向PC+2+rel→PC,否则顺序执行PC+2→PCJB Jump if Bit is set 进位位为1则转移JB bit , rel;(bit)=1,转向PC+3+rel→PC,否则顺序执行PC+3→PCJNB Jump if Bit is Not set 进位位为1则转移JNB bit , rel;(bit)=0,转向PC+3+rel→PC,否则顺序执行PC+3→PCJBC Jump if Bit is set and Clear bit指定位等于1转移并清该位JBC bit , rel; (bit)=1,转向PC+3+rel→PC,同时0→bit否则顺序执行PC+3→PC伪指令ORG Origin 代码起始地址指令ORG 0000HMOV A , #0010H;这条指令从0000H这个地址单元开始写起END End 汇编程序结束指令END;汇编指令结束DB字节定义伪指令ORG 1000HDB 01H , 02H;则(1000H)=01H,(1001H)=02HORG 1100HDB ‘01’;则(1100H)=30H,30H是0的ASCII码,(1101H)=31H,31H是1的ASCII码DW双字节定义伪指令ORG 2000HDW 2546H , 0178H; (2000H)=25H, (2001H)=46H, (2002H)=01H, (2003H)=78H,EQU数据赋值伪指令X EQU n;将n的值赋给xBIT位数据赋值伪指令y BIT b;y是用户定义标号,b为0或1MACRO宏指令宏指令名MACRO 形式参数······代码段······ENDM;宏指令定义结束寻址方式及相关的存储空间寻址方式寻址范围寄存器寻址R0~R7A 、B、C(CY)、AB(双字节)、DPTR(双字节)、PC(双字节)直接寻址内部RAM低128字节特殊功能寄存器内部RAM位寻区的128个位特殊功能寄存器中可寻址的位寄存器间接寻址内部数据存储器RAM【@R0,@R1,@SP(仅PUSH,POP)】内部数据存储器单元的低4位(@R0,@R1)外部RAM或I/O口(@R0,@R1,@DPTR)立即寻址程序存储器(常数)程序存储器(@A+PC,@A+DPTR)基寄存器加变址寄存器间接寻址。
51单片机汇编指令总结

51单片机汇编指令总结数据传输指令I片上RAM数据传输指令1.以累加器a为目的操作数的指令:mova,rnmova,directmova,@rimova,#data2.寄存器RN作为目标操作数的指令:movrn、amovrn、directmovrn、data3.以直接地址为目的操作数的指令:movdirect,amovdirect,rnmovdirect1,derect2movdirect,@rimovdirect,#data4.以间接地址作为目标操作数的指令:mov@ri , amov@ri , directmov@ri,#数据5。
16位数据传输指令:movdptr,#data16二.累加器a与片外ram数据传送指令:movxa,@rimovxa,@dptrmovx@ri,amovx@dptr,a三.查表寻址:movca,@a+dptr(先pc←(pc)+1,后a←((a)+(dptr)))+movca,@a+pc(先pc←(pc)+1,后a←((a)+(pc)))四.交换指令:1.字节交换指令:xcha,rnxcha,directxcha,@ri2.半字节交换指令:xchda、@ri3累加器半字节交换指令:SwapA v堆栈操作指令:1 Push(堆栈指令)2.pop(出栈指令)popdirect算术运算指令:一.加法减法指令:1.添加说明:adda,rnadda,directadda,@riadda,#data2.带进位加法指令:阿德卡,rna←(a) +(rn)+cyaddca,directa←(a) +(直接)+cyaddca,@ria←(a) +((ri))+cyaddca,#dataa←(a) +(数据)+cy3。
带借用的减法指令:subba,rna←(a)-cy-(rn)subba,directa←(a)-cy-(direct)subba,@ria←(a)-cy-((ri))subba,#dataa←(a)-cy-#data二.乘法除法指令:1.乘法指令:mulabba←(a)×(b)高字节放在b中,低字节放在a中2.除法指令:迪瓦巴商← (a)÷(b)和(b)中的其余三个← (a)÷(b)说明正负1:1.加1指令:印加←(a) +1增加←(rn)+1incdirectdirect←(direct)+1inc@ri(ri)←((ri))+1incdptrdptr←(dptr)+12.减1指令:decadecrndecdirectdec@ri四.十进制调制指令:DAA将累加器a的内容调整为BCD代码逻辑操作指令:I逻辑与或异或指令:1逻辑与指令:Anla,rnanla,directanla,@rianla,#data2.逻辑或这令:orla,rnorla,directorla,@riorla,#dataorldirect,aorldirect,#data3.逻辑异或指令:xrla,rnxrla,directxrla,@rixrla,#dataxrldirect,axrldirect,#data二.清零、取反指令:1.累加器a清零指令:crla2.累加器a取反指令:cplaIII循环移位指令:1累加器a循环左移指令:rla2累加器a循环右移指令:rra3累加器a和进位循环左移指令:rlca4累加器a和进位循环右移指令:RRCA控制传输指令:一.无条件转移指令:1.绝对传输指令:ajmpaddr11(先pc+2,然后将addr11的低十位传给pc,pc的高六位不变)2.长转移指令:ljmpaddr16(用addr16的值替换pc的值)3.相对转移(短转移)指令:Sjmprel(有符号偏移字节)(PC+2,加上分配给PC的rel)4间接传输指令:jmp@a+dptr(a)+(dptr)→(pc)II有条件转移指令:1.累加器判零转移指令:Jzrel first PC+2;判断后,a为0时进行转移,PC+rel分配给PC;否则命令执行Jnzrel先是PC+2,然后是评委。
C51单片机指令集大全

格式功能简述字节数周期一、数据传送类指令M O V A,R n寄存器送累加器1 1 M O V R n,A累加器送寄存器1 1 M O V A,@R i内部R A M单元送累加器1 1 M O V@R i,A累加器送内部R A M单元1 1 M O V A,#d a t a立即数送累加器2 1 M O V A,d i r e c t直接寻址单元送累加器2 1 M O V d i r e c t,A累加器送直接寻址单元2 1 M O V R n,#d a t a立即数送寄存器2 1 M O V d i r e c t,#d a t a立即数送直接寻址单元32 M O V@R i,#d a t a立即数送内部R A M单元21 M O V d i r e c t,R n寄存器送直接寻址单元2 2 M O V R n,d i r e c t直接寻址单元送寄存器2 2 M O V d i r e c t,@R i内部R A M单元送直接寻址单元22 M O V@R i,d i r e c t直接寻址单元送内部R A M单元22 M O V d i r e c t2,d i r e c t1直接寻址单元送直接寻址单元32M O V D P T R,#d a t a1616位立即数送数据指针32 M O V X A,@R i外部R A M单元送累加器(8位地址)12 M O V X@R i,A累加器送外部R A M单元(8位地址)12 M O V X A,@D P T R外部R A M单元送累加器(16位地址)12 M O V X@D P T R,A累加器送外部R A M单元(16位地址)12 M O V C A,@A+D P T R查表数据送累加器(D P T R为基址)12 M O V C A,@A+P C查表数据送累加器(P C为基址)12 X C H A,R n累加器与寄存器交换1 1 X C H A,@R i累加器与内部R A M单元交换1 1 X C H D A,d i r e c t累加器与直接寻址单元交换21 X C H D A,@R i累加器与内部R A M单元低4位交换11 S W A P A累加器高4位与低4位交换1 1 P O P d i r e c t栈顶弹出指令直接寻址单元2 2 P U S H d i r e c t直接寻址单元压入栈顶2 2二、算术运算类指令A D D A,R n累加器加寄存器1 1 A D D A,@R i累加器加内部R A M单元1 1A D D A,d i r e c t累加器加直接寻址单元2 1A D D A,#d a t a累加器加立即数2 1 A D D C A,R n累加器加寄存器和进位标志1 1 A D D C A,@R i累加器加内部R A M单元和进位标志11 A D D C A,#d a t a累加器加立即数和进位标志21 A D D C A,d i r e c t累加器加直接寻址单元和进位标志21I N C A累加器加11 1I N C R n寄存器加11 1I N C d i r e c t直接寻址单元加12 1I N C@R i内部R A M单元加11 1I N C D P T R数据指针加11 2D A A十进制调整1 1 S U B B A,R n累加器减寄存器和进位标志1 1 S U B B A,@R i累加器减内部R A M单元和进位标志11 S U B B A,#d a t a累加器减立即数和进位标志21 S U B B A,d i r e c t累加器减直接寻址单元和进位标志21D E C A累加器减11 1D E C R n寄存器减11 1D E C@R i内部R A M单元减11 1 D E C d i r e c t直接寻址单元减12 1M U L A B累加器乘寄存器B1 4D I V A B累加器除以寄存器B1 4三、逻辑运算类指令A N L A,R n累加器与寄存器1 1 A N L A,@R i累加器与内部R A M单元1 1 A N L A,#d a t a累加器与立即数2 1 A N L A,d i r e c t累加器与直接寻址单元2 1 A N L d i r e c t,A直接寻址单元与累加器2 1 A N L d i r e c t,#d a t a直接寻址单元与立即数31O R L A,R n累加器或寄存器1 1 O R L A,@R i累加器或内部R A M单元1 1 O R L A,#d a t a累加器或立即数2 1 O R L A,d i r e c t累加器或直接寻址单元2 1 O R L d i r e c t,A直接寻址单元或累加器2 1O R L d i r e c t,#d a t a直接寻址单元或立即数31 X R L A,R n累加器异或寄存器1 1 X R L A,@R i累加器异或内部R A M单元1 1 X R L A,#d a t a累加器异或立即数2 1 X R L A,d i r e c t累加器异或直接寻址单元2 1 X R L d i r e c t,A直接寻址单元异或累加器2 1 X R L d i r e c t,#d a t a直接寻址单元异或立即数32 R L A累加器左循环移位1 1 R L C A累加器连进位标志左循环移位1 1 R R A累加器右循环移位1 1 R R C A累加器连进位标志右循环移位1 1C P L A累加器取反1 1C L R A累加器清零1 1四、控制转移类指令类A C C A L L a d d r112K B范围内绝对调用2 2 A J M P a d d r112K B范围内绝对转移2 2 L C A L L a d d r162K B范围内长调用3 2L J M P a d d r162K B范围内长转移3 2 S J M P r e l相对短转移2 2 J M P@A+D P T R相对长转移1 2 R E T子程序返回1 2R E T1中断返回1 2 J Z r e l累加器为零转移2 2 J N Z r e l累加器非零转移2 2 C J N E A,#d a t a,r e l累加器与立即数不等转移32 C J N E A,d i r e c t,r e l累加器与直接寻址单元不等转移32 C J N E R n,#d a t a,r e l寄存器与立即数不等转移32C J N E@R i,#d a t a,r e l R A M单元与立即数不等转移32D J N Z R n,r e l寄存器减1不为零转移2 2 D J N Z d i r e c t,r e l直接寻址单元减1不为零转移32N O P空操作1 1五、布尔操作类指令M O V C,b i t直接寻址位送C2 1 M O V b i t,C C送直接寻址位2 1C L R C C清零1 1C L R b i t直接寻址位清零2 1C P L C C取反1 1C P L b i t直接寻址位取反2 1S E T B C C置位1 1 S E T B b i t直接寻址位置位2 1A N L C,b i t C逻辑与直接寻址位2 2A N L C,/b i t C逻辑与直接寻址位的反2 2O R L C,b i t C逻辑或直接寻址位2 2O R L C,/b i t C逻辑或直接寻址位的反2 2 J C r e l C为1转移2 2J N C r e l C为零转移2 2 J B b i t,r e l直接寻址位为1转移3 2J N B b i t,r e l直接寻址为0转移1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;2、按规定顺序依次熄灭(间隔1秒),最后全灭;3、八个灯同时点亮,保持1秒;4、八个灯同时熄灭,保持秒;再将第3、4步重复4遍,最后整个程序再重复N遍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SUBB SUBB MUL DIV INC INC INC INC INC DEC DEC DEC A
A,Rn A,@Ri AB AB
direct @Ri Rn DPTR A direct @Ri
DEC Rn DA A RL A RR A RLC A RRC A SWAP A CPL A CLR A ANL A,direct ANL direct,#data NL A,#data NL A,Rn ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL XRL XRL XRL direct,A A,@Ri A,direct direct,#data A,#data A,Rn direct,A A,@Ri A,direct direct,#data A,#data A,Rn data,A A,@Ri
MCS51汇编指令
指令格式(助记符)
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV A,direct A,#data A,Rn A,@Ri Rn,direct Rn,#data Rn,A direct,direct direct,#data direct,A direct,Rn
MOV direct,@Ri MOV @Ri,direct
பைடு நூலகம்
MOV @Ri,#data MOV @Ri,A MOVC A,@A+DPTR MOVC A,@A+PC MOVX @DPTR,A MOVX A, @DPTR MOVX A, @Ri MOVX @Ri,A PUSH PUSH POP direct A direct
直接地址单元中的数据和累加器A 的数据执行逻辑异或操作. 结果存在直接 2 地址单元中 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行逻辑异或操 1 作.结果存在累加器A中
CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ANL A,#data ORL C,bit ORL C,/bit ORL A,#data MOV C,bit MOV bit,C JC rel JNC rel JB bit rel JNB bit rel JBC bit rel ACALL addr11 LCALL addr16 RET RET1 AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel NOP
指令功能说明
(direct)→(A) 直接单元地址中的数据→累加器A #data→(A) 8位立即数→累加器A (Rn )→(A) Rn寄存器中的数据→累加器A ((Ri))→(A) Ri中的数据指向的地址单元中的数据 →累加器A (direct)→(Rn) 直接寻址单元中的数据 —> 寄存器Rn #data→(Rn) 8位立即数 —> 寄存器Rn (A)→(Rn) 累加器A中的数据 —> 寄存器Rn (direct)→(direct)直接地址单元数据→直接地址单元direct #data→(direct) 立即数→直接地址单元direct (A)→(direct) 累加器A中的数据→直接地址单元direct (Rn)→(direct) 寄存器Rn中的数据→直接地址单元direct ((Ri))→(direct) 寄存器Ri中的数据指定的地址单元中数据→直接地址单 元direct (direct)→((Ri))直接地址单元中的数据→以Ri中的内容为地址的RAM单元 #data→((Ri)) 立即数→以Ri中的内容为地址的RAM单元 (A)→((Ri))累加器A中的数据→以Ri中的内容为地址的RAM单元 ((A))+(DPTR)→(A) 表格地址单元中的数据→累加器A ((PC))+1→(A),((A))+(PC)→(A)表格地址单元的数据→累加器A (A)→((DPTR))累加器中的数据→数据指针指向片外RAM地址中 (A)→((DPTR))累加器中的数据 → 数据指针指向片外RAM地址中 ((Ri))→(A) 寄存器Ri指向片外RAM地址中的数据→累加器A中 (A)→((Ri)) 累加器中的数据→寄存器Ri指向片外RAM地址中 (SP)+1 → (SP),(direct) → (SP) 堆栈指针首先加 1, 直接寻址单元中的数据 送到堆栈指针SP所指的单元中 将累加器A中的数据→堆栈顶端 (SP) → (direct)(SP)-1 → (SP), 堆栈指针 SP 所指的单元数据送到直接寻址 单元中,堆栈指针SP再进行减1操作 将堆栈顶端的数据→累加器A (A)←→(Rn)累加器与工作寄存器Rn中的数据互换 (A)←→((Ri))累加器与工作寄存器Ri所指存储单元中的数据互换 (A)←→(direct)累加器与直接地址单元中的内容互换 (A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的数据低半 字节互换 (A3-0)←→(A7-4)累加器中的内容高低半字节互换 #dataH→(DPH),#dataL→(DPL)16位常数高8位送DPH,低8位送DPL (A)+#data→(A)累加器A中的数据与立即数#data相加,结果存在A A)+(direct)→(A) 累加器A中的数据与直接地址单元中的数据相加,结果存 在A中 (A)+(Rn)→(A) 累加器A中的数据与工作寄存器Rn中的数据相加,结果存在A 中 (A)+((Ri))→(A) 累加器A中的数据与工作寄存器Ri所指向地址单元中的数 据相加,结果存在A中 (A)+(direct)+(C)→(A) 累加器A中的数据与直接地址单元的数据连同进位 位相加,结果存在A中 (A)+#data +(C) → (A) 累加器 A 中的数据与立即数连同进位位相加 , 结果存 在A中 A)+Rn+(C) → (A) 累加器 A 中的数据与工作寄存器Rn 中的数据、连同进位位 相加,结果存在A中 (A)+((Ri))+(C)→(A) 累加器A中的数据与工作寄存器Ri 指向地址单元中的 数据、连同进位位相加,结果存在A中 (A)-(direct)-(C)→(A) 累加器A中的数据与直接地址单元中的数据、连 同借位位相减,结果存在A中 (A)-(Rn)-(C)→(A) 累加器A中的数据与工作寄存器中的数据、连同借位 位相减,结果存在A中
清除进位标志CY为0 清除bit为0 设定进位标志CY为1 设定bit为1 将进位标志CY反相 将bit反相 将进位标志CY AND bit值赋给进位标志位CY 将进位标志CY AND bit反相值赋给进位标志位CY 将累加器A的各位与立即数的相对位置做AND赋给A累加器 将进位标志CY OR bit值赋给进位标志位CY 将进位标志CY OR bit反相值赋给进位标志位CY 将累加器A的各位与立即数的相对位置做OR赋给A累加器 将bit值赋给进位标志位CY 将进位标志位CY赋给bit值 当进位标志位CY=1就跳至rel,否则执行下一条指令 当进位标志位CY=0就跳至rel,否则执行下一条指令 当进bit=1就跳至rel,否则执行下一条指令 当进bit=0就跳至rel,否则执行下一条指令 当进bit=1跳至rel,并且清除此bit为0,否则执行下一条指令 2K范围内子程序调用 64K范围内子程序调用 子程序返回 中断服务程序结束返回 2K范围内无条件跳转 64K范围内无条件跳转 在此指令的前128或后128范围内无条件跳转 跳至@A+DPTR所指定的地址 如A的内容为0,则短跳转,负责执行下一条指令 如A的内容不为0,则短跳转,负责执行下一条指令 如A的内容与直接地址内的数据不同,则短跳转 如A的内容与立即数不同,则短跳转 如Rn寄存器中的数据与立即数不同,则短跳转 如间接地址的数据与立即数不同,则短跳转 Rn寄存器中的数据减1,若不为0,则短跳转,否则执行下条指令 直接地址中的数据减1,若不为0,则短跳转,负责执行下条指令 CPU仅仅作取指令,不动作
(A)-(Rn)-(C)→(A) 累加器A中的数据与工作寄存器中的数据、连同借位 位相减,结果存在A中 (A)-((Ri))-(C)→(A) 累加器A中的数据与工作寄存器Ri指向的地址单元 中的数据、连同借位位相减,结果存在A中 (A) ×(B) →(A) 和(B) 累加器A 中的数据乘以寄存器B 中的数据 , 结果高字节 存入寄存器B,底字节存入累加器A (A) ÷(B) →(A) 和(B) 累加器A 中的数据除以寄存器B 中的数据 , 结果的商存 入累加器A,余数存入寄存器B中 累加器A中的数据加1,结果存在A中 (direct)+1 → (direct) 直接地址单元中的数据加 1, 结果送回原地址单元 中 , 如果直接地址是 I/O, 其功能是先读入 I/O 锁存器的内容, 然后在CPU 进行 加1操作,再输出到I/O上,这就是“读—修改—写”操作 ((Ri))+1→((Ri)) 寄存器的数据指向的地址单元中的数据加1,结果送回原 地址单元中 (Rn)+1→(Rn)寄存器Rn的数据加1,结果送回原地址单元 (DPTR)+1→(DPTR)数据指针的数据加1,结果送回数据指针中 (A)-1→(A)累加器A中的数据减1,结果送回累加器A (direct)-1 → (direct) 直接地址单元中的数据减 1, 结果送回直接地址单元 中 ((Ri))-1 → ((Ri)) 寄存器 Ri 指向的地址单元中的数据减 1, 结果送回原地址 单元中 (Rn)-1→(Rn)寄存器Rn中的数据减1,结果送回寄存器Rn中 累加器A中的数据做BCD调整 累加器A中的数据左移一位 累加器A中的数据右移一位 累加器A中的数据连同进位标志位CY左移一位 累加器A中的数据连同进位CY位CY右移一位 累加器中的数据高低半字节互换 累加器中的数据按位取反 累加器中的数据清0H 累加器A的数据和直接地址单元的数据执行与操作.结果存在寄存器A 直接地址单元的数据和立即数执行与操作.结果存在直接地址单元 累加器A的数据和立即数执行与操作.结果存在累加器A中 累加器A的数据和寄存器Rn中的数据执行与操作.结果存在累加器A 直接地址单元中的数据和累加器A 的数据执行与操作 . 结果存在直接地址单 元中 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行与操作. 结果 存在累加器A中 累加器 A 中的数据和直接地址单元中的数据执行逻辑或操作. 结果存在寄存 器A中 累加器 A 中的数据和直接地址单元中的数据执行逻辑或操作. 结果存在寄存 器A中 累加器A的数据和立即数执行逻辑或操作.结果存在累加器 累加器A的数据和寄存器Rn中的数据执行逻辑或操作.结果存在累加器A中 直接地址单元中的数据和累加器A 的数据执行逻辑或操作 . 结果存在直接地 址单元中 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行逻辑或操作. 结果存在累加器A中 累加器 A 中的数据和直接地址单元中的数据执行逻辑异或操作 . 结果存在寄 存器A中 直接地址单元中的数据和立即数执行逻辑异或操作. 结果存在直接地址单元 中 累加器A的数据和立即数执行逻辑异或操作.结果存在累加器A中 累加器A的数据和寄存器Rn中的数据执行逻辑异或操作.结果存在累加器A中