1、第五章指令系统n重点掌握n寻址方式n指令分类第一节概述n机器语言n汇编语言格式:标号段:操作码段,操作数;注释段指令系统常用符号含义:P95指令分类n数据传送类:28条n算术运算类:24条n逻辑运算类:25条n控制转移类:17条n位操作类: 17条第二节 寻址方式n七种寻址方式n寄存器寻址n直接寻址n立即寻址n寄存器间接寻址n变址寻址n相对寻址n位寻址1立即寻址n指令码中直接含有所需地址的操作数nMOV A,#30HnMOV DPTR,#3000Hn注意:#是唯一区别与地址的标志。2直接寻址n指令码中含有操作数的地址,机器根据地址找到操作数nMOV A,30Hn注意:若直接寻址的地址是SFR中
2、的某一个时,可用名称符号nMOV A,TH0nMOV A,8CH3寄存器寻址n所需的操作数在某个工作寄存器中(R0R7)nINC R0n注意:指令表中INC Rn,n取074寄存器间接寻址n指令码中含有操作数地址的寄存器号。实际上是二次寻址n间接寻址采用Ri或DPTR,是区别寄存器寻址的标记n若(RO)=30H,(30H)=0FFHnMOV A , R0nMOV A , R0n寄存器寻址可使单片机寻址扩大到64K5相对寻址n指令码中含有相对地址的偏移量nMOV A,40H nADD A,#30HnSJMP SOUT ;PC=PC+2+reln。 ;n。n。nSOUT:MOV 50H,A6变址寻
3、址n基地址寄存器和偏移量nMOVC A, A+PCnMOVC A, A+DPTRn注意:变址寻址区是程序存储器而不是数据存储器。n执行前,应预先在DPTR和A中存放地址,为指令执行提供条件。7位寻址n指令中含有位地址n位地址和字节地址的区分通过指令区分:nMOV A,20HnMOV C,20Hn可供位寻址的区域n片内RAM的20H2FH为位寻址空间(007FH)n某些SFR:凡是地址能被8整除的SFR,共11个。n位地址的表示方法nMOV C,ACC.7nMOV 20H,C nMOV 24H.0,C第三节 指令系统nMCS-51汇编语言是用42种操作码助记符描述33种操作功能,一种功能可能有几
4、种助记符,与寻址方式结合共产生111条指令。n数据传送类:28条n算术运算类:24条n逻辑运算类:25条n控制转移类:17条n位操作类: 17条1数据传送类28条n传送数据可在ACC,R0R7,内部RAM,外部RAM间进行,其中A, R0R7的操作最多n传送类指令不影响PSW(除P位)已知(70H)=60H,(60H)=20HnMOV R0,#70HnMOV A,R0nMOV R1,AnMOV 40H,R1nMOV R0,P1查表指令举例1ORG 8000HMOV A ,#40HMOVC A,A+PC;A=?ORG 8040HDB 41H 42H 43H 44H 查表指令举例2ORG 8000
5、HMOV A ,#03HMOV DPTR,#8040HMOVC A,A+DPTR;A=?ORG 8040HDB 41H 42H 43H 44H 数据传送类指令小结内部RAM的数据传送方式ROM与ACC的数据传送2算术操作类24条n加、减、乘、除、增1、减1n影响PSW中的CY、AC、OV、Pn不带进位加法4n带进位加法4n带借位减法4n加1指令5n减1指令4n十进制调整指令1n乘除法指令2加、减法指令(ADD ADDC SUBB INC DEC)n无符号数和有符号数由用户自己决定n均以ACC作为目的操作数n带符号数运算时,必须检查溢出位OVn若进行不带进位的减法时,用CLR C,将进位位清零即
6、可。nDA A为十进制调整指令,紧跟加法指令BCD码减法 n求BCD码减数的补数:9AH-减数n被减数加补数n结果用十进制加法调整指令n例:91-36=?nCLR CnMOV A,#9AHnSUBB A,#36HnADD A,91HnDA A乘除法指令n只能进行无符号的乘除法n虽影响0V,但意义不同nMUL AB;BA,OV=1表示B0nDIV AB;AB, 0V=1,B=0,除法无意义举例nMOV A,#5AHnADD A,#6B Hn01011010n01101011(+n-n11000101nCY = AC= OV= 3逻辑运算类24条n读-修改-写指令n对数据进行逻辑处理n模拟各种硬件
7、电路的逻辑功能n逻辑与ANLn逻辑或ORLn逻辑异或XRLn逻辑移位 RR RRC RL RLCn累加器清零与取反CLR CPL带进位移位和不带进位移位n例M1和M1+1单元存有16位二进制数,试编程将其扩大二倍程序nCLR CnMOV R1,#M1nMOV A,R1nRLC AnMOV R1,AnINC R1nMOV A,R1nRLC AnMOV R1,A4控制转移指令17条n无条件转移n绝对转移LJMP 、AJMPn短转移SJMPn间接转移JMP A+DPTRn有条件转移JZ 、CJNE、 DJNZn子程序调用与返回ACALL、 LCALL、RETn中断返回RETIn空操作NOP举例n M
8、OV R2,#0AHn MOV R0,#40Hn CLR ALOOP:ADD A,R0n INC R0n DJNZ R2,LOOPn MOV SUM,A5位操作指令17条n位传送nMOV BIT,BIT (错误)n位逻辑操作n与ANL、或ORL、取反CPLn位条件转移nJC、JNC、JB、JNB、JBCn位置位,清零(SETB、CLR)举例n例 1 将内部数据存储器的60H、61H单元中的连续存放着4位BCD码。试编写一段程序将这4位BCD码倒序排列 程序nMOV R0,#60HnMOV R1,#61HnMOV A,R0nSWAP AnXCH A,R1nSWAP AnMOV R1,A例2n已知
9、外部RAM的3000H开始放一数据区,缓冲区中以回车符0DH结束,编程将正数送入片内RAM以30H开始的正数区,将负数放入以40H开始的负数区程序法一nMOV R0,#30HnMOV R1,#40HnMOV DPTR,#3000HnNEXT:MOVX A, DPTRnMOV 10H,AnCJNE A,#0DH,END1nSJMP OVERnEND1:ANL A,#10000000BnJZ ZHnSJMP NEGnZH: MOV R0,10HnINC R0nINC DPTRnSJMP NEXTnNEG:MOV R1,10HnINC R1nINC DPTRnSJMP NEXTnOVER:RET法二nMOV R0,#30HnMOV R1,#40HnMOV DPTR,#3000HnNEXT:MOVX A, DPTRnCJNE A,#0DH,COMPnSJMP OVERnCOMP:JB ACC.7,LOOPnMOV R0,#30HnMOV R0,AnINC R0nINC DPTRnSJMP NEXTnLOOP:MOV R1,AnINC R1nINC DPTRnSJMP NEXTnOVER:RET
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。