89C51汇编指令集

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

寻址方式表2-1寻址方式定义例子使用范围备注寄存器寻址直接用寄存器名称作为操作数进行寻址MOVA,R0MOVP1,A就是A到P1口ADDA,R0当前工作寄存器组R0~R7ABCDPTR直接寻址操作数为片内RAM单元的地址MOVA,3AHMOVA,P1MOVA,90H包括32个工作寄存器组在内片内RAM低128字节SFRSFR(只能用直接寻址)立即数寻址直接一字节或两字节的数,用#来标明如:MOVDPTR,#DATA16MOVDPTR,#2000HMOVR0,#31HROM寄存器间接寻址用给出寄存器内的内容作为地址所指向的寄存器中内容为操作数,用@表明MOVA,@R0MOVA,@DPTRR0或R1可以间接寻址片内RAM低128字节地址和片外RAM的低128字节地址。SP(仅是PUSH和POP)间接寻址64KB片外RAM。不可以SFR片外RAM可以利用R0,R1,DPTR变址寻址以PC或DPTR中的内容作为基地址,以A中内容作为地址偏移量两者相加得到操作数地址MOVCA,@A+DPTR只能访问ROM范围为64KB只能读取不能写入多用于查表相对寻址以PC的值为源地址与给出的偏移量rel相加得到目的地址JCrel如果CY=1,(PC)+2+relSJMP55HROM256字节范围内rel范围是-128~127正向:rel=目的地址-源地址-2反向:rel=(目的地址-(源地址+2))的补码=FEH-|地址差|寻址方式表2-2寻址方式定义例子使用范围备注位寻址对某一位寻址bitCLRbit片内RAM中20H~2FH共128位字节地址可以被8整除的SFR可以直接用位地址也可以用寄存器名字加位数表如PSW.389C51指令系统可分为5大类:数据传送指令(28条);算术运算指令(24条);逻辑运算及移位指令(25条);控制转移指令(17条);位操作指令或布尔操作(17条)。传送指令2-1类型助记符用途格式例子备注数据传送移动MOV目的地址为累加器A4个MOVA,RnMOVA,directMOVA,@RiMOVA,#data只影响PSW的P标志位目的地址为寄存器Rn3个MOVRn,AMOVRn,directMOVRn,#dataMOVR5,AMOVR5,70HMOVR5,#A3H没有MOVRn,Rn目的地址为直接地址5个MOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,@RiMOVdirect,#dataMOVdirect,direct前为源地址后为目的地址目的地址为间接地址3个MOV@Ri,AMOV@Ri,directMOV@Ri,#data图1-116位立即数1个MOVDPTR,#data16MOVDPTR,#1234HdataH到DPHdataL到DPL唯一的16位立即数传送MOVC查找表2个MOVCA,@A+DPTRMOVCA,@A+PC(PC)+1到PC后,((A)+(PC))到A图1-2传送指令2-2类型助记符用途格式例子备注数据传送MOVX累加器A与片外RAM之间传送4个MOVXA,@RiMOVXA,@DPTRMOVX@Ri,AMOVX@DPTR,A前两个使/RD=0后两个使/WR=0@Ri寻址片外RAM0~255字节@DPTR寻址片外RAM0~64KB栈指令PUSH入栈1个PUSHdirect(SP)+1→(SP)(direct)→(SP)栈指令POP出栈1个POPdirect((SP))→direct(SP)-1→(SP)先进后出交换指令XCH字节交换3个XCHA,RnXCHA,directXCHA,@Ri交换指令XCHD半字节交换1个XCHDA,@Ri低位互换,高位不变图1-1间接寻址图1-2查找表算术运算指令2-1类型助记符用途格式例子备注算术运算指令ADD8位无符号二进制数和累加器A中的数相加不加进位4条ADDA,RnADDA,directADDA,@RiADDA,#data结果存于A中第3位进位AC置1否则为0第7位进位CY置1,否则为0同时影响溢出OV和奇偶P标志位OV=7位和6位异或ADDC同上不同的是结果加进位CY4条ADDCA,RnADDCA,directADDCA,@RiADDCA,#data影响标志位AC,CY,OV,PSUBB带借位CY的减法4条SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#data(A)-CY-XX→(A)该位表示在进行有符号数的加减法时是否发生溢出;当0V=1时,表示有符号数运算结果发生了溢出,OV=0时,表示有符号数运算结果没有溢出。第7位如果产生借位,会使CY置1,否则为0当第一位相减时,首先将CY清零MULA与B中的两个8位无符号数相乘,结果为16位,低字节在A,高字节在B1条MULAB结果大于0FFH,OV置1算术运算指令2-2类型助记符用途格式例子备注算术运算指令DIVA与B中的两个8位无符号数相除,商在A,余数在B1条DIVABCY和OV清零如果B中结果为00H,OV置1INC内容加15条INCAINCRnINCdirectINC@RiINCDPTR不影响PSW,即使溢出也不影响注意与ADD的区别DEC内容减14条DECADECRnDECdirectDEC@Ri同INC相同注意没有DPTRDAADD或ADDC后,压缩BCD数相加结果的调整,再存于A1条DAA(A)=0101011B(56BCD数)(R3)=01100111B(67BCD数)ADDCA,R3得到10111110B(0BEH)CY=1DAA高低4位都大于9,所以加66H来调整结果为124低4位大于9或第三位产生进位即AC=1,则低四位加6H高4位大于9或CY=1,则高四位加6H也就是说,判断高低4位是否大于9、AC=1和CY=1对结果加06H,60H或66H对CY有影响对OV无影响不能直接用于十六进制数转换成BCD数,也不能直接用于减法,减法可先换成补码,相加后进行调整逻辑操作指令1-1类型助记符用途格式例子备注逻辑操作指令CLR清零A1条CLRACPL取反A全部内容1条CPLA不影响标志位RL循环左移A一位1条RLARR循环右移A一位1条RRARLC带进位循环左移A一位1条RLCA用于累加器A中内容*2RRC带进位循环右移A一位1条RRCASWAPA中的高低4位内容互换1条SWAPA(A)=FAHSWAPA(A)=AFHANL逻辑与6条ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data后两条是直接地址操作如果是I/O端口,则可以是“读-修改-写”操作ORL逻辑或ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data后两条是直接地址操作如果是I/O端口,则可以是“读-修改-写”操作XRL逻辑异或XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data后两条是直接地址操作如果是I/O端口,则可以是“读-修改-写”操作注:都置影响P标志位图1-3逻辑操作跳转指令3-1类型助记符用途格式过程备注无条件转移指令AJMP短转移指令AJMPaddr11(PC)+2→PC,addr11→PC10~0,(PC15~11)不变2KB范围LJMP长转移指令LJMPaddr16addr16→PC64KB程序存储器的任何单元由于需要三个字节,占用多SJMP相对转移(短转移)指令SJMPrelSJMP目的地址标号(PC)+2→PC,(PC)+rel→PCrel是带符号的8位偏移字节00H~7FH对应0~127正向转移80H~FFH对应-128~-1反向转移特别注意:rel=FEH时也就是-2,目的地址=PC+2-2=PC,会造成无限循环JMP间接转移指令JMP@A+DPTR(A)+(DPTR)→PC对DPTR,A和标志位无影响可散转散转程序是分支程序的一种,可实现多分支转移。根据某种输入或运算的结果,分别转向各个处理程序段取指令空操作指令NOP单字节指令,只是让PC+1,多用于产生机器周期延迟NOP跳转指令3-2类型助记符用途格式过程备注有条件转移JZA中内容全为0进行偏移跳转JZrelrel为带符号8位数-128~127共256字节也可以是目标符号代替JNZA中内容不全为0进行跳转JNZrelrel为带符号8位数-128~127共256字节也可以是目标符号代替CJNE比较转移指令CJNEA,direct,rel(PC)+3→PC(direct)(A),(PC)+rel→(PC)且0→CY首先PC内容加1如果后面的比前面的小按偏移量跳转,CY置1如果后面的比前面的大按偏移量跳转,CY置0如果后面的等于前面的不跳转,按顺序执行CY置0rel是+127~-128字节地址示意如图1-4(PC)+3→PC(direct)(A),(PC)+rel→(PC)且1→CY(PC)+3→PC(direct)=(A),(PC)+rel→(PC)且0→CYCJNEA,#data,rel(PC)+3→PC#data(A),(PC)+rel→(PC)且0→CY(PC)+3→PC#data(A),(PC)+rel→(PC)且1→CY(PC)+3→PC#data=(A),(PC)+rel→(PC)且0→CY跳转指令3-3类型助记符用途格式过程备注有条件转移CJNE比较转移指令CJNERn,#data,rel(PC)+3→PC#data(Rn),(PC)+rel→(PC)且0→CY首先PC内容加3如果后面的比前面的小按偏移量跳转,CY置1如果后面的比前面的大按偏移量跳转,CY置0如果后面的等于前面的不跳转,按顺序执行CY置0rel是+127~-128字节地址示意如图1-4(PC)+3→PC#data(Rn),(PC)+rel→(PC)且1→CY(PC)+3→PC#data=(Rn),(PC)+rel→(PC)且0→CYCJNE@Ri,#data,rel(PC)+3→PC#data((Ri)),(PC)+rel→(PC)且0→CY(PC)+3→PC#data((Ri)),(PC)+rel→(PC)且1→CY(PC)+3→PC#data=((Ri)),(PC)+rel→(PC)且0→CYDJNZ循环转移指令DJNZRn,rel(PC)+2→PC(Rn)-1→Rn如果(Rn)≠0则(PC)+rel→PC如果(Rn)=0结束循环,程序往下执行图1-5DJNZdirect,rel(PC)+2→PC(direct)-1→direct如果(direct)≠0则(PC)+rel→PC如果(direct)=0结束循环,程序往下执行图1-4比较转移图1-5循环转移条用指令1-1类型助记符用途格式过程备注调用返回指令ACALL在2KB地址空间内调用ACALLaddr11(PC)+2→PC(SP)+1→SP(PC0~7)→(SP)(SP)+1→SP(PC15~8)→(SP)addr10~0→PC10~0(PC15~11)不变LCALL在64KB的程序存储器范围内调用LCALLaddr16(PC)+3→PC(SP)+1→SP(PC0~7)→(SP)(SP)+1→SP(PC15~8)→(SP)Addr15~0→PC15~0RET子程序返回到主程序RET((SP))→PC15~8(SP)-1→SP((SP))→PC7~0(SP)-1→SPRETI中断返回指令RETI同上返回的同时开放中断逻辑图1-6调用返回指令示意图位操作指令2-1类型助记符用途格式过程备注位数据传送指令MOV传送MOVC,bitMOVbit,Cbit若为00H~7FH是片内RAM(20H~2FH单元)的128位地址若为80H~FFH则在11个SFR中也可以是I/O口,共32个P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7本操作必须有一方是C位修正指令CLR位清零CLRCCLRbitS

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功